Jump to content

Search the Community

Showing results for tags 'MSP430G2553'.

More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • News
    • Announcements
    • Suggestions
    • New users say Hi!
  • Spotlight!
    • Sponsor Spotlight
    • Sponsor Giveaways
  • Energia
    • Energia - MSP
    • Energia - TivaC/CC3XXX
    • Energia - C2000
    • Energia Libraries
  • MSP Technical Forums
    • General
    • Compilers and IDEs
    • Development Kits
    • Programmers and Debuggers
    • Code vault
    • Projects
    • Booster Packs
    • Energia
  • Tiva-C, Hercules, CCXXXX ARM Technical Forums
    • General
    • SensorTag
    • Tiva-C, Hercules, CC3XXX Launchpad Booster Packs
    • Code Vault
    • Projects
    • Compilers and IDEs
    • Development Kits and Custom Boards
  • Beagle ARM Cortex A8 Technical Forums
    • General
    • Code Snippets and Scripts
    • Cases, Capes and Plugin Boards
    • Projects
  • General Electronics Forum
    • General Electronics
    • Other Microcontrollers
  • Connect
    • Embedded Systems/Test Equipment Deals
    • Buy, Trade and Sell
    • The 43oh Store
    • Community Projects
    • Fireside Chat
  • C2000 Technical Forums
    • General
    • Development Kits
    • Code Vault
    • Projects
    • BoosterPacks


There are no results to display.

Find results in...

Find results that contain...

Date Created

  • Start


Last Updated

  • Start


Filter by number of...


  • Start



Website URL





Found 132 results

  1. I'm trying to create a toggle button but the code is not working. The code is as shown below: #include <msp430g2553.h> int main(void) { WDTCTL = WDTPW + WDTHOLD; // stop watchdog timer P1DIR &= ~BIT3; //P1.3 i/p P1REN |= BIT3; //P1.3 enable pullup resistor P1IES |= BIT3; //P1.3 high to low transition P1IFG &= ~BIT3; //P1.3 clear interrupt flag P1IE |= BIT3; //enable P1.3 interrupt P1DIR |= BIT0; //P1.0 o/p P1OUT &= ~BIT0; //clear P1.0 _BIS_SR(LPM0_bits + GIE); //enter LPM0 with interrupts enabled } #pragma vector = PORT1_VECTOR __interrupt void Port1(void) { P1IFG &= ~BIT3; //clear P1IFG P1OUT ^= BIT0; //toggle LED at P1.0 } Please let me know why it is not working. I am using MS430G2553 launchpad kit. Thanks!
  2. I have been trying to interface DHT11 sensor with MSP430G2553. But I always end up getting a checksum error. I have attched the code and the library I am using. My sensor is the normal one with 4 pins coming out of it. I connect pin1 to Vcc(3.3V), pin2 to data pin(P1_3) and pin4 to GND. Please help. #include <dht.h> dht DHT; #define DHT11_PIN 5 void setup() { Serial.begin(9600); Serial.println("DHT TEST PROGRAM "); Serial.print("LIBRARY VERSION: "); Serial.println(DHT_LIB_VERSION); Serial.println(); Serial.println("Type,\tstatus,\tHumidity (%),\tTemperature (C)"); } void loop() { // READ DATA Serial.print("DHT11, \t"); int chk = DHT.read11(DHT11_PIN); switch (chk) { case DHTLIB_OK: Serial.print("OK,\t"); break; case DHTLIB_ERROR_CHECKSUM: Serial.print("Checksum error,\t"); break; case DHTLIB_ERROR_TIMEOUT: Serial.print("Time out error,\t"); break; default: Serial.print("Unknown error,\t"); break; } // DISPLAY DATA Serial.print(DHT.humidity, 1); Serial.print(",\t"); Serial.println(DHT.temperature, 1); delay(2000); } // // END OF FILE dht.zip
  3. sendiptangshu

    SoftwareSerial Communication Issues

    I am trying to establish SoftwareSerial Communication between 2 msp430g2553 units. I have connected them as follows: GND to GND, RX to TX and vice versa. MSP1: P1_5, P1_7 //Rx,Tx MSP2: P1_5, P1_7//Rx, Tx , I hope the connection is all right. Now, I want to send a byte from one mcu to the other for which I write the following code: Send function: void sendrequest(){ byte option = 1; mySerial.write(option); delay(2); return; } void loop() { // put your main code here, to run repeatedly: if(mySerial.available()>0){ checkiffalsesignal(); delay(10000); } } void checkiffalsesignal(){ byte a = mySerial.read(); if(a==1)Serial.println("Low Budget"); else if(a==2)Serial.println("High Budget"); else Serial.println("False Signal"); delay(2); return; } The second one is the receive function. But, I either receive nothing on the serial monitor or sometimes, I receive a "False Signal" message. Where is the fault?
  4. sendiptangshu

    HDC1080 with MSP430G2553

    I had a HDC1080 EVM. I read that the back end of the evm can be broken off from the perforation and used as a standalone sensor on a micro-controller. I tried to interface it with the MSP430G2553. I have done the following with no avail: 1) the jumper on P1.6 has been removed(no interference of led with SCL line) 2) I have tried using pullup resistors on both the SCL and SDA lines. I have tried out with the standard 4.7k resistors and also with 10k resistors. 3) I always get a temperature value of -40 degree C and humidity of 0%, which means that the MSP is not able to get the readings through. 4) I am using the Wire library on Energia1.6.10E18 and I followed TI's tutorial video on how to implement HDC1080 on Arduino. Here's the link ( ) Here's my code: ? #include <Wire.h> void setup() { // put your setup code here, to run once: Serial.begin(9600); Wire.begin(); //Wire.setModule(); Wire.beginTransmission(0x40); Wire.write(0x02); Wire.write(0x90); Wire.write(0x00); Wire.endTransmission(); delay(20); } void loop() { // put your main code here, to run repeatedly: double temperature; double humidity; humidity = readSensor(&temperature); Serial.println(temperature); Serial.println(humidity); delay(1000); } double readSensor(double* temperature){ uint8_t Byte[4]; int value; uint16_t temp; uint16_t humidity; Wire.beginTransmission(0x40); Wire.write(0x00); Wire.endTransmission(); delay(20); Wire.requestFrom(0x40,4); if(4<=Wire.available()) { Byte[0]=Wire.read(); Byte[1]=Wire.read(); Byte[3]=Wire.read(); Byte[4]=Wire.read(); temp = (((unsigned int)Byte[0] <<8 | Byte[1])); *temperature = (double)(temp)/(65536)*165-40; humidity = (((unsigned int)Byte[3] <<8 | Byte[4])); return (double)(humidity)/(65536)*100; } } Where is it going wrong?
  5. sendiptangshu

    Reset button

    I am trying to implement the msp430g2553 on a breadboard. Where should I add the reset button. I am not sure, but I think it should be added between reset pin and ground. BTW, I have the msp430 working on the breadboard, 47k between RST and Vcc and 1 nF between RST and GND. Where to add the pushbutton? The pushbutton is really handy for resetting
  6. sendiptangshu

    DHT11 library for energia

    I want to interface a DHT11 temperature and humidity sensor with my MSP430G2553. I looked up the Energia list of libraries, but the link for DHT11 is currently inactive. I tried downloading libraries from github, even ported over libraries from arduino, but none of them are working. I either get timeout errors or nothing gets printed on serial monitor at all. I know for sure that my sensor is perfectly fine because I have tested it for multiple libraries on Arduino. Please provide me the link for a valid DHT11 Energia library or help me out otherwise.
  7. Hello, I have obtained a PWM code online written in C. What is the equivalent code if it is written in Energia - .ino file using Energia IDE libraries? Here is the code: #include <msp430g2553.h> void setup() { WDTCTL = WDTPW + WDTHOLD; // Stop WDT if (CALBC1_1MHZ==0xFF) // If calibration constant erased { while(1); // do not load, trap CPU!! } DCOCTL = 0; // Select lowest DCOx and MODx settings BCSCTL1 = CALBC1_1MHZ; // Set range DCOCTL = CALDCO_1MHZ; // Set DCO step + modulation */ P1DIR |= BIT6; P1SEL |= BIT6; TACCR0 = 20000-1; // PWM Period 20us (substract 1 because it's 0-based) TACCTL1 = OUTMOD_3; TACCR1 = 10000; // CCR1 PWM duty cycle TACTL = TASSEL_2 + MC_1; // SMCLK, up mode _BIS_SR(CPUOFF); // Enter LPM0 } Any help is much appreciated.
  8. 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
  9. This is a fun project that was created for my embedded systems class at John Brown University that allows you to create your own quiz wizard similar to the jeopardy game show system. The main portion of this code is run on an MSP430F5529 launchpad, and nRF24L01 transceiver modules were used to obtain the wireless functionality. It makes use of the Enrf24.h library to operate the transceiver modules, and the user interface is output to the serial monitor of the energia IDE. Four buttons wired into the MSP430F5529 then allow the user to interact with the system. The wireless module was created by using an MSP430G2553 launchpad, button, and LED for indicating power on. The LCD display can be integrated although an Arduino MEGA is needed to have it be fully functional with the rest of the system, so the code for this portion of the project was not uploaded. Enrf24_RXdemo.ino Enrf24_TXdemo.ino Rough Circuit Schematic.pdf
  10. RobG

    MSP430 Nixie Clock

    MSP430 based Nixie tube clock. I was looking for some nice Nixie tube digit images so I could add them to my EduKit library, but I couldn't find any usable ones. I decided to just buy few of them and photograph myself. Then I thought that it would be a horrible waste if they just sit in a drawer. So here it is, my first Nixie project since... 1987. This clock will be available as kit, but since this is v1, I will most likely make some adjustments. Any suggestions are welcome.
  11. curtis63

    MSP430G2553 PWM Accuracy

    I need to have a very accurate PWM frequency generated with my MSP430G2553IRHB32R. I'm shooting for 25.1khz. However, when running on different boards, I can see variances of up to 3khz in the frequency. I understand this is due to the slight inaccuracy in the processor's internal clock. So, I would like to attach an external crystal or oscillator to it but don't know how. I've read a couple places that say that this chip doesn't support a crystal, but that I could use an oscillator. The questions I have is how does one connect the oscillator, and what code changes are necessary to take advantage of the oscillator? Thanks.
  12. dookeywater

    Energia Pulse Sensor

    Does anybody have working code for calculating heart beats per minute for the pulse sensor through energia. Been trying to find some but havent had any luck.
  13. dookeywater

    Interfacing MSP430G2553 with MPU6050

    Does anybody have working code that interfaces the msp and mpu6050. I'm trying to use it as a pedometer. Thanks in advance.
  14. dookeywater

    Interacing MSP430 and Pulse Sensor

    Does anybody have working code that interfaces the msp430 and pulse sensor(meant for arduino) to calculate heart beats per minute. Or if you have something through Energia. Anything helps.. Thanks
  15. I would like to measure the voltage of a NiMH DC battery not exceeding 12V and I just knew that msp430g2553's ADC has an internal voltage divider. Is it appropriate to use the internal voltage divider directly without any external circuit?
  16. Hi, Is there a ready library for PID control available for MSP430F5438A or G2553 controllers. Please help if an example is available for the same. Thanks, Tanmay
  17. Tauronts

    MSP430FR2433 LCD16x2

    Hello, I am new to to MSP environment and I would like to have some help with this project. If this is on the wrong place of the forum or something like this please tell me so I can change it. I tried to make things on my own but I got stuck for 2 weeks trying to get my LCD to work properly with my first MSP. I also have acess to a friend's MSP430G2553, but the links some of the links on the forum where broken on http://43oh.com/2010/11/lcd-special-two-ways-to-interface-a-msp430-to-an-lcd/. The conections are most probably right because I can write without problems throught Arduino, so I think the problem here is the code. I am using CCS 6.2. Thanks in advance and sorry for any grammar mistakes. #include "msp430.h" #include "intrinsics.h" #include <stdio.h> #define delay3s (int)(3*750000) #define delay2ms (int)((2/1000)*750000) #define delay5ms (int)((5/1000)*750000) #define delay100us (int)((0.1/1000)*750000) #define RS BIT1 //2.1 #define EN BIT0 //2.0 // ooooooooo ooooo oooooooo8 oooooooooo ooooo o ooooo oooo // 888 88o 888 888 888 888 888 888 888 88 // 888 888 888 888oooooo 888oooo88 888 8 88 888 // 888 888 888 888 888 888 o 8oooo88 888 // o888ooo88 o888o o88oooo888 o888o o888ooooo88 o88o o888o o888o void envia(void); void send_command (unsigned char cmd); void send_data (unsigned char data); void send_string(char *s); void lcd_init (void); void dado(void); void envia(){ P2OUT = P2OUT | (EN); // define E high signal; __delay_cycles( delay100us); P2OUT = P2OUT & ~(EN); // define E low signal __delay_cycles( delay100us); } void send_command(unsigned char cmd){ P2OUT = P2OUT &~(EN+RS); // define E low e define RS low - para mandar comandos P1OUT &= 0xF0; // send higher nibble P1OUT |= ((cmd>>4) & 0x0F); envia(); // give enable trigger P1OUT &= 0xF0; // send lower nibble P1OUT |= ((cmd) & 0x0F); envia(); // give enable trigger } void send_data(unsigned char data){ P2OUT |= (RS); // define RS high - para mandar dados P2OUT &= ~(EN); P1OUT &= 0xF0; P1OUT |= ((data>>4) & 0x0F); // send higher nibble envia(); // give enable trigger P1OUT &= 0xF0; P1OUT |= (data & 0x0F); // send lower nibble envia(); // give enable trigger } void send_string(char *s){ while(*s) { send_data(*s); s++; } } void lcd_init(void){ P2DIR |= (EN+RS); P2OUT &= ~(EN+RS); P1DIR |= (BIT4+BIT5+BIT6+BIT7); //Dados P1OUT &= ~(BIT4+BIT5+BIT6+BIT7); //Bits P1.4 a P1.7 send_command(0x33); __delay_cycles( delay2ms ); send_command(0x32); __delay_cycles( delay2ms ); send_command(0x28); // 4bit mode __delay_cycles( delay2ms ); send_command(0x0E); //send_command(0x0E)= display on / cursor on send_command(0x0C) = display on / cursor off __delay_cycles( delay2ms ); send_command(0x01); // Clear LCD __delay_cycles( delay2ms ); send_command(0x06); // Incrementa o cursor automaticamente __delay_cycles( delay2ms ); send_command(0x80); // Cursor na casa inicial __delay_cycles( delay2ms ); } void main( void ){ WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer to prevent time out reset lcd_init(); send_command(0x01); // Clear LCD __delay_cycles( delay5ms ); send_string(" MSPLAY "); send_command(0xC0); // Linha 2 __delay_cycles( delay2ms ); send_string("By: Ivan Moraes "); __delay_cycles( delay3s ); //COLOCAR MÚSICA NO LUGAR DESSE DELAY }
  18. ConfusedCoder

    MSP430G2553 & HT16K33 Issues

    Hi, I'm having a lot of trouble figuring out how to communicate with this Adafruit 7-segment display. I've looked through the Adafruit LED library, seen non-MSP microcontrollers working with the code, tried understanding the HT16K33 datasheet. I've even recorded the SCL and SDA signals from my Arduino connecting with the 7-segment. However, I'm still not sure how to get it to work with my MSP430G2553 or even how to get started. Though, I have looked into the MSP430 example code for i2c communications with the MSP430 as the master. Is it as simple as just converting the Adafruit LED library from C++ to C? I didn't expect interfacing with a 7-segment display to be so difficult for me. Any advice is much appreciated.
  19. adi123

    Neural network code

    Hello there, I am new to this forum. I wanted a code which could help me create a neural network to correlate my sensor data and get the desired output. I am using MSP430G2553 micro-controller with Energia as the software. It will be a great help. Thanks in advance.
  20. hello. I'm trying to use Proteus to make my simulations, the problem is that I don't find the device msp430g2553 in proteus. Can anyone tell me where i can find this msp for proteus? thank you very much
  21. curtis63

    PWM accuracy on MSP430G2553

    I'm working on a project where I need to oscillate at 25khz. I've been using the PWM built into the MSP430G2553 and it doesn't seem to be accurate enough to give me exactly 25khz. I've been getting anywhere from 23khz to 27khz and cannot figure out why it's off by so much. I might be doing something wrong. Does anybody know what sort of accuracy I should expect from the on board PWM in the MSP430G2553. Is there a way to make it more accurate? I was looking at adding an external crystal, but would rather not add that complication if it isn't necessary.
  22. i bought two Mspexp430 launchpad with two cc110l rfand i could to programm them in energia : then i want to add more nodes on the Network so i bought two new Mspexp430 launchpad with new two cc110l rf and they work correctly on ATC boostersatcklite but when I want to program them on energia I can upload the code but the cc110l doesn’t exchange any data from each other , i tried also with the examples in energia (wirlessControl-WirlessTest-WirelessMonitorhub-WirelessmonitorSensor) but they did not work Can you help me to let them work correctly and exchange data
  23. Hi, I just noticed an excessive consumption of ram by Wire on G2553 (I did not test on other µC) : 400 bytes !! I took a look at Wire.h but can't find where this memory is used. If anyone can confirm this and/or have an idea about this issue ? Regards
  24. I'm new to MSP430 and I'm trying to do a frequency/period measurement. I've read about timers and get the main concepts though I'm still learning. To get an idea of how they work, I'm using this code. It outputs a PWM on one pin which I connect to another pin for capturing period: http://coecsl.ece.illinois.edu/ge423/datasheets/MSP430Ref_Guides/Cexamples/MSP430G2xx3 Code Examples/C/msp430g2xx3_ta_21.c After making some modifications (removing unneeded code to light led and adding calculations for frequency) it works with the original pins. However, I want to change which input pin will take measurements. I want pin 2.0 to do so. Currently, TimerA0 captures and TimerA1 outputs PWM. Since PIN 2.0 uses TimerA1 and not A0, I assumed I would just need to flip the timers and pins. However, it's not working. I looked at the datasheet and can't figure out whats wrong. What am I missing? Here is my code: #include <msp430.h> unsigned char Count, First_Time; unsigned int REdge1, REdge2, FEdge; int main(void) { unsigned int Period, ON_Period; unsigned char DutyCycle; WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer // P1SEL |= BIT0; if (CALBC1_8MHZ==0xFF) // If calibration constant erased { while(1); // do not load, trap CPU!! } DCOCTL = 0; // Select lowest DCOx and MODx settings BCSCTL1 = CALBC1_8MHZ; // Set DCO to 8MHz DCOCTL = CALDCO_8MHZ; // Configure Port Pins P1DIR |= BIT2; // P2.1/TA1.1 Output P1SEL |= BIT2; // TA1.1 Option select P2DIR &= ~BIT0; // P1.1/TA0.1 Input Capture P2SEL |= BIT0; // TA0.1 option select // Configure TA1.1 to output PWM signal // Period = 82/32khz = 2.5ms ~ 400Hz Freq TA0CCR0 = 82-1; // Period Register TA0CCR1 = 21; // TA1.1 25% dutycycle TA0CCTL1 |= OUTMOD_7; // TA1CCR1, Reset/Set TA0CTL = TASSEL_1 + MC_1 + TACLR; // ACLK, upmode, clear TAR // Configure the TA0CCR1 to do input capture TA1CCTL1 = CAP + CM_3 + CCIE + SCS + CCIS_0; // TA0CCR1 Capture mode; CCI1A; Both // Rising and Falling Edge; interrupt enable TA1CTL |= TASSEL_2 + MC_2 + TACLR; // SMCLK, Cont Mode; start timer // Variable Initialization Count = 0x0; First_Time = 0x01; while(1) { __bis_SR_register(LPM0_bits + GIE); // Enter LPM0 __no_operation(); // For debugger // On exiting LPM0 if (TA1CCTL1 & COV) // Check for Capture Overflow while(1); // Loop Forever Period = REdge2 - REdge1; // Calculate Period ON_Period = FEdge-REdge1; // On period DutyCycle = ((unsigned long)ON_Period*100/Period); } } // TA0_A1 Interrupt vector #pragma vector = TIMER1_A1_VECTOR __interrupt void TIMER1_A1_ISR (void) { switch(__even_in_range(TA1IV,0x0A)) { case TA1IV_NONE: break; // Vector 0: No interrupt case TA1IV_TACCR1: // Vector 2: TACCR1 CCIFG if (TA1CCTL1 & CCI) // Capture Input Pin Status { // Rising Edge was captured if (!Count) { REdge1 = TA1CCR1; Count++; } else { REdge2 = TA1CCR1; Count=0x0; __bic_SR_register_on_exit(LPM0_bits + GIE); // Exit LPM0 on return to main } if (First_Time) First_Time = 0x0; } else { // Falling Edge was captured if(!First_Time) { FEdge = TA1CCR1; } } break; case TA1IV_TACCR2: break; // Vector 4: TACCR2 CCIFG case TA1IV_6: break; // Vector 6: Reserved CCIFG case TA1IV_8: break; // Vector 8: Reserved CCIFG case TA1IV_TAIFG: break; // Vector 10: TAIFG default: break; } } I checked and there is a pulse going into P2.0 but P2.0 is not capturing it. Is it just not possible with this pin or am I missing something obvious?
  25. Hi, I am using MSP430 launchpad with G2553 controller. When I am using sleep(5000), and varying the voltage on the controller from 3v to 4v the timing is varying based on the voltage, but the timing in not changing when I am using delay(5000) when I am varying voltage. Any help will be appreciated. Regards,