Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


Reputation Activity

  1. Like
    dubnet reacted to mph in Bosch Sensortech BME280   
    The Bosch BME280 pressure-temperature-humidity sensor is very popular for projects because there are breakout boards available from Adafruit and Sparkfun as well as a large library of code to interface it to Arduino MCUs. Not so much for the MSP430, especially transparent code to understand what is happening at the register level. I have written and tested some demo C-code that hopefully fills that gap. It sacrifices generality and efficiency for compactness and transparency.
    I use the F5529 Launchpad and communication with the sensor is via SPI using the UCB0 module.  I2C is also available for the BME280 but not implemented here. Temperature and relative humidity (no pressure) data is obtained using the forced mode with periodic polling by the MSP430.  Sensor and MCU are in low-power sleep modes when not active. Data is streamed to a terminal program that is interfaced to the Launchpad via serial UART. Each BME280 has unique trimming parameters that must be retrieved and properly parsed to convert the raw data. This process is quite complicated, so separate functions were developed to handle them and placed in an include library.  
    My IDE is CCS 6.1.3 with nofloat printf support. This code should work directly in the MSP430x5xx and MSP430x6xx families. Other MSP430 series such as FR and value-line will need to make appropriate module/register modifications.  Link to github is here:
  2. Like
    dubnet reacted to mph in TI HDC2010 temp-humidity sensor   
    There is code available to implement I2C communication between the MSP430 and the HDC2010 temperature-humidity sensor, but it's a bit like an onion -- you have to peel away layer after layer in various libraries to drill down into what is happening at the register level.  I decided to write some transparent demo code for this sensor that is self-contained: everything related to the I2C interface is in a single C program.  It has been successfully tested with the F5529 Launchpad.  This is a simple MCU polling operation that periodically makes a T-H measurement using the on-demand mode of the sensor. The data is sent to the serial port for display on a terminal program.  The on-board heater is activated for a few seconds upon reset. I have not implemented the temperature-humidity high/low interrupts. One could also configure the sensor to output data periodically and toggle its DRDY pin to wake-up the MCU from LPM4.  Polling code is here:
    The HDC2010 is a tiny sensor with a 6-bump BGA footprint.  TI makes an evaluation module that uses an MSP430F5528 to interface the sensor with a configuration/graphing GUI program.  Their program only runs on 64-bit Windows.  The portion of the PCB hardware containing the sensor can be broken off (permanently) to reduce thermal mass and allow placement in a project.  I decided to make my own breakout boards (see photo), but just learned that MikroElektronika started selling essentially the same thing for $13 (MIKROE-2937).

  3. Like
    dubnet reacted to mph in Sensirion SHTC3 temperature-humidity sensor   
    Sensirion has recently introduced an inexpensive, low-power temperature humidity sensor SHTC3 designed for operation in the range 1.62--3.6V .  It should be a useful peripheral for MSP430 battery-powered applications.  I have tested 3 sensors with the F5529 Launchpad and they exhibit reliable, consistent behavior.  For reference, I have written some demo code for I2C communication that is available on github:
    The SHTC3 comes in a small DFN package, so to do breadboard testing I had to build my own breakout boards and use reflow soldering (see photo).

  4. Like
    dubnet got a reaction from bluehash in Atomo Modular Electronics System - Raspberry-pi   
    Gave me a S-100 flashback.....
  5. Like
    dubnet reacted to bluehash in Atomo Modular Electronics System - Raspberry-pi   
    Cool concept to adding boards to the Raspberry Pi.
    Atomo is a complete system for building electronic things with four parts: Control, IO, Power, and Connector. 
  6. Like
    dubnet reacted to bluehash in Arrow - Free Raspberry Pi 3 or 3+ when spend $50+   
    Use code 50PI at checkout to receive this limited time offer.
    Promo code is valid for one (1) free Raspberry Pi 3 Model B+ or Raspberry Pi 3 Model B with all Arrow.com purchases of $50 or more after the discount has been applied (before taxes/fees). MyArrow customers are eligible for this promotion for purchases made on arrow.com only, so long as there are no specially priced items in their cart. Promo code cannot be combined with any other codes, but can be added onto any free shipping promotions automatically applied at checkout. Discount does not apply to purchases made on www.arrow.com/MyArrow and purchases made on components.arrow.com. Promo code may only be redeemed 3 times per customer per promotion period. Limit ten (10) Raspberry Pi 3 Model B or Raspberry Pi 3 Model B+ boards per order. Customers are responsible for any duties and taxes that may apply on international shipments. Arrow reserves the right to end this promotion at any time without notice. Offer valid for a limited time only and while supplies last.
  7. Like
    dubnet reacted to zeke in One Wire Controller booster   
    IT'S ALIVE!!!!
    I have 104 ds18b20 sensors wired into my board and it is reading them all.
    I am celebrating! WOO HOO!
    Now it's time to crush an mqtt server!

  8. Like
    dubnet reacted to zeke in The Marquee Clock   
    Back in December 2016, I had a hard disk failure and I lost my firmware and hardware design files for this project. It was a sad day when I discovered this.
    I have since rewritten the firmware and it is much better this time. I am so happy that it is sporting a proper command line interface now. No more single letter chicken-pecking commands.
    I have also recaptured the schematics and pcb layouts for the ring pcb and the cpu pcb. The power supply design is a lost cause because I couldn't figure out what TI bucking power supply chip that I used in the first design. Oh well. What are you going to do?
    This time around, I will be redesigning the cpu board to include a few more features that I think are necessary. 
    CdS light sensor to automatically dim the LEDs in a dark room. BQ32000 RTC IC to preserve the time even through the loss of power. ADC monitoring of the power supply rails to determine if the main power has been lost. Maybe put in an LM386 and speaker so the clock can finally sing Happy Birthday to my daughter on her actual birthday. I know this is just another clock but it is very gratifying to see something come to life from my imagination. So I am going to keep plugging away on it.
  9. Thanks
    dubnet reacted to jazz in Upload firmware code using Energia   
    This is device without SBW support, so firmware can be uploaded only by master device that support full JTAG connection (TI MSP-FET or MSP-FET430UIF), not by Launchpads. This device is with UART BSL, but AFAIK Energia  (by default) doesn't support this. However, if you are fine with using BSL, than customized command line for flashing, for TI BSL_Scripter can be inserted inside Energia, and firmware can be uploaded by IDE button. I explained similar thing here...
  10. Thanks
    dubnet got a reaction from Fmilburn in MSP430F149 Board   
    @Fmilburn  Thanks for the feedback.  I did a little bit of research on the tradeoffs between the two methods, both from a readability standpoint and a performance standpoint.  It wins on the readability and can be faster executing in many cases than the if/then approach.  I will "switch"   the code the next time I work on it. 
  11. Like
    dubnet reacted to Fmilburn in MSP430F149 Board   
    HI @dubnet
    It looks like you had fun with that .  The code is easy to read and looks good to me.  You can try using a switch statement in the ISR - something like this:
    //----------------------- G P I O _ P O R T 1 _ I S R ------------------------ #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__) #pragma vector=PORT1_VECTOR __interrupt #elif defined(__GNUC__) __attribute__((interrupt(PORT1_VECTOR))) #endif void GPIO_PORT1_ISR(void) { switch(P1IV) { case 0: break; //no interrupt pending case 2: break; //P1.0 case 4: break; //P1.1 case 6: //P1.2 GPIO_toggleOutputOnPin(RED_LED); break; case 8: //P1.3 GPIO_toggleOutputOnPin(GREEN_LED); break; case 10: break; //P1.4 case 12: break; //P1.5 case 14: break; //P1.6 case 16: break; //P1.7 default: break; //should not get here } } The TI examples in their MSP430 training videos use this approach.
  12. Thanks
    dubnet got a reaction from Fmilburn in MSP430F149 Board   
    A while back @omnicron generously offered up some surplus boards sporting a MSP430F149 and a good mix of conditioned I/O on the board including a couple of 5.8psi pressure transducers.  I feel that this, along with the programming header on the board, makes it a good all-around board for general purpose projects. The board also supports a standby NiMH battery (6v, 1800mAh) with charging/discharging capability and voltage monitoring all controlled by the MCU.  The battery switches in via a relay upon primary power loss. One of the pushbuttons is configured in hardware to be used as a soft power on/off and requires just a little bit of code to work.
    One of the concerns upon getting the board is that, even though it has a programming header, the fuse may have been blown to protect the original code.  With the fuse setup on the MSP430F149 that would be a show stopper and the board would have been a paper weight. Thankfully, when I connected my MSP-FET I was able to talk to the MCU as well as program it.
    So what does one do when presented with a new piece of hardware?  Write code to flash LEDs and exercise the hardware, of course.  Since I wanted to make this a general purpose, “throw it at a project” kind of board, I wanted to write some functions to simplify the main program code.  So far I have routines for digital I/O, analog in, chip temperature and a function to display a binary result on the eight LEDs on the board.
    One downside to the way this particular board was designed is the lack of easily accessible serial ports.  One way around this is to solder directly to the MCU pins to utilize the secondary serial ports , but that wasn't very attractive.  Looking at the schematic I found that by removing three passives from each of the two serial lines, I could repurpose what were originally a couple of digital outputs and have a serial port (UART only, no I2C on this MCU).  SPI is also possible using the same technique, but a little more cumbersome to implement. I haven't written the functions for serial yet and will probably wait until I actually need serial I/O.
    The video demonstrates my demo code that utilizes soft power using the switch shown at the bottom left.  Default power up behavior is the 8 LEDs chasing up and down.  The next switch to the right of the power switch toggles the beeper which, when activated, sounds every time the LED furthest to the left (LSB) lights up.  The next switch to the right toggles the speed of the LEDs and the final button displays the chip temp in binary (75 degrees in this case), pauses to allow it to be read and then resumes the LED chasing. There… hardware reasonably exercised.  J
    I have included pictures of the front and back of the board as well as a PDF schematic.
    If you have the inclination I welcome feedback on the code and the resulting opportunity to learn to code more efficiently.
    // Since I used portions of TI’s MSP430ware examples in two functions (chiptemp and analogIN) I am //including the TI copyright notice below: /* --COPYRIGHT--,BSD_EX * Copyright (c) 2012, Texas Instruments Incorporated * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * * Neither the name of Texas Instruments Incorporated nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * ******************************************************************************* * * MSP430 CODE EXAMPLE DISCLAIMER * * MSP430 code examples are self-contained low-level programs that typically * demonstrate a single peripheral function or device feature in a highly * concise manner. For this the code may rely on the device's power-on default * register values and settings such as the clock configuration and care must * be taken when combining code from several examples to avoid potential side * effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware * for an API functional library-approach to peripheral configuration. * * --/COPYRIGHT--*/ #include <msp430.h> #define ana_ch_a 0x01 // Port 6.0, A0 #define ana_ch_b 0x02 // Port 6.1, A1 #define ana_batt 0x03 // Port 6.2, A2 #define ana_9v 0x04 // Port 6.3, A3 #define ON 0x01 #define OFF 0x00 #define LED_1 0x01 // Port 2.0 #define LED_2 0x02 // Port 2.1 #define LED_3 0x03 // Port 2.2 #define LED_4 0x04 // Port 2.3 #define LED_5 0x05 // Port 2.4 #define LED_6 0x06 // Port 2.5 #define LED_7 0x07 // Port 2.6 #define LED_8 0x08 // Port 2.7 #define LED_9 0x09 // Port 3.0 #define LED_10 0x0A // Port 3.1 #define valve_a 0x0B // Port 3.2 #define valve_b 0x0C // Port 3.3 #define pump_a 0x0D // Port 3.4 #define pump_b 0x0E // Port 3.5 #define charge 0x0F // Port 3.6 #define discharge 0x10 // Port 3.7 #define beep 0x11 // Port 4.0 #define chkbatt 0x12 // Port 4.1 #define VCCEN 0x13 // Port 4.2 //array and variables to support functions const int BitValue[8] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80}; unsigned int var1; unsigned int var2; unsigned int var3; unsigned int var4; unsigned int a; unsigned int b; unsigned int c; unsigned int ADCvalue; int long IntDegF; void PostLEDValue (unsigned int Var4); void chiptemp(int long degree_f); void analogIN(unsigned int var3); // values= ana_ch_a/b, ana_batt, ana_9v void digitalWrite(unsigned int var1, unsigned int var2); // values = LED_1-10, valve_a/b, pump_a/b, beep, charge, discharge, chkbatt, VCCEN, and var2 = ON, OFF volatile unsigned int i=0; unsigned int led_count; volatile unsigned int j; unsigned int l=2; unsigned int sw_press = 0; unsigned int beep_status = 0; unsigned int speed = 6000; int long temp; void main() { WDTCTL = WDTPW + WDTHOLD; DCOCTL = DCO0 + DCO1; BCSCTL1 = RSEL0 + RSEL1 + RSEL2; P1DIR |= 0x00; P4DIR |= BIT0 + BIT1 + BIT2; P4OUT |= 0x00; P4OUT |= 0x04; // Set P4.4 to 1 (VCCEN) P2DIR |= BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5 + BIT6 + BIT7; P2OUT &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7); P2OUT |= (BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7)& 0xFF; P3DIR |= BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5 + BIT6 + BIT7; P3OUT &=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7); P3OUT |= (BIT0 + BIT1) & 0xF; P1IES |= 0x00; P1IFG |= 0x00; P1IE |= (BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5 + BIT6 + BIT7); _enable_interrupt(); // MAIN CODE STARTS HERE ---------------------------------------------------------- l=2; do { led_count = 11; do { led_count--; j = speed; // Delay 6000 or 1500 do (j--); while (j != 0); if (led_count == 9){ led_count = 8;} if (led_count == 7){ led_count = 6;} digitalWrite(led_count, ON); } while (led_count != 1); i = 45000; do (i--); while (i != 0); if (sw_press == 3) { // Toggle beep at LSB transistion beep_status ^= 0x01; sw_press = 0; } digitalWrite(beep, beep_status); i = 5000; do (i--); while (i != 0); // Delay 5000 digitalWrite(beep, OFF); if(sw_press == 1) { // Soft Power Down P4OUT ^= 0x04; sw_press = 0;} if (sw_press == 4 && speed == 6000) { //Toggle LED chase speed speed = 1500; sw_press = 0;} if (sw_press == 4 && speed == 1500) { speed = 6000; sw_press = 0;} if (sw_press == 5) { sw_press = 0; chiptemp(0);} led_count = 0; do { led_count++; j = speed; // Delay 6000 or 1500 do (j--); while (j != 0); if (led_count == 7){ led_count = 8;} if (led_count == 9){ led_count = 10;} digitalWrite(led_count, OFF); } while (led_count != 10); i = 50000; do (i--); while (i != 0); // Delay 50000 } while (l != 0); } // MAIN CODE ENDS HERE ------------------------------------------------------------------------------------ #pragma vector=PORT1_VECTOR __interrupt void PORT1_ISR(void){ _disable_interrupt(); if(P1IFG & BIT0) { sw_press = 1; P1IFG &= ~BIT0; } if(P1IFG & BIT1) { sw_press = 2; P1IFG &= ~BIT1; } if(P1IFG & BIT2) { sw_press = 3; P1IFG &= ~BIT2; } if(P1IFG & BIT3) { sw_press = 4; P1IFG &= ~BIT3; } if(P1IFG & BIT4) { sw_press = 5; P1IFG &= ~BIT4;} if(P1IFG & BIT5) { sw_press = 6; P1IFG &= ~BIT5; } if(P1IFG & BIT6) { sw_press = 7; P1IFG &= ~BIT6; } if(P1IFG & BIT7) { sw_press = 8; P1IFG &= ~BIT7; } _enable_interrupt(); } #pragma vector=ADC12_VECTOR __interrupt void ADC12ISR (void) { _disable_interrupt(); temp = ADC12MEM0; _enable_interrupt(); } // FUNCTIONS BEGIN HERE -------------------------------------------------------------------------------------------- void digitalWrite(unsigned int var1, unsigned int var2){ a=0; b=0; c=0; if (var1 <= 0x0A){ //Flip ON/OFF on LED outputs since they are active low. var2 ^= 0x01;} if (var1 >= 0x10 && var1 <= 0x13){ c = (var1-17); if (var2==1){ a=P4OUT; a=a|(BitValue[c]); P4OUT=a;} if (var2==0){ a=P4OUT; b=~(BitValue[c]); P4OUT = (a&b);} } if (var1 >= 0x09 && var1 <= 0x10){ c = (var1-9); if (var2==1){ a=P3OUT; a=a|(BitValue[c]); P3OUT=a;} if (var2==0){ a=P3OUT; b=~(BitValue[c]); P3OUT = (a&b);} } if (var1 >= 0x01 && var1 <= 0x08){ c = (var1-1); if (var2==1){ a=P2OUT; a=a|(BitValue[c]); P2OUT=a;} if (var2==0){ a=P2OUT; b=~(BitValue[c]); P2OUT = (a&b);} } } void chiptemp (long int degree_f) { ADC12CTL0 = SHT0_8 + REFON + ADC12ON; ADC12CTL1 = SHP; ADC12MCTL0 = SREF_1 + INCH_10; ADC12IE = 0x001; ADC12CTL0 |= ENC; ADC12CTL0 |= ADC12SC; i = 5000; do (i--); while (i != 0); IntDegF = (temp - 2519) * 761; IntDegF = IntDegF / 4096; temp = 0; degree_f = IntDegF; PostLEDValue (degree_f); } void PostLEDValue (unsigned int var4){ led_count = 0; do { led_count++; j = 250; do (j--); while (j != 0); // turn off LEDs if (led_count == 7){ led_count = 8;} if (led_count == 9){ led_count = 10;} digitalWrite(led_count, OFF); } while (led_count != 10); if (var4 > 64){ var4 = var4 - 64; digitalWrite(LED_8, ON); } if (var4 > 32) { var4 = var4 - 32; digitalWrite(LED_6, ON); } if (var4 > 16) { var4 = var4 - 16; digitalWrite(LED_5, ON); } if (var4 > 8) { var4 = var4 - 8; digitalWrite(LED_4, ON); } if (var4 > 4) { var4 = var4 - 4; digitalWrite(LED_3, ON); } if (var4 > 2) { var4 = var4 - 2; digitalWrite(LED_2, ON); } if (var4 == 1) { digitalWrite(LED_1, ON); } j = 20; //delay to allow reading of LEDs do { i = 50000; do (i--); while (i != 0); j--; } while (j != 0); } void analogIN (unsigned int var3){ ADC12CTL0 = SHT0_8 + REFON + ADC12ON; ADC12CTL1 = SHP; if (var3==1){ ADC12MCTL0 = SREF_1 + INCH_0; } if (var3==2){ ADC12MCTL0 = SREF_1 + INCH_1; } if (var3==3){ ADC12MCTL0 = SREF_1 + INCH_2; } if (var3==4){ ADC12MCTL0 = SREF_1 + INCH_3; } ADC12MCTL0 = SREF_1 + INCH_10; ADC12IE = 0x001; ADC12CTL0 |= ENC; ADC12CTL0 |= ADC12SC; i = 5000; do (i--); while (i != 0); ADCvalue = (temp/16); PostLEDValue (ADCvalue); } -  

    Circuit Diagram.pdf
  13. Thanks
    dubnet got a reaction from birla in Msp430 software serial error   
    With the 5529 you don't want to use software serial. It isn't necessary as the 5529 has 2 hardware serial ports. if you are doing an include of the software serial library in your code you will want to remove it.
    Also, please only post once. You may also want to post your code with your request for help. It allows folks to better help you.
  14. Like
    dubnet got a reaction from NurseBob in energia software serial with msp430f5529   
    My understanding is that the software serial is only supported in the value line MCUs under energia. However, the 5529 has two hardware serial ports available under energia. I have used both ports on the 5529 with energia in past projects.
  15. Like
    dubnet reacted to NurseBob in Energia Hybrid Code   
    Agreed. I have no idea of the hundreds of hours I saved by using published code snippets in pursuit of both deadlines and laziness.  Interesting that in virtually any other field the "copy/paste" approach could be plagiarism...
    Laziness vs real way vs driverlib/Energia:
    I often adopt "lazy" for initial prototyping - get it to work!
    Then run in a debugger to see what's happening "under the covers." That allows for some analysis regarding efficiency - e.g. battery life (most of my work is not timing dependent, so battery life matters most).
    I started coding on '430 devices using the TI code examples, and still lean towards the "real way" since it helps me see/understand what's happening, when and why.
    An Aside Re: TI code examples and Launchpad  code - There seems to have been little communication between the various developers.  When it come to comms, be it I2C, Serial, USB, working TI examples seem to ALWAYS use different pin/port combinations and ISR handlers.  Once I realized that, I found that search/replace usually allowed porting code example to the launchpads. (FWIW - when it dawned on me that there are two I2C handlers on the F5529, I realized I could code a "loopback" version of their I2C Master/Slave examples in one source code file with a pair of patch wires and a pair of 10K resistors.  Simplifies debugging test code... Next step, add interrupt-driven serial output to those simple I2C loopback routines for the times I don't want to use a logic analyze or scope.)
    Ok, I've digressed.  I find Energia useful for simple proof-of-concept prototypes, and useful after importing to CCS for step-by-step debugging (Note to self: Don't forget to disable serial output when debugging!!!).  I've mostly abandoned the driverlib approach; honestly, I find it way too obscure AND in most instances, it avoids lowpower modes, using "while true" loops which can play havoc with both power management as well as handling communication problems - the apps tend to hang in a forever loop...
    BTW - great link to the MOOC - something to explore in the coming months. I can always use more structure...
  16. Like
    dubnet reacted to NurseBob in MSP430F5529 USB HID Example for Energia   
    I doubt you'll find any Energia USB-CDC examples.  For a USB SDK look at the MSP430Ware for the tools you will need. In addition to sample code for a CDC device, there's a primitive Java app that will give you a place to start for MSP430F55xx -> PC communication via USB.  I was able to convert one of the HID sample apps in conjunction with the supplied JAVA libs into a data capture app that interfaces at up to 1 KHz (on a good day, heading downhill with a tailwind). For my app, CDC was not an appropriate choice.
  17. Like
    dubnet reacted to Valerieflyer in Hello from Fort Worth, Texas   
    Just getting back into the microcontroller development aren.  In the nineties I got very familiar with the Intel 8751 all programming in assembly.  Times have changed!  A lot is easier now, but learning the new IDE and knocking the rust off my C programming.  We picked the MSP430 for the low power consumption.  Like others I had a little trouble getting Energia running but now no problems.  First project completed was a remote oxygen pressure monitor for the airplane.  We have also connected the LIS3DH accelerometer and have it working well.  I haven't figured out exactly how to import, modify arduino libraries yet so I just wrote directly to the chip following the data sheet.  No problems with the I2C.  Looking forward to more MSP430 projects.
  18. Like
    dubnet got a reaction from ConfusedCoder in MSP430F5529 LPM Questions   
    it would appear to be so. If you have the 5529 Launchpad it would easy to confirm.
  19. Like
    dubnet got a reaction from ConfusedCoder in MSP430F5529 LPM Questions   
    You would need to take a look at the documentation for the F5529 to verify that it can be awakened with a GPIO interrupt.  In a very deep sleep, IIRC, the list of available interrupt sources gets shorter.  So if LPM4.5 supports a GPIO transition as a wakeup source you should be good to go.
  20. Like
    dubnet reacted to Fmilburn in Serial Port Problem   
    Sometimes it is easier to use a separate MSP430 LaunchPad with eZ-FET to flash the G2.  I have a MSP430F5529 set up with jumpers to do this and use it on custom boards and the G2 LaunchPad alike.  The emulator on the G2 LaunchPad is just flaky at times.
  21. Like
    dubnet got a reaction from Fmilburn in MSP430F5529LP   
    First of all, welcome to the forum.
    If I remember correctly, the software serial library isn't supported on the F5529, only on the lower end G2 parts without built in hardware serial.  However, it shouldn't be needed as the 5529 has two hardware serial ports. The second serial port would be referred to as Serial1 (e.g. "Serial1.begin" as opposed to the first serial port "Serial.begin").  Refer to the pin outs on energia.nu for the correct pins for each port.
  22. Like
    dubnet reacted to NurseBob in MSP430F5529LP   
    Of course, as I look at the code now, I see that the simple solution would be to use Serial and, as you note, attach to the correct pins (P3.3,P3.4).  I built my system before Energia 18... Time to go back and refactor!!!
    I went and looked at my current code: It uses Serial...
  23. Like
    dubnet got a reaction from NurseBob in MSP430F5529LP   
    First of all, welcome to the forum.
    If I remember correctly, the software serial library isn't supported on the F5529, only on the lower end G2 parts without built in hardware serial.  However, it shouldn't be needed as the 5529 has two hardware serial ports. The second serial port would be referred to as Serial1 (e.g. "Serial1.begin" as opposed to the first serial port "Serial.begin").  Refer to the pin outs on energia.nu for the correct pins for each port.
  24. Like
    dubnet got a reaction from NurseBob in Current too high in LPM3; what am I missing?   
    @NurseBob   Not familiar with that one, but they do have an infinite bag of tricks.
    A memorable experience was when I was young.... I stayed over at friend's house in Southern California and slept on a pull out couch sofa bed. They had a cat with a bell on it's collar.  The room was fairly dark but I could hear the cat moving about the room, and then silence.  The cat would then launch from his perch on the back of the couch and land on my head or body.  I would shoo him off and the process would repeat, until I determined he was having far more fun than I was and wouldn't quit this game any time soon,  At that point I prevailed upon my friend to put the cat on lockdown for the night.
  25. Like
    dubnet reacted to NurseBob in Current too high in LPM3; what am I missing?   
    The "midnight weave" is the nudging head bumps in and about the ankles while walking. In the dark it can be disconcerting, to say the least...
    As to memories: When I was about 12, more than five decades back, I lived on a rural patch of land in what is now a wealthy community in the SF East Bay.  One sight I still remember is one of our cats perched on the top of a fence, and as our collie mix wandered by, the cat decided that he could use the dog as a landing zone, being about half the distance to the ground.  When he landed, the dog bolted and the cat deployed and planted his claws to hang on.  So, much like a rodeo cowboy, he's hanging on for dear life as the dog is galloping down the driveway...  A sight to remember.
  • Create New...