I recently was fortunate enough to receive two MSP432 Launchpad development boards, and I've been hoping to use them for a few calculator-related projects. The most obvious task is to try using Energia, TI's Arduino IDE fork for their Launchpads, to port ArTICL programs to the MSP432. A slightly more complex goal that I've set myself is to try to control DCC-enabled model trains with the MSP432 and a graphing calculator. I'll be documenting my adventure in this topic.

First, here's what I've found so far in futile efforts to get a simple PWM interrupt working within an Energia sketch:
Timer_A "Documentation":
https://github.com/machinaut/msp432-driverlib/blob/master/driverlib/MSP432P4xx/timer_a.h
https://github.com/machinaut/msp432-driverlib/blob/master/driverlib/MSP432P4xx/timer_a.c
Information about AVR timers to compare:
http://maxembedded.com/2011/07/avr-timers-ctc-mode/
TI Forum help about MSP432 interrupts (doesn't work with Energia?):
https://e2e.ti.com/support/microcontrollers/msp430/f/166/p/428511/1531341

Because it seems to be documented in shockingly few places, here's how you translate bank+pin-style pin names (ie, P1.0 or P2.4) to Energia numeric pin numbers (for example, the LED pin is not 2, as some documentation claims; it's 7Cool:
http://energia.nu/wordpress/wp-content/uploads/2015/03/MSP432-LaunchPad-%E2%80%94-Pins-Maps.jpg

Edit: I'm currently working on getting a simple ArTICL sketch working first, and not having much luck:
- Timeouts have been temporarily lengthened; because they're based on numbers of loop iterations, rather than the correct solution (using timers), they need to be longer on faster uCs.
- Sends appear to work properly.
- Gets do not work. Using the existing code largely yields no bits received at all. Switching to a scheme where pin reads involve a unanimous voting scheme over 16 samples helps a little, in that a single byte is received successfully, except that the byte received is a nonsensical (but consistent) value.

The current plan is to load a known-working ArTICL build onto an Arduino and try to get it to talk to ArTICL on the MSP432 to debug what the non-MSP432 endpoint is receiving (and sending).
I have had my first successes talking to a graphing calculator with an MSP432, at last. Here's the state of the project:
- I can talk to a TI-83 Plus properly, in both directions.
- I cannot talk to either of two TI-84+CSEs, in either direction.
- When I disconnect the calculator, the MSP432 thinks it's still getting acks for bits, which means the lines are floating around, even though I am writing HIGH to pins set to INPUT (which is supposed to set the pull-up resistors on). I'll try adding explicit pull-up resistors to 3.3VCC and see if that helps. The problem disappears if I disconnect my leads as well, which supports the hypothesis that it's about floating/noise.

Edit: For those not familiar with ArTICL, the following is a demo of the TypeLetter example program. It repeatedly issues the silent linking command to type an M.
*bump* Apparently the MSP432 Launchpad and I have different ideas about what pull-up resistors are. When I added external pullup resistors to 3.3V, I stopped getting spurious sends to a phantom calculator (ie, a link cable not plugged into anything). However, the Energia code uses the exact same commands as on the Arduino to set the pull-up resistors (ie, set the state of an input pin to HIGH), so I'm not sure why those pull-up resistors aren't coming on. Two 10K resistors is not a terrible addition to a BOM, though, so I can survive. The remaining problem is that I still can't talk to a CSE, and I don't know if it's a timing issue or a voltage issue with the 3.3V GPIOs.
RPull: 20k min, 35k typ, 50k max. They're pretty weak. You also don't mention the PxREN bits, which must be set to enable pull resistors (PxDIR = input, PxREN = 1, PxOUT=1 for pull-up).
Tari wrote:
RPull: 20k min, 35k typ, 50k max. They're pretty weak. You also don't mention the PxREN bits, which must be set to enable pull resistors (PxDIR = input, PxREN = 1, PxOUT=1 for pull-up).
Let's see what their Wiring-like library does... from scanning msp430/wiring_digital.c, their pinMode() command takes OUTPUT, INPUT, or INPUT_PULLUP, which touches REN, DIR, and OUT, but their digitalWrite() doesn't seem to account for HIGH = pullup. Confusingly, there seems to be no corresponding MSP432 code.
Please note that I've brought this project into a bit of a released state, so I likely won't be adding further to this topic unless I start a significant new calculator + MSP432 Launchpad project not related to ArTICL. You can find the topic about the MSP432 Launchpad ArTICL library here:
https://dev.cemetech.net/forum/viewtopic.php?t=11863
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 1
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement