Jump to content
43oh

GastonP

Members
  • Content Count

    40
  • Joined

  • Last visited

Reputation Activity

  1. Like
    GastonP reacted to timotet in MSP430 Nixie Clock   
    I bought one of @@RobG's clock kits and I am very happy with the results.
    I have kids and didn't want to have any wandering fingers getting zapped, so I designed and printed an enclosure for it.
    Here are some photos of it. I couldn't resist adding the colon.
     
    I uploaded the .stl files if anyone wants to print it.
     
    Thanks to Rob for the awesome kit!
     



    RobG_Clock_Case.zip
  2. Like
    GastonP reacted to spirilis in new msp430g2955 with energia   
    I got this working and really attacked it at the core, getting analogWrite working perfectly too. Gotta find my other thread, I think I posted my core files. Short answer is yes, you will use the msp430 core, that core just needs some code updates.
     
    Sent from my Galaxy Note 10.1
  3. Like
    GastonP reacted to yosh in new msp430g2955 with energia   
    Got my G2955 boards yesterday and soldered the TSSOP-Version today.
    First test with Energia showed, that simple sketches (like blinking or software serial) run without problems.
    But at the moment I have a lot of difficulties to get the peripherals like HardwareSerial or I2C running.
     
    I took the files of L.R.A. (as posted earlier) and modified them according to the data sheet (as far as I could). memory.x and periph.x should (hopefully) be correct, I took the values from the docs.
    Had to correct some "pins" in pins_energia.h ... but I couldn't get HardwareSerial running on Pins 25/26 (SoftwareSerial on these pins works) ...
     
    So now some questions for those who are more familiar with Energia development:
     
    Is it possible to use "msp430" as build.core or do I have to create a new one? (like "lpmsp430g2955.build.core=msp430" in boards.txt)
     
    Or the other way around: To which extend do I have to change hardware-related files (like in hardware/msp430/cores/msp430)?
     
    So to sum up here is a short list according to @@Rei Vilo 's post:

    add board definition for the MSP430G2955 in hardware/msp430/boards.txt -> ok ... question: build.core=msp430 ??? add pins definition for the MSP430G2955 in hardware/msp430/variants/launchpad/pins_energia.h -> adapted Pins 25+26 for TX/RX, but no success create a new file msp430g2955.h out of hardware/tools/msp430/msp430/include/msp430g2553.h -> do I have to modify this file or just copy? create a new file msp430g2955/memory.x out of hardware/tools/msp430/msp430/lib/ldscripts/msp430g2553/memory.x -> should be ok now create a new file msp430g2955/periph.x out of hardware/tools/msp430/msp430/lib/ldscripts/msp430g2553/periph.x -> should be ok now
  4. Like
    GastonP reacted to petertux in Overengineered 12V lead battery recharger   
    Hi,
     
    I did a small project that would allow 8 12V batteries taken from an older UPS to be charged from a bunch of photovoltaic panels.
     
    at first I used a charge controller I got from the electronic store, but I was very unhappy by the fact that the controller would discharge the batteries in a few months. it had between 4 and 8 mA of quiescent current, which was much too high given the fact that my pannels almost never get direct sunlight.
     
    so in it comes a msp430 that controls the charging and every once in a while logs to a uSD card the battery and PV voltage, charge current, internal temperature, heatsink temperature and the timestamp of course. all that and it ended up having an Iq of 170uA. that would go down to ~130uA if I drop the status LEDs.
     
    maximum charging current is given by the PB137, so it is arround 2A. I guess two of these could be used in parallel for 4A, but I never get this much sunlight.
     
    it uses a 3V coin cell battery (only for backup when the batteries are unplugged), 8x3w 5V panels from seeedstudio and 8 12V lead batteries all put in parallel.
     
    it has a bunch of optional status LEDs that would either show voltage presence in the input/output/charging circuit, one on the SPI clock and 4 controllable by the uC.
    as connectors go there are 5 IO pins - one of them is re-mappable, i2c connector for an optional display, TI spy-bi-wire for programming/debugging, 1 UART for debugging or a serial display, optional USB connection for programming or status gathering.
     
    pictures here: https://plus.google.com/photos/106706955427383613204/albums/5947961264604104321?banner=pwa
     
    all sourcecode and schematics are here: https://github.com/rodan/solar-charger/
     
     


  5. Like
    GastonP reacted to chicken in [POTM] dAISy - A Simple AIS Receiver   
    Overview
    dAISy (do AIS yourself) is a very simple AIS receiver that I developed from scratch. It is built around the Silicon Labs EZRadioPRO Si4362 receiver, using a Texas Instruments MSP430G2553 MCU for processing and the MSP-EXP430G2 v1.5 LaunchPad as development platform.

    The complete project source code and schematics are available on GitHub: https://github.com/astuder/dAISy

    Update 5/18/2015: A finished, self-contained AIS receiver based on this project is now available for purchase in my web store.
     
    AIS, short for Automatic Identification System, is a standard for tracking ships. Ships advertise their position, course and other information with short transmissions on specific frequencies (161.975 MHz and 162.025 MHz). More on Wikipedia.
     
    An AIS receiver, like dAISy, receives and decodes AIS transmissions. It then re-packages the raw data into NMEA sentences (specifically formatted ASCII strings). Finally, using a serial connection, these strings are forwarded to more capable equipment for further processing.
     

     
    If you're the lucky owner of a tricked out boat, you could connect dAISy to your navigation computer. For land lobbers like me, a more common use case is to run naval mapping software that supports AIS data input on a PC. In the screenshot below I've connected dAISy to OpenCPN (link), an open source chart plotter and navigation software.
     

     
    On the top right you can see my setup war-driving at the Seattle waterfront as my lab is too far from the coast to receive anything. The LaunchPad sits on the dashboard with a white USB cable connecting to the notebook computer in the foreground.
     
    dAISy's data is fed into OpenCPN, bottom right shows a log of the serial data received. OpenCPN maintains a database of all the collected data (lower left) and visualizes nearby ships on a map (top center), including past and projected course. Hovering the mouse over a ship will display its name (text on yellow ground) and clicking it will reveal more detail (top left).
     
    Hardware
    I wanted to build my own, non-SDR, AIS receiver for a long time. There are a few projects floating around the internet (e.g. here) which refer back to an article by Peter Baston, published 2008 in Circuit Cellar magazine (copy available here gone.. google for Peter Baston Circuit Cellar to find other copies). Unfortunately, the CMX family of modem ICs by CMS Microcircuits (link) used in these projects are relatively expensive ($15+) and hard to find for hobbyists. In addition you'd need a radio to do tune into and down-convert from the ~162 MHz carrier frequency.
     
    So I was quite excited when earlier this year a parametric search on Mouser brought up a new IC  that covered the required range (162 MHz) and modulation (GMSK). And best of all, available in single quantities for $3.56 $2.27 $2.22! (link)
     
    The Silicon Labs EzRadioPRO Si4362 (link) is a single chip receiver that covers frequencies from 142 to 1050 MHz and supports various modulations, including GMSK. It comes in a tiny 20-pin QFN package and the only external parts required are a 30 MHz crystal, an antenna with a few capacitors and inductors for impedance matching, and finally some decoupling caps and pull-down resistors.
     
    Time to whip up a breakout board. I used the opportunity to give KiCad a try and quite like it.
     
    Here's the schematic:

     
    And the layout:

     
    I used OSHPark to make the PCBs. At a smidgen over one square inch it cost  $5.15 for 3 copies:

    http://oshpark.com/shared_projects/QUWi71r4
     
    Note that the layout still has three issues that I already fixed in the schematic:
    GPIO0 and GPIO1 were flipped SDO required a pull-down resistor as the radio leaves it floating when not actively sending, which confused the hell out of me while trying to figure out the communication protocol. Lastly, the holes for the headers turned out to be slightly too small to comfortably fit the cheap breakout headers I had at hand. Edit: Here's Rev B where I fixed these issues: http://oshpark.com/shared_projects/WI6u3Qmk
     
    Which brings us to the BOM:
    Silicon Labs Si4362 (U1) 30 MHz crystal (X1) Si4362 datasheet specifies <11 pF load capacitance, but a crystal specified for 12pF load capacitance seems to work fine too Antenna/LNA matching network, calculated based on SiLabs AN643 (link, approx. values, +/- 5% shouldn't matter too much): 75 ohm (dipole): 10 pF (CR1), 5 pF (CR2), 280 nH (LR1), 200 nH (LR2) 50 ohm: 12 pF (CR1), 6 pF (CR2), 240 nH (LR1), 160 nH (LR2) Decoupling caps: 100 pF, 100 nF, 1uF (C1, C2, C3) Pull-down resistors 100 k (R1, R2) First thing I noticed when I received the parts: The 20-pin QFN at 4x4 millimeters is tiny!

     
    I mounted it by first tinning the pads with a small quantity of solder. I then added flux and placed the chip on the pad. I then used a hot air station to carefully reflow the solder. Worked the first time around.

    After using jumper wires to figure out how to talk to the chip, I mounted the breakout board on a makeshift BoosterPack using perfboard, double-sided tape and wire (see picture at the top of the post).



    Here's how I ended up connecting the breakout board to the LaunchPad / MSP430G2553:
    SEL -> P1.4 (SPI chip select) SCLK -> P1.5 (SPI CLK) SDO -> P1.6 (SPI MISO) SDI -> P1.7 (SPI MOSI) GPIO0 -> P2.0 (I/O unused) GPIO1 -> P2.1 (I/O clear-to-send) GPIO2 -> P2.2 (I/O RX clock) GPIO3 -> P2.3 (I/O RX data) SDN -> P2.4 (shutdown / reset) IRQ -> P2.5 (I/O channel-clear) Software
    The software of dAISy consists of three major blocks:
    Radio configuration and control over SPI Packet handler, including a basic FIFO for received messages NMEA encoding and transmission to the PC over UART For UART (TX only) and SPI (TX/RX) I use the MSP430G2553's USCI A0 and B0 respectively. In both cases I don't use interrupts which simplifies things considerably.
     
    Upon reset the following steps happen:
    Initialize MSP430 peripherals Initialize packet handler, which will also reset FIFO Initialize and configure of radio, which will also setup SPI Start packet handler, which will also put the radio into receive mode And in the main loop:
    If debug messages are enabled, poll packet handler for status and errors and report them over UART Check FIFO for new packets If there is a new packet, invoke NMEA processing (which sends the message over serial to the PC) and remove packet from FIFO Below follows a more detailed discussion of the radio integration and the implementation of the packet handler.
     
    Radio
    The communication with the radio is vanilla SPI using 4 wires: MOSI (SDI), MISO (SDO), CLK (SCLK) and CS (SEL). I used the MSP430's USCI B0 to implement SPI and a separate pin to control CS.
     
    The only tricky thing to figure out was, that the Si4362 keeps the MISO line floating unless it actively transmits data. This is unfortunate as the master is supposed to poll for a specific response (FF) to detect when the radio is ready to receive more commands. This is easily fixed by adding a weak pull down resistor to SDO. I did this on the board, but it probably also works with using MSP430's internal pull-down.
     
    Additional lines I used to control the radio are:
    SDN to reset the radio CTS, which by default is mapped to the radio's GPIO1, indicating that the radio is ready for the next command While taking up an extra pin, CTS turned out to be much more convenient than the SPI response code to properly time communication flow with the radio. In dAISy, I wait for CTS to go high after each command to ensure the radio completed its task.
     
    The communication protocol is quite extensive but well documented:
    EZRadioPRO API Documentation describes the complete API and all registers AN633 Programming Guide for EZRadioPro Si4x6x Devices describes how to use the API in common scenarios Both are available on the Si4362 product page (link), under Documentation > Application Notes and are still updated quite frequently.
     
    The radio is set up by dumping a large configuration sequence into it. This includes configuration of radio frequency, modulation, GPIO pins and more. This information is stored in radio_config.h, which has to be generated with a tool called WDS (Wireless Development Suite). WDS is available in the Tools section on the Si4362 product site.
     

     
    Above are the settings I used for dAISy. WDS will use this information to configure various amplifiers, filters, clocks and decoding algorithms inside the chip. As Si4362 supports GMSK encoding only indirectly (see this thread), I'm certain there's more optimization potential by tweaking registers, but that's currently way beyond my knowledge of RF theory.
     
    While the Si4362 comes with its own packet handler, it unfortunately does not support NRZI encoding (Wikipedia). So I set up the radio to expose the 9600 baud clock and received data on separate pins and implemented my own packet handler.
     
    Packet Handler
    The packet handler (inspired by Peter Baston's implementation) is implemented as a state machine that is invoked on each rising edge of pin P2.2 which receives the data clock.
     

    There are 5 main states:
    Off, no processing of incoming data Reset, start from anew, either on start up or after successful/failed processing of a packet Wait for Sync, waiting for a training sequence to arrive (010101..) and start flag (01111110), implemented with its own state machine   Reset, start new preamble 0, last bit was a zero 1, last bit was a one flag, training sequence complete, now process start flag Prefetch, ingest the next 8 message bits to ease further processing Receive Packet, process bits until the end flag (01111110) is found or an error situation occurs Independent of state, the interrupt routine continually decodes NRZI into actual bit sequence.
     
    In the "Receive Packet" state there's continuous calculation of the packet CRC and some bit-de-stuffing. When the end flag is found and the CRC is correct, the received message is committed into the FIFO. If an error is encountered, the bytes already written to the FIFO are discarded. In both cases, the state machine starts anew by transitioning into RESET.
    This reads like a lot of code for an interrupt handler. However with the MCU running at 16MHz even the most complex state only uses a fraction (<10%) of the available time.
     
    Future Improvements
    Lastly a list of things I'd like to improve with the next version of dAISy.
     
    Software:
    Receiving on both AIS channels through channel-hopping done 1/5/2014 Tweak radio settings for better sensitivity and lower error rate LED(s) for indicating reception of valid/corrupt packets Hardware:
    Proper antenna connector Layout PCB as BoosterPack and/or USB dongle Receiving on both AIS channels at once with two radio ICs -- edit 12/25: replaced original post with high-level project description, more detailed documentation of implementation to come
    -- edit 12/28: added documentation for hardware (here and on Github), fixed some typos
    -- edit 12/31: added documentation for software and list of future improvements
    -- edit 01/05: implemented channel hopping (change to state machine)
    -- edit 01/15: changed state machine to reflect recent changes (see post further down for details), added link to shared project on OSHPark
    -- edit 01/25: major rework of sync detection state machine

  6. Like
    GastonP reacted to simpleavr in M-Clock build, M for Minimalist, Multi-mode or Matrix   
    Minimalist Multi-mode Matrix Clock
     

     
    Description
     
    This is a multi-mode clock project based on the msp430g2432. It can be assembled with minimal parts. With limited 8x8 pixels display resolution, this 12 hour clock shows time in 6 different modes. This project is based on a older attiny 2313 project I did a few years ago.
     
    HHMM mode, typical hours plus minutes scrolling digits with colon separator.
     

     
    Seconds mode, shows only seconds.
     

     
    Tix mode (shown below), led matrix is divided into quadrant, the upper quadrants shows the hour in bcd (binary coded decimal) values. they are represented by the number of dots to indicate the digits. the lower quadrants show the minute in bcd. i.e. for 5:34 it shows no dot + 5 dots on the upper half and 3 dots + 4 dots on the lower half.
     

     
    Dice mode (shown below), the led matrix is divided into two set of 'dices'. with the upper pair showing hour from 1 - 12, the lower pair of dice shows minutes in 5 minute increments. i.e. for 5:35 it shows dice value upper 5 + lower 7 (5 hour, 7 x 5 min).
     

     
    Binary (really it's bcd, or binary coded decimal) mode, (shown below) the hour, minute and second digits are show as binary dot on different columns in the led matrix. the columns 0 and 1 (from left) represents the hour digits, column 2 is blanked, columns 3 and 4 represent the minute digits, colum 5 is blanked, columns 6 and 7 represents the second digits.
     

     
    The circuit employs row and column multiplexing to drive the leds, one row at a time, this gives a 12.5% duty cycle when "sets" of leds (8 of them in each of the 8 rows) are turn on briefly. current limiting resistors are eliminated to save breadboard estate and as we are not constantly driving individual leds, they are not going to be damaged.
     
    The control (user interface) is also arranged so that we only use one tactile button for input. the firmware capture long button presses (press and hold) for menu rotation and normal button presses for menu selection.
     
    By migrating this project from an AVR mcu to a msp430 mcu I had made it possible to keep time a lot more accurately. During display (i.e. led on) the project runs at 1Mhz DCO. The msp430 mcu has factory calibrated clock values. When not displaying, this project enters a LPM3 (low-power mode 3) to conserve power. At LPM3 the DCO clock cannot be used and the project switches to use a 32Khz crystal based AClk to keep time.
     
    Features
    Minimal component count, 4 parts.
    Battery operated from 3V to 3.6V.
    Use of watchdog timer to keep time, power-down sleep mode (LPM3) takes uA power.
    32Khz crystal to keep accurate time when sleep.
    Runs 1Mhz DCO calibrated clock when active (displaying time).
    This is a 12H clock, not 24H and has no AM/PM indicator.
    Easter egg application.
    Parts list
    msp430g2432 (or other G series dip 20pin devices w/ 4k+ flash)
    8x8 LED matrix display (red only, this is a 3V project)
    tactile button
    32Khz clock crystal
    2x LR44 button cell or 3V-3.6V other battery source

     
    Application Notes
    Short key press in display mode cycles through HHMM, seconds, tix, dice, binary and sleep modes.
    Long press enters setup mode, subsequent long press rotates thru menu.
    Menu items cycles thru 'Set Clock', 'Dimmer', 'Auto-off'.
    In 'Set Clock' setup mode, short presses increment digit values (hours, minutes) and long press confirms.
    In 'Dimmer' setup mode, short presses cycles through available brightness levels, long press confirms setting.
    In 'Auto-off' setup mode, short presses toggle the auto-off on and off. With auto-off turned on, the clock displays time for 15 seconds and turn itself into LPM3 sleep mode to converse power. With auto-off turned off, display is on continuously.
    When in sleep mode, MCU goes in power down mode, consuming less than 30uA of power, 32Khz crystal w/ watchdog timer is used to keep time. A pin interrupt is enabled to allow for wake up via tactile button. In this mode the main clock is disabled to conserve power.
    Led segment multiplexing includes time delays to compensate for brightness differences for individual rows.
     
    Breadboard Layout
     
     
    the 8x8 led matrix has dot size of 1.9mm and is of common cathode, if you have common anode type, you can change a few lines in the code for adoption. see the following diagram and see if you have the right pin-outs. it appears they are quite common and if you purchase via ebay most suppliers have the same pin-out even if the model number is different.
     



       +=====================================================+
       |  .  .  +-------------------(1)------------(1) .  .  |
       |  .  .  |  .  .  .  o||o (2)------------------+.  .  | (crystal)
       |  .  ./ |  .  . \.  +--+--+--+--+--+--+--+  . |.  .  |
       |  . (+) |  .  .  o C7 C6 R1 C0 R3 C5 C3 R0  . |.  .  | (2xLR44 cell)
       |  .  .\ |  .  . /.  |    b2 b3           |  . |.  .  |
       |  . (+) |        +--+--+--+--+--+--+--+--+--+ |.  .  |
       |     |  |       |G b6 b7  T  R a7 a6 b5 b4 b3||      |
       |     |  |       |                            ||      | (msp430 mcu)
       |     |  |       |+ a0 a1 a2 a3 a4 a5 b0 b1 b2||      |
       |  .  | (1) .  . .+--+--+--+--+--+--+--+--+--+ |.  .  |
       |  .  +----------(+) +--+--+--+--+--+--+--+ (2)+.  .  | (8x8 red led matrix)
       |  .  .  .  .  .  .  R4 R6 C1 C2 R7 C4 R5 R2 .  .  .  |
       |  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  |
       |  .  . (1)-[  ]-(+) .  .  .  .  .  .  .  .  .  .  .  | (tactile button)
       |  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  |
       +=====================================================+


       *note: all (1)s, (2)s and (+) points are electrically connected


    Schematic
     


                                MSP430G2xxx
                             -----------------
              --------------|RESET            |
              | ------------|TEST             |
              | |           |                 |
              | |   ROW5 <--|P2.0         P1.0|--> ROW4 (of LED Matrix)
     /|\      | |   ROW2 <--|P2.1         P1.1|--> ROW6
      |  _|_  | --- ROW1 <--|P2.2         P1.2|--> COL1
      --o   o------ COL0 <--|P2.3         P1.3|--> COL2
        Button      ROW0 <--|P2.4         P1.4|--> ROW7
                    COL3 <--|P2.5         P1.5|--> COL4
          32Khz /-- COL7 <--|P2.6(XIN)    P1.6|--> COL5
        Crystal \-- COL6 <--|P2.7(XOUT)   P1.7|--> ROW3
                            |                 |

    Assembling
    Follow breadboard layout and place two jumper wires on mini breadboard
    Place msp430g2432 mcu
    Place 32Khz crystal
    Place Tactile Button
    Place power source (I am using 2xLR44 w/ magnets as holders)
    Finally place 8x8 led matrix on top of msp430g2432
    /EDIT match clock mode description w/ photos, current build is on G2432, G2452,G2553, etc will also work.
  7. Like
    GastonP reacted to Druzyek in RPN Scientific Calculator   
    Overview
    This is a scientific calculator I built that uses RPN notation. Features:
    BCD number format with 1-255 places Internal accuracy configurable from 6 to 32 decimal places Two separate 200 level stacks Optional scientific notation Functions: (a)sin, (a)cos, (a)tan, y^x, x root y, e^x, ln, 10^x, log, mod 20x4 character LCD 42 buttons The source code is available on https://github.com/druzyek/RPN_Calculator.
     

     
    Software
    The interface shows 4 levels of the stack, similar to some HP calculators. While I was writing the code for BCD calculations, I used a console program to test the routines. You can download it from GitHub if you want to test out the functionality: rpnmain_pc.c It will compile for Windows if #WINDOWS is defined or for Linux with the ncurses library if #LINUX is defined.
    On Windows: gcc -o rpncalc.exe rpnmain_pc.c On Linux: gcc -lncurses -o rpncalc rpnmain_pc.c Numbers are stored in unpacked BCD format on an external SRAM chip. I wanted to access this memory using variables but there is no convenient way to do this since every variable requires a function to access it. A simple functions like:
    X+=Y*Z-Q; would become something like this (assuming we are passing pointers):
    RAM_Write(X,RAM_Read(X)+(RAM_Read(Y)*RAM_Read(Z)-RAM_Read(Q)); To simplify things, I wrote a preprocessor program that looks for any variables that need to be stored in external RAM and converts access to them to function calls. External variables are all stored as pointers, so the PC version will work exactly the same with or without the preprocessor. To mark variables as external, #pragma directives are used. These are usually ignored by the compiler if they are not recognized, so they are a convenient way to communicate with the preprocessor. Here is an example:
    //Before processing void puts(unsigned char *msg) { #pragma MM_VAR msg for (int i=0;msg[i];i++) putchar(msg[i]); } int main() { #pragma MM_OFFSET 200 #pragma MM_DECLARE unsigned char text1[30]; unsigned char text2[30]; #pragma MM_END text1[0]='A'; text1[1]=0; puts(text1); } //After processing void puts(unsigned char *msg) { #pragma MM_VAR msg for (int i=0;RAM_Read(msg+i);i++) putchar(RAM_Read(msg+i)); } int main() { #pragma MM_OFFSET 200 #pragma MM_DECLARE unsigned char *text1=(unsigned char*)200; unsigned char *text2=(unsigned char*)230; #pragma MM_END RAM_Write(text1+0,'A'); RAM_Write(text1+1,0); puts(text1); } The trig and log functions are computed using CORDIC routines. This is a very efficient way to compute these functions for processors that cannot multiply or divide quickly. Instead, a lookup table is used with adds and shifts, which are much faster. I was able to speed the shifting up even more by using another lookup table that let me right shift 4 digits at a time. One way to measure the accuracy of calculations is with the calculator forensic found here: http://www.rskey.org/~mwsebastian/miscprj/forensics.htm. After setting accuracy to 24 places arcsin(arccos(arctan(tan(cos(sin(9)))))) evaluates to this:

     
    The settings page allows the accuracy to be set from 6 to 32 decimal places. With the default of 12, trig functions calculate in about a second. With 32 decimal places calculations take 3-4 seconds. After setting the accuracy, the program finds the largest element in the CORDIC table that is still significant, so that no time is wasted on elements that have no effect on the answer. The settings page also shows the current battery charge.

     
    When I began this project I wasn't sure how much I could fit into 16kB of firmware space. In the end it grew bigger than this and I had to use two MSP430s to hold everything. Part of this is due to all of the functions used to access external memory. The interface code also added a lot more to the size than I expected but I was able to add checks for most of the functions and add some meaningful error messages.

     
    Hardware
    My design uses two MSP430G2553s connected over UART. One of them (the master) reads the keyboard matrix, updates the LCD, and manages the interface. The other is connected to the data lines of 128k of parallel SRAM and does all of the calculating. The address lines of the SRAM are driven by two 74HC595 shift registers controlled by the second MSP430. The 17th address pin is controlled by the first MSP430 and allows the program to switch between two separate stacks. Here is the schematic: 

     
    The keypad is formed from 42 tactile buttons arranged in a 6x7 matrix and read with a 74HC165 shift register by the master MSP430. The LCD and keyboard share the same pins since they are never used at the same time. Here is the layout of the keys.

     
    The LCD is an HD44780 compatible 20x4 character LCD. It is rated for 5v but the logic works fine at 3.6v. The contrast needs to be close to 5v for anything to show up on the screen, so I used a 555 timer and some diodes to supply around -1.2v to the contrast pin. The result is very solid and clear.
     
    The calculator runs on four AA batteries regulated by an LM1117 configured to supply around 3.5 volts. To run at 16MHz the MSP430s need at least 3.3 volts. The wiggle room between the two voltages will let me see when the batteries are starting to wear down. By the time the voltage gets down to 3.3v, the batteries will be down to 1.15v or so, which can be considered dead.
     
    The PCB is made from perfboard. The top of the board contains female headers so that the keyboard and LCD can be unplugged. Part of the board had to be cut away so that it will fit in the case with the batteries. Although it is quite small, I ended up using over three meters of wire.

     
    The case is soldered out of copper clad. I used a lot of solder on it and it feels very sturdy. I will give it a coat of paint tomorrow before assembling everything.

  8. Like
    GastonP reacted to abecedarian in Redneck Train Track Switcher With A Launchpad   
    So, you can program the MSP to switch at the wrong time and cause a major derailment and spillage of hundreds of micrograms of nontoxic waste?
     
    Danged frogs.
  9. Like
    GastonP reacted to bluehash in Redneck Train Track Switcher With A Launchpad   
    So I bought a Lionel Penn Flyer set on Craigslist last year. Yeaay!
    It came with an extra Fastrack track set with manual track changers - Awesome! This year while assembling it, I thought to spice it up a little. I already had a servo lying around. So:
     
    Servo+Launchpad+Energia+Mechanic's wire = Track switcher!
    Took me 10 minutes to put together.The Launchpad button S2 switches the track. Hehe .
     
    Proof:
     

  10. Like
    GastonP reacted to t0mpr1c3 in Chronos and Fraunchpad on offer for the holidays!!!   
    If you needed an excuse to get a Fraunchpad...
     
    Cypress AN87352 describes the advantages of F-RAM
  11. Like
    GastonP reacted to abecedarian in Chronos and Fraunchpad on offer for the holidays!!!   
    Ignore my rant. The watch arrived and the account was charged. I wish they'd use proper language when describing the process.
     
     
     
    Having said that, my wife, I can confirm... she is a closet nerd.
     
    She had no interest in my Chronos at all, though she borrowed it occasionally.
    Now that she has one of her own she's been all over the TI wiki for it and such.
     
    The biggest issue now, is that for her to program it, she has to learn C.
    And when I say she has to learn C, she says "See what?"
  12. Like
    GastonP got a reaction from pine in Chronos and Fraunchpad on offer for the holidays!!!   
    Hey all!
       I have received an email from the Official MSP430 Blog where they announce a Holidays offer. They are taking 54% off the regular price for just this last two weeks of the year!!!
     
    So if you always wanted a Chronos or a Fraunchpad and the price tag was your restraint... now you have no more excuses. Woohoo!!!
     
    http://e2e.ti.com/blogs_/b/msp430blog/archive/2013/12/17/get-a-chronos-for-christmas-or-an-fram-experimenter-39-s-board.aspx
     
    I just bought my very first Fraunchpad, and the discount code works... and I'm feeling tempted to get another Chronos... mmmmmmmmm
     
    Gast
  13. Like
    GastonP reacted to abecedarian in Chronos and Fraunchpad on offer for the holidays!!!   
    Problem with that is that if I did that, I'd have to turn the whole kitchen into a mechanized, 'scan the bar code and open the can', get the plates out, fire the stove / oven / microwave, set the dinner table type affair. Once she gets something that makes things easier, everything has to be easier.

     
    Yes, a mixed blessing....
  14. Like
    GastonP got a reaction from Automate in Chronos and Fraunchpad on offer for the holidays!!!   
    Hey all!
       I have received an email from the Official MSP430 Blog where they announce a Holidays offer. They are taking 54% off the regular price for just this last two weeks of the year!!!
     
    So if you always wanted a Chronos or a Fraunchpad and the price tag was your restraint... now you have no more excuses. Woohoo!!!
     
    http://e2e.ti.com/blogs_/b/msp430blog/archive/2013/12/17/get-a-chronos-for-christmas-or-an-fram-experimenter-39-s-board.aspx
     
    I just bought my very first Fraunchpad, and the discount code works... and I'm feeling tempted to get another Chronos... mmmmmmmmm
     
    Gast
  15. Like
    GastonP reacted to abecedarian in Chronos and Fraunchpad on offer for the holidays!!!   
    My wife asked for two things for Christmas: an electric can opener and a watch. Since TI doesn't make can openers....


    Hmm... msp430 can opener?
  16. Like
    GastonP got a reaction from abecedarian in Chronos and Fraunchpad on offer for the holidays!!!   
    Just replace a haptic angular motor by a hefty regular motor and you are good to go...
  17. Like
    GastonP got a reaction from bluehash in Chronos and Fraunchpad on offer for the holidays!!!   
    Hey all!
       I have received an email from the Official MSP430 Blog where they announce a Holidays offer. They are taking 54% off the regular price for just this last two weeks of the year!!!
     
    So if you always wanted a Chronos or a Fraunchpad and the price tag was your restraint... now you have no more excuses. Woohoo!!!
     
    http://e2e.ti.com/blogs_/b/msp430blog/archive/2013/12/17/get-a-chronos-for-christmas-or-an-fram-experimenter-39-s-board.aspx
     
    I just bought my very first Fraunchpad, and the discount code works... and I'm feeling tempted to get another Chronos... mmmmmmmmm
     
    Gast
  18. Like
    GastonP got a reaction from abecedarian in Chronos and Fraunchpad on offer for the holidays!!!   
    Hey all!
       I have received an email from the Official MSP430 Blog where they announce a Holidays offer. They are taking 54% off the regular price for just this last two weeks of the year!!!
     
    So if you always wanted a Chronos or a Fraunchpad and the price tag was your restraint... now you have no more excuses. Woohoo!!!
     
    http://e2e.ti.com/blogs_/b/msp430blog/archive/2013/12/17/get-a-chronos-for-christmas-or-an-fram-experimenter-39-s-board.aspx
     
    I just bought my very first Fraunchpad, and the discount code works... and I'm feeling tempted to get another Chronos... mmmmmmmmm
     
    Gast
  19. Like
    GastonP reacted to keithq in MSP430TCH5E HAPTOUCH is available   
    No, the SBW are not brought out to the BP interface, only the JTAG interface -- and here's the deal with that.  Initially this BP was supposed to be emulated from the G2 LP's emulator.  You'd remove the G2's target G2553 and attach the BP.  Unfortunately the G2's emulator doesn't support the MSP430TCH5E, and there's no good way to change that.  And so, the FET tool JTAG header got added. 
     
    If you don't already have a FET tool, this is added expense for you.  (Although the upside is that having dedicated, simultaneous emulators made things much easier to debug.)  
     
    If you don't want to buy a FET tool, what I would suggest is getting a F5529 LP to emulate it.  Theoretically this is supposed to work.  The EZ-FET Lite emulator on the F5529LP is open source, and thus expandable to the MSP430TCH5E (whereas the G2's is not).  You can jumper wire from the emulator header block to the JTAG header.  I wish I could give more specific guidance, but I haven't yet been through the exercise of modifying the F5529 LP emulator's software. 
     
    Or you can just drive haptics by sending serial commands to the MSP430TCH5E from the G2, treating it like a fixed-function device. 
  20. Like
    GastonP got a reaction from bluehash in MSP430TCH5E HAPTOUCH is available   
    Hi all,
       I have seen that the MSP430TCH5E HAPTOUCH Boosterpack is already available. Through Element 14, and not from TI eStore, but it is what it is.
     
    http://www.ti.com/devnet/docs/catalog/thirdpartydevtoolfolder.tsp?actionPerformed=productFolder&productId=17680
     
    Sorry for not putting it in the blog but either I'm too stupid to get a simple sum, or the captcha code is not working.
     
    Gast
  21. Like
    GastonP got a reaction from cubeberg in MSP430TCH5E HAPTOUCH is available   
    Hi all,
       I have seen that the MSP430TCH5E HAPTOUCH Boosterpack is already available. Through Element 14, and not from TI eStore, but it is what it is.
     
    http://www.ti.com/devnet/docs/catalog/thirdpartydevtoolfolder.tsp?actionPerformed=productFolder&productId=17680
     
    Sorry for not putting it in the blog but either I'm too stupid to get a simple sum, or the captcha code is not working.
     
    Gast
  22. Like
    GastonP reacted to VMM in Another 430 Watch   
    Well, it's up and running.  All the hardware seems to check out.  Display and accelerometer are playing nice on a shared spi bus.  The FR5738 RTC is keeping time.  LIS3DH initialized and generating interrupts properly.  Lots of programming to do now for the interface, calibrations, etc.

  23. Like
    GastonP got a reaction from bluehash in Iron Man Halloween project   
    Hey Bluehash... yes I did... but isn't thread resurrection a scary thing too?
    Now jokes aside, as you referenced it in the main Halloween Contest thread, I thought that someone interested in the project could use some additional ideas...
  24. Like
    GastonP got a reaction from bluehash in [S]IV-18 VFD Clock Booster Pack   
    Guys, just found a little typo in the library:
     
    http://doc.43oh.com/BoosterPack:IV-18_VFD_Clock
     
    Where it says:
    Your Launchpad should have shipped with a 13.768kHz crystal.
     
    Should say:
    Your Launchpad should have shipped with a 32.768kHz crystal.
     
    Nothing to be very fussy about, but it could mess up someone's ideas
  25. Like
    GastonP got a reaction from GeekDoc in TI Back to School Promotion   
    IMO, it's probably not all a matter of the watches being old stock, but of the experimental nature of them. I am having some trouble with mine too, but most of them I can assign to faulty firmware. The battery does not charge unless I reset the watch with the clip on, sometimes the response time to the middle button is not really great, and other small grievances, but I have been warned in advance and I was expecting to find that kind of issues so all well.
     
    My batteries don't seem to last more than two days and that could really be a problem of old stock, but I see it as nothing but the opportunity to pry the watch open . As I told you in another post, it's probable that the battery is not very complicated to get.
     
    The OLED displays... there is no reason to assume that they have "decayed" with time. They would have not as long life as a normal led or even LCDs, but that would be only with continuous operation. And also, this are not the OLEDs of 2005... (this are not the OLEDs you are looking for ) sorry, I couldn't resist the temptation. 
     
    To me, for 50 USD (plus 50% local taxes), it is worth the money. I really don't like the all digital smartwatches, and of course I wouldn't even dream of shelling out ~150 USD to buy one of them. And I like the looks of it
×
×
  • Create New...