Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


pjkim last won the day on February 7 2014

pjkim had the most liked content!

About pjkim

  • Rank
    Level 1

Profile Information

  • Gender
    Not Telling
  • Location
    Los Angeles
  1. @@veryalive Thanks for the information. I tried doing what you mentioned. I have a mac so the corresponding directory appears to be: /Applications/ti/ccsv6/eclipse/plugins/com.ti.ccstudio.buildDefinitions.GNU_6.1.1.201512011200/resources/buildDefinitions/msp430 I placed the unzipped file there and restarted CCS. One thing I realized is that you don't get an error if you use the parent directory to bin, i.e. /Applications/ti/gcc. Regardless, I tried both ways (/Applications/ti/gcc/bin (error re compiler not found) and /Applications/ti/gcc (no error)). Either way, GCC-5 does not appear. Thanks once again. Hopefully the next CCS update will fix this issue.
  2. BTW, the "Submit a comment" section appears to be broken. I tried using Safari, Chrome, and FF. Each time, the captcha was the same and each time I got the same error message "Error: Time limit is exhausted. Please enter CAPTCHA value again. Click the BACK button on your browser, and try again." Either that or I got the math (8-x=4) wrong.
  3. How do I get Code Composer Studio (mac beta version) to use the new compiler? I tried right clicking a project, Properties->General->Compiler version and in the "Select Compiler Version" window selecting "Select new compiler from file-system" browsing to /Applications/ti/gcc/bin which contains msp430-elf-gcc and all the other goodies. I however get an error message "No compiler selected! Please select a directory that contains the compiler for the MSP430 device-family."
  4. I've been working on a project that uses both OneWire and Serial protocols. I realized that I could send serial data from the MSP430FR4133 launchpad to the computer and use the OneWire to read temperature data. I could not however send serial data from the computer to the launchpad when using OneWire. If OneWire was not used, serial data went both ways without a problem indicating an incompatibility between the OneWire and Serial libraries. I tracked it down to a call to ds.reset() as the problem. Looking at the source for the OneWire.reset() function in OneWire.cpp, there was a suspicious call to pinMode and digitalWrite: uint8_t OneWire::reset(void) { pinMode(3, OUTPUT); //why is this here? digitalWrite(3, HIGH); //why is this here? IO_REG_TYPE mask = bitmask; volatile IO_REG_TYPE *reg IO_REG_ASM = baseReg; uint8_t r; uint8_t retries = 125; Why was OneWire.reset() directly setting pin 3 (UART Rx) mode and value? Looking at Paul Stoffgren's site (http://www.pjrc.com/teensy/td_libs_OneWire.html), the suspicious lines were not there. I commented out the offending lines and now OneWire and Serial receive both work fine. I looked at the OneWire library for MSP432 and LM4F; they too have the same bug/feature. Did not check other architectures.
  5. I received the target board and MSP430FR6989s yesterday. After figuring out how to seat the chips in the ZIF holder (took an embarrassingly long time), I hooked it up to the MSP-FET. I was hoping in the back of my mind that the "MSP430: Trouble Halting Target CPU: Internal error" messages would go away when I switched to full JTAG from Spy-Bi Wire. No such luck. I am still getting the error messages. Trying to track this down, I tried installing the latest MSP430.dll drivers from http://processors.wiki.ti.com/index.php/MSP430_JTAG_Interface_USB_Driver CCS6.0.1 is supposed to have the latest drivers from what I can tell, but the file sizes of the alread-installed and downloaded (v3.4.2.7) were different. I replaced both MSP430.dll and MSP430v3.dll in the ti\ccsv6\ccs_base\DebugServers\drivers folder. I got the "Error initializing" message again and I chose update firmware. It completed correctly this time but afterwards, same error with "MSP430: Trouble Halting Target CPU: Internal error."
  6. I received my packages in the reverse order-- MSP-FET first followed by the target board/chips a few days later. I have to admit that it took me a long time to figure out how the ZIF holder works! I have only used DIP ZIFs so far-- the ones with a lever on the side. I kept pushing the frame down and wondering how I get it to latch. Yes, I finally figured it out but it took a long time.
  7. No difference with sudo. I am running the latest version of VirtualBox. I updated virtualized CCS6 to latest version (6.0 to It was somewhat of an ordeal because of how I deleted/uninstalled CCS5.5 previously. I had to reinstall CCS5.5 and then run the uninstaller before CCS6 would update). After updating CCS6, it no longer wants to update the firmware-- it now configures the debugger correctly when I start a debug session. I assume there was a change in the MSP-FET driver from 6.0 to 6.0.1. Problem is that I am still getting the "MSP430: Trouble Halting Target CPU: Internal error" followed by a "MSP430: JTAG Communication Error" message. Looking for a more up to date version of libmsp430.so. I found http://brandonlucia.com/Building_MSPDebug_TILIB_On_OSX.txt which makes me think it is going to be more trouble than it's worth.
  8. I received my MSP-FET yesterday-- thank you TI! I was so excited to try out everything. I was deflated to find out that my package only contained the programmer-- hopefully the target board and MSP430FR6989s will arrive soon. It almost felt like Christmas morning-- only to find out the batteries were not included! I wanted to test out my new toy so I hooked up the MSP-FET to some MSP430 chips I hand nearby. I hooked up the MSP-FET to a MSP430G2231 and started Energia on Mac OS X 10.9.4. Although the MSP-FET is seen by the OS, I can't seem to connect to it. On System Info, the vendor/product ID are 0x2047/0x0014 with a description of "MSP Tools Driver." Here are my issues 1) Energia can't connect. If I use File -> Upload, or File -> Upload using programmer, I get "usbutil: unable to find a device matching 0451:f432" 2) If I use mspdebug, I can't connect using tilib or uif. $ mspdebug --usb-list Devices on bus 250: 250:006 2047:0014 [serial: EFF2blahblah] 250:005 05ac:0245 250:002 0424:2513 250:001 05ac:8006 Devices on bus 253: 253:001 05ac:8006 $ mspdebug tilib MSPDebug version 0.22 - debugging tool for MSP430 MCUs Copyright (C) 2009-2013 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. MSP430_GetNumberOfUsbIfs No unused FET found. $mspdebug uif MSPDebug version 0.22 - debugging tool for MSP430 MCUs Copyright (C) 2009-2013 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. usbutil: unable to find a device matching 0451:f430 I tried specifying the USB device by adding -U 250:006 but no improvement. Does mspdebug v 0.22 not work with the MSP-FET? Is this a libmsp430.so issue? I was using the one supplied with the latest version of Energia (E0013). 3) If I run CCS6 under VirtualBox, things sort of work. When I start a debug session, I get a message "Error initializing emulator: A firmware update is required for the MSP430 Debug Interface (MSP-FET430UIF / MSP-FET / eZ-FET). Click the "Update" button to update the firmware and launch your debug session (this may require several update steps). DO NOT UNPLUG THE INTERFACE DURING THE UPDATE." If I click UPDATE, the MSP-FET gets bjorked. Probably because of the way virtualbox hands off USB devices between host and guest OSs. I am thinking the USB VID and/or PID are being altered during the update. Regardless, things don't work afterwards and I can't seem to unbjork things without using a physical Windows computer running CCS6. The physical WIndows computer can update the MSP-FET firmware. Curious thing is that after updating the firmware, CCS6 running on virtualized Windows, still wants to upgrade the firmware with the same message above. If on the other hand, I choose the button to IGNORE the firmware update, things start OK and I can start a debug session. Problem is that sometimes I get a error message "MSP430: Trouble Halting Target CPU: Internal error." Things don't work so well afterwards but nothing that a unplug, replug won't fix. 4) I know the MSP-FET is working OK because if I use it on a physical Windows machine, I can program a device, set breakpoints, stop/resume, see energy usage, etc. It works flawlessly. It's a bit disappointing I can't seem to get it to work with mspdebug or virtualized Windows running CCS6.
  9. Yes, I am using a L298N dual H bridge motor driver. From what I can gather from the datasheet, I can utilize the ESI to decode one quadrature encoder. I want to drive at least two axes so I can control X and Y. After sorting out the programming/ESI issues, I am planning to solder the MSP430FR6989 onto an LQFP100 adapter board so I can use two at a time. Something like http://www.dx.com/p/multi-function-v116-lqfp-tqfp32-44-48-64-80-100pin-to-dip-adapter-boards-green-2-pcs-217452#.VBCv_UtqJ6E Can't wait to try this out.
  10. I have been interested in making a servo motor controller. I wanted a microcontroller with a hardware quadrature encoder so when TI had a call for projects utilizing the Extended Scan Interface of the MSP430FR6989, I thought this might be a good fit. Servo motors have several advantages over stepper motors including increased torque, lower power consumption, feedback control to eliminate missed steps. The problem is that servo motors are rather expensive compared to stepper motors. I obtained several surplus double-shafted, coreless DC motors with planetary gearboxes for $14. They turn easily with an old AA battery but can also be driven at 24V for increased speed and torque. I also purchased slot photointerrupters to use as quadrature encoders. I cut an encoder wheel from a tin can, drilled a hole in the middle and cut out two 90 degree wedges. The wheel was mounted on a short nylon bolt that had a 1/16" hole drilled down the center and clamped between two nuts that were rounded to provide clearance against the photo-interrupters. The photo-interrupters were mounted 135 degrees from each other. To give a proper quadrate signal, the angle between the detectors needs to be an odd multiple of half the encoder disk wedge angle, i.e. n * 90/2 where n is an odd number. 45 degrees caused physical interference between the mounting lugs of the photo-interrupters so 135 degrees was chosen. This gives 8 pulses per rotation. I am not sure what the exact gear ratio is but somewhere around 80:1. This gives about 0.56 degree per step which is on the order of the gear backlash. Here is a picture of the entire servo motor assembly. Here is an oscilloscope trace of the quadrature signals. Hopefully I can have the MSP430FR6989s driving the servo motors and doing something interesting soon. Thanks once again to TI for sponsoring the contest.
  11. I have been working on a servo motor project. I fabricated a quadrature encoder and affixed it to a double shafted coreless motor with a planetary gearbox. The coreless motor is rather nice because of its efficiency-- turns easily with a single worn out AA battery measuring 1V, but can be driven at up to 24V for more power (for short periods). I want to use this in projects where stepper motors are not a viable alternative because of their high power consumption. The encoder is working and I have proper quadrature signals coming out. I am trying to decide on a microcontroller to read the quadrature encoder, run a PID algorithm, and control a PWM signal to a motor driver. I want to use a microcontroller with a dedicated quadrature encoder instead of interrupts and wonder if the MSP-TS430PZ100 would be a good fit. I am attaching pictures of what the motor assembly looks like as well an oscilloscope screenshot of the quadrature signals. Disclaimer-- I read the ESI chapter in the MSP-TS430PZ100 datasheet and it looks like it is fairly dense to say the least-- possibly/probably a reflection of its flexibility. I am hoping there is a "ESI for dummies" tutorial somewhere.
  12. Use a voltage divider. See http://en.wikipedia.org/wiki/Voltage_divider#Resistive_divider You can select R1 and R2 so that Vout never exceeds 3.3V. I would pick R1+R2 to be ~50K ohms or so. R2 needs to be the smaller value. If you want, you can connect a diode and resistor to the 3.3V rail to clamp errant voltages for further protection.
  13. Sorry I misunderstood you question(s). Not familiar with "chording" scheme, but chose the values for the individual buttons to be as intuitive as possible for non-geek types. You do lose some dynamic range (1 to 6 vs 1 to 7) and introduce some redudancy to numbers (can do 3 with single key or 1 and 2 together) but I thought the tradoff was worth it to keep it as non-geeky as possible. And also the fact that most people don't subitize more than 5 or 6. As for systematically checking whether I get the same answer compared to a traditional tally counter, hadn't really crossed my mind-- counting should be counting. I will try new vs old but I would be surprised/shocked to see a significant difference (more than 1 or 2% which usually less than the difference in counting the same cell suspension twice).
  14. Yes, yes it does. It works well and with the msp430 staying predominantly in LPM4, a set of button cells will last for years. The counts are not an approximation-- they are dead on accurate. A button press gives you exactly how many counts you would expect. Concurrent and/or overlapping button presses are also handled correctly. Slightly faster but a lot less tedious. My speed is slowly improving with use so will likely be considerably faster in the future-- sort of like touch typing vs hunt/peck. About 3-4 fold fewer keypresses. Takes some getting used to but once I did, the old method felt archaic. No real downsides that I can think of other than I had to make the thing. A traditional tally counter requires you to press a button for each count. Want to count to 6, press the button 6 times. Our eyes/brains instinctively group and count up to about 5-6 items. When I hold up four fingers, you don't count 1,2,3,4. You instantly recognize four fingers-- this is subtilizing. Same with a group of four cells. You instantly recognize there are four cells but you have to press the button four times on a traditional tally counter. This lets you enter 1 to 6 counts at a time-- 1 to 3 with a single button press, 4 to 6 using a combination of buttons. That you ask these questions makes me think I didn't do a very good job explaining/presenting my project. Oh well. More blinkenlights next time.
  • Create New...