Jump to content
43oh

LiviuM

Members
  • Content Count

    91
  • Joined

  • Last visited

  • Days Won

    13

Reputation Activity

  1. Like
    LiviuM got a reaction from hemangjoshi37a in [Energia Library] Petit FatFS SD Card Library   
    MISO should be connected with MISO, MOSI with MOSI, not crossed.
    MISO means Master In Slave Out, and MOSI means Master Out Slave In. Master & slave are always the same, no crossing is needed.
  2. Like
    LiviuM reacted to terjeio in I2C interface for 4x4 keyboard   
    I2C interface for 4x4 keyboard with partial support for 2-key rollover and autorepeat. Based on a Texas Instruments MSP430G2553 processor, uses a GPIO pin for signalling keypress events to host. Example PCB is a KiCad project for the 20-pin DIP version MSP430G2553.
    https://github.com/terjeio/I2C-interface-for-4x4-keyboard
    I am using this to test jogging in my GRBL-port embedded in the CO2-laser controller firmware (for Tiva C) I am working on. I have left some code (#defined out) to show how 2-key rollover and autorepeat can be enabled for some keys. The hardware abstracted ARM GRBL-port and an example driver for the Tiva C LauncPad is also available on GitHub.
  3. Like
    LiviuM got a reaction from hemangjoshi37a in What is your Backup Process?   
    Hi,
    for the projects I need to access from multiple places (and needing some privacy) I've configured a small git server and put gogit/gogs *) on top of it.
    Because the core is git, I can use it from command line and gogit gives me the possibility to use it in a way similar to github and (the reason I use it) allows me to define "virtual users" - I can allow other people to access the private repositories without sharing my (main) credentials.
    I have luck with a good hosting offering all needed tools.
    Cheers,
    Liviu
    *) I suppose any "interface" will do the same, I've used gogs because I found a tutorial (in German) about the installation on my server.
  4. Like
    LiviuM reacted to bluehash in BeagleBone Blue robotics controller board   
    There is a new BeagleBone out in the field. This one is the "Blue", following the "Black" and "Green" ones.
    Expected retail price is $80. 
    Feature list:
    Processor: Octavo Systems OSD3358 1GHz ARM® Cortex-A8
    • 512MB DDR3 RAM
    • 4GB 8-bit on-board flash storage
    • 2×32-bit 200-MHz programmable real-time units (PRUs)
    • On-board flash programmed with Linux distribution
    Connectivity and sensors
    • Battery: 2-cell LiPo support with balancing, 6-16V charger input
    • Wireless: 802.11bgn, Bluetooth 4.1 and BLE
    • Motor control: 8 6V servo out, 4 DC motor out, 4 quad enc in
    • Sensors: 9 axis IMU, barometer
    • Connectivity: HighSpeed USB 2.0 client and host
    • Other easy connect interfaces: GPS, DSM2 radio, UARTs, SPI, I2C, analog, buttons, LEDs
    Software Compatibility
    • Debian, ROS, Ardupilot,
    • Graphical programming, Cloud9 IDE on Node.js


     
     
  5. Like
    LiviuM reacted to Rickta59 in Hello from Bangalore   
    In the US April 1 is a good day to be ignored.
  6. Like
    LiviuM got a reaction from hemangjoshi37a in I2C - MSP430 to MSP430 problems   
    Hi @@brelliott18,
     
    There are some known problems with i2c on 2553 Launchpads, mentioned in various posts over this forum.
    One of them is mentioned in http://forum.43oh.com/topic/2641-i2c-lcd/page-2#entry75927; in this post is also a link to a solution http://e2e.ti.com/support/development_tools/code_composer_studio/f/81/p/529036/1924562#1924562
     
    Have you already seen this posts? Have you tried the solutions presented in them?
     
    Regards,
    Liviu
  7. Like
    LiviuM reacted to Rickta59 in Energia vs CCS vs LearningCurve vs Ability to control things...   
    How are you combining the data? Strings (that uses heap RAM and is subject to fragmentation)? A large static buffer (that will reduce total RAM)?  You are using an msp430g2553 yes?  It only has 512bytes of RAM. People don't often notice that an Arduino chip has 2k of RAM and assume anything that fits on an arduino will run on an msp430g2553. If I had only one shot at a wild guess, I'd say you are running out of ram in either the stack or heap.  Blowing out RAM is very easy to do. Energia exacerbates memory and flash usage problems.
     
    -rick
  8. Like
    LiviuM reacted to NurseBob in MSP430F5529 + Energia SERIAL PROBLEM   
    @@fredakos,
    >any ideas?<
    Millions. 
     
    Please post the code, or a relevant code snippet.  There's no way to help with the information you've supplied.
     
    Bob
  9. Like
    LiviuM got a reaction from energia in Frequency counting empty serial monitor   
    LE Found it, the pins default to inputs:
  10. Like
    LiviuM got a reaction from speed07 in Frequency counting empty serial monitor   
    Where are you defining the input (counter) pin?
  11. Like
    LiviuM got a reaction from m0nk37 in MSP430G2553 and 3-wire SPI RGB LED timing help   
    Hi,
    have you seen the @@Fmilburn's topic about controlling WS2812B LEDs using MSP430G2553 LP and SPI?
  12. Like
    LiviuM got a reaction from m0nk37 in MSP430G2553 and 3-wire SPI RGB LED timing help   
    I've used some (4) WS2812B powered at 3.3 V and they worked OK. Never used TM1809, though.
  13. Like
    LiviuM reacted to chicken in Implementing a simple Menu   
    PS: If you want to get fancy/generic, you could implement the state/menu system with a structure. Something along these lines:
    struct {   int menu_id, // continuous but not functional, helps to keep track of the menu id's   int next_menu, // entry when pressing next   void (*action) (void),  // action when pressing select   const char* label  // displayed text } menu_t; int current_menu = 0; void do_select0(void) {   current_menu = 2; // set to sub menu } void do_ select1(void) {   // do main action 1 } void do_subaction1(void) {   // do sub action 1 } void do_subaction2(void) {   // do sub action 2 } void do_gotop(void) {   current_menu = 0; // set to top menu } menu_t menu[] = {   // Top level     { 0, 1,"Sub Menu", do_select0 },     { 1, 0, "Action", do_select1 },   // Sub menu     { 2, 3, "Sub action 1", do_subaction1 },     { 3, 4, "Sub action 2", do_subaction2 },     { 4, 2, "Up", do_gotop } }; and in the main loop / event handler:
    switch(event) { case next:   current_menu = menu[current_menu].next_menu;   write_text(menu[current_menu].label);   break; case select:   menu[current_menu].action();   write_text(menu[current_menu].label);   break; default;   // do nothing   break; } event = none;  // reset event variable
  14. Like
    LiviuM got a reaction from curtis63 in OpenCollector vs INPUT, OUTPUT, INPUT_PULLUP PinModes...   
    Hi Curtis,
     
    never done this, but I suppose you can generate the i2c behavior by switching the pins between input (with pull-up) for logic high and output low for logic low.
     
    Cheers,
    Liviu
  15. Like
    LiviuM reacted to zeke in What is "our" time worth ?   
    @@yyrkoon
     
    I am thinking of all kinds of things but the first is this...
     
    Congratulations! You did it! You Delivered! Clients love it when you DELIVER! Good Job!!!
     
    I am also thinking how you have begun to develop a process for doing various tasks. Things like this:
    - How do I capture the client's requirements?
    - How do I program a chip?
    - How do I invoice the client?
    - and so on ...
     
    Once you have figured out one of those processes then I recommend writing it down immediately. Then you will remember how to do it next time. Also, you will be able to teach your employee how to do the same thing in the future.
     
    I'm also thinking about liability. That is, this hush hush product is now out in the wild being used. Will it fail? When will it fail? How will it fail? Will someone get injured or die if it fails? If any of that happens then who will bear the liability for that unintended and unexpected event? For me, I have an insurance policy that covers me for "Errors and Omissions". That's the policy type.
     
    And then I am always hunting for the next job or task. Who could or should I talk to to get more work?
     
    I'm sure there are many other things that I could think about but it's important to celebrate the present successes first.
     
    <fistbump>
    Good Job!
     
    This is awesome. Let's do some more of this!
  16. Like
    LiviuM reacted to agaelema in Fast sqrt() for 16-bit integers   
    Hi,
     
    I think this article will be helpful
     
    http://www.embedded.com/electronics-blogs/programmer-s-toolbox/4219659/Integer-Square-Roots#
  17. Like
    LiviuM got a reaction from Frida in To I2C or not to I2C, that is the question...   
    Hello Curtis,
    in my opinion, your pins file has a problem with the (hardware) i2c pins. In my opinion, the TWISDA should be == with TWISDA0 and TWISCL should be == with TWISCL0. In your file there are defined as:
    static const uint8_t TWISDA = 22; /* P1.7 */ static const uint8_t TWISCL = 21; /* P1.6 */ static const uint8_t TWISDA0 = 23; /* P1.7 */ static const uint8_t TWISCL0 = 22; /* P1.6 */ I think they should be
    static const uint8_t TWISDA = 22; /* P1.7 */ static const uint8_t TWISCL = 21; /* P1.6 */ static const uint8_t TWISDA0 = 22; /* P1.7 */ static const uint8_t TWISCL0 = 21; /* P1.6 */ Attached is the pins_energia.h file with the above correction and with some minor "visual" changes - made the correct footprint for the 32 pins chip, aligned the comments...
    pins_energia.h
  18. Like
    LiviuM got a reaction from Fmilburn in To I2C or not to I2C, that is the question...   
    Hello Curtis,
    in my opinion, your pins file has a problem with the (hardware) i2c pins. In my opinion, the TWISDA should be == with TWISDA0 and TWISCL should be == with TWISCL0. In your file there are defined as:
    static const uint8_t TWISDA = 22; /* P1.7 */ static const uint8_t TWISCL = 21; /* P1.6 */ static const uint8_t TWISDA0 = 23; /* P1.7 */ static const uint8_t TWISCL0 = 22; /* P1.6 */ I think they should be
    static const uint8_t TWISDA = 22; /* P1.7 */ static const uint8_t TWISCL = 21; /* P1.6 */ static const uint8_t TWISDA0 = 22; /* P1.7 */ static const uint8_t TWISCL0 = 21; /* P1.6 */ Attached is the pins_energia.h file with the above correction and with some minor "visual" changes - made the correct footprint for the 32 pins chip, aligned the comments...
    pins_energia.h
  19. Like
    LiviuM got a reaction from curtis63 in To I2C or not to I2C, that is the question...   
    Hello Curtis,
    in my opinion, your pins file has a problem with the (hardware) i2c pins. In my opinion, the TWISDA should be == with TWISDA0 and TWISCL should be == with TWISCL0. In your file there are defined as:
    static const uint8_t TWISDA = 22; /* P1.7 */ static const uint8_t TWISCL = 21; /* P1.6 */ static const uint8_t TWISDA0 = 23; /* P1.7 */ static const uint8_t TWISCL0 = 22; /* P1.6 */ I think they should be
    static const uint8_t TWISDA = 22; /* P1.7 */ static const uint8_t TWISCL = 21; /* P1.6 */ static const uint8_t TWISDA0 = 22; /* P1.7 */ static const uint8_t TWISCL0 = 21; /* P1.6 */ Attached is the pins_energia.h file with the above correction and with some minor "visual" changes - made the correct footprint for the 32 pins chip, aligned the comments...
    pins_energia.h
  20. Like
    LiviuM reacted to Rickta59 in CCS Free   
    @@NurseBob, didn't you feel outraged when they started giving away CCS with the purchase of some launchpad boards back in September? You should have asked for a refund back then.
     
    What about the people who bought a launchpad to get the free CCS?  Don't they feel taken?  What about the people who got the double whammy? They bought a black msp432 so they could get a free CCS. Now they have a board with chips that has been deprecated, and the latest of version of CCS won't even work with that board. (Sorry I posted about $9.99 deal. I didn't know they were going to give it away 3 months later )
     
    Over the years I've spent small fortunes on various compilers and tools. Microsoft C in the 80's, and 90, and early 2000s.  I used to have a MSDN subscription that cost $2200 per year. Borland C++ was less expensive but still wasn't free. I'm sure none of you remember Centerline-C++ in the 90's, it eventually turned into the product called Rational Purify C++. It cost about $5000/seat in the 90s.  Add in the cost of many bounds check tools and many frameworks to make cross platform development easier and it all adds up to a lot of wasted money.  However, all these products were the cost of doing business.  I was making money so I had to spend money.
     
    I've never understood the idea of paying real money for a development tool for use with a hobby.  The sad thing, and I have no inside knowledge of this just a hunch, I'm sure if google or Disney gave any hint of wanting to use TI chips, I would be surprised if TI made google or Disney pay for a CCS license.  It is only the little guys who actually pay for a license and then they get ignored when they have issues because they don't represent a large revenue stream.
     
    Personally, I'm glad they are now providing CCS for free.  Even if you purchased CCS you didn't get any better support than those that were using the code size limited version.  At least the value of support matches the price of the product : )
     
    What I've observed with TI, if they are offering you a deal that sounds too good to be true, they are getting ready to obsolete that product.
     
    -rick
  21. Like
    LiviuM reacted to chicken in Generate 1 pulse per second using MSP430   
    PS: You may want to start with a basic tutorial on timer interrupts. E.g.
    https://www.embeddedrelated.com/showarticle/182.php
  22. Like
    LiviuM got a reaction from chicken in SPI between MSP430/432 and MCP3911   
    GND?
  23. Like
    LiviuM got a reaction from NurseBob in MSP432 with WS2811 LED strip, where to start?   
    Hi Bob,
    If there it is a current flowing through the resistor (to be throttled), then Vin != Vout (Vin = Vout + I*R).
    A resistor (+ the ESD protection diode) can be seen as the simplest "level adapting" structure, if the resistor is large enough to keep the current in the Pin's specification.
    As for the actual case, with a 3.3V output driving a 5V CMOS input, as the input is practically floating, I don't see any reason for a damage to the output.
    In the worst case, the 3.3V wouldn't be enough to switch the input, if it is a Schmitt trigger input, for example (the most Schmitt triggers I know have VIH = 0.7*VDD => VIH = 3.5V @VDD = 5V).
     
    My 2 (euro) cents, of course.
     
    Best regards,
    Liviu
  24. Like
    LiviuM got a reaction from chicken in MSP432 with WS2811 LED strip, where to start?   
    Hi Bob,
    If there it is a current flowing through the resistor (to be throttled), then Vin != Vout (Vin = Vout + I*R).
    A resistor (+ the ESD protection diode) can be seen as the simplest "level adapting" structure, if the resistor is large enough to keep the current in the Pin's specification.
    As for the actual case, with a 3.3V output driving a 5V CMOS input, as the input is practically floating, I don't see any reason for a damage to the output.
    In the worst case, the 3.3V wouldn't be enough to switch the input, if it is a Schmitt trigger input, for example (the most Schmitt triggers I know have VIH = 0.7*VDD => VIH = 3.5V @VDD = 5V).
     
    My 2 (euro) cents, of course.
     
    Best regards,
    Liviu
  25. Like
    LiviuM reacted to jp430bb in 4-wire JTAG with mspdebug and Raspberry Pi GPIO   
    Having a small collection of older F1xx and F4xx MSP430 devices, I've been looking for a convenient way to flash and debug them.  The devices I have don't support Spy By Wire, so they require 4-wire JTAG.  They also have their JTAG pins shared with other functions, so the test and reset pins have to be used to put them into JTAG mode.  
     
    While I do have an Olimex parallel-port JTAG adapter, the computer I use most of the time has no parallel port.  
     
    A Raspberry Pi running Debian Jessie and mspdebug with its gpio driver looked like a good option.  Adding a patch to mspdebug so that the gpio driver supports the reset and test pins got it working.  
     
    The patch is here: https://github.com/johnp789/mspdebug/tree/gpiojtag
     
    Now, I only need a Raspberry Pi Zero, Debian Jessie with the USB ethernet gadget configured on a micro SD card, a USB cable, and 7 jumper wires to flash and debug 4-wire JTAG MSP430 devices.  The Pi Zero might be the lowest-cost 4-wire MSP430 JTAG debugger available!  
    $ sudo ./mspdebug -j -d "tdi=3 tdo=2 tms=4 tck=17 rst=22 tst=27" gpio MSPDebug version 0.24 - debugging tool for MSP430 MCUs Copyright (C) 2009-2016 Daniel Beer <dlbeer@gmail.com> This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Chip info database from MSP430.dll v3.3.1.4 Copyright (C) 2013 TI, Inc. gpio tms= 4 gpio tdi= 3 gpio tdo= 2 gpio tck= 17 gpio rst= 22 gpio tst= 27 Starting JTAG JTAG_power on JTAG_connct led green JTAG ID: 0x89 Chip ID data: ver_id: 49f4 ver_sub_id: 0000 revision: 01 fab: 40 self: 0000 config: 00 Device: MSP430F44x Available commands: ! fill power setwatch_r = gdb prog setwatch_w alias help read simio blow_jtag_fuse hexout regs step break isearch reset sym blow_jtag_fuse hexout regs step break isearch reset sym cgraph load run verify delbreak load_raw save_raw verify_raw dis md set erase mw setbreak exit opt setwatch Available options: color gdb_default_port enable_bsl_access gdb_loop enable_fuse_blow gdbc_xfer_size enable_locked_flash_access iradix fet_block_size quiet Type "help <topic>" for more information. Use the "opt" command ("help opt") to set options. Press Ctrl+D to quit. (mspdebug) prog fet440_1.c.hex led green Erasing... led red led red Programming... Writing 74 bytes at 1100... led red led red Writing 32 bytes at ffe0... led red led red Done, 106 bytes total (mspdebug)
×
×
  • Create New...