Quantcast
Channel: MSP low-power microcontroller forum - Recent Threads
Viewing all 22232 articles
Browse latest View live

MSP430G2553: Serial.print() doesn't work with Energia 1.6.10E18

$
0
0

Part Number:MSP430G2553

Hello!

I am trying to run a simple code.

And yet, I can see nothing in the serial monitor. For confirmation: this is the RX/TX connection in my board.

My OS is windows 10, 64-bit.


Using an MSP430F6 to measure strain gauges?

$
0
0

I have a project where I need to measure strain gauges on 3-axes in a half-bridge configuration. I notice that most projects like this us a an HX711 load cell amplifier (or similar). Usually any device for this purpose has an amplifier stage (programmable gain of 32-128) and high resolution differential ADC (24-bit) with 50/60Hz noise suppression (HX711 datasheet).

I had been wondering if any microcontroller with an on-board ADC could handle this task on it's own, and my search led me to look at the MSP430's. I noticed the MSP430F6 could potentially provide since it appears to have 3-6 differential sigma-delta ADCs with a programmable gain amplifier.

Would this be an appropriate part for measuring strain gauges? Are there any other parts that might be suitable?

Essentially my requirements are:

  • on-board PGA (gain 32-128)
  • ob-board ADC (24-bit, differential x3)
  • low-power microcontroller (<1uA sleep current)
  • ideally some 50/60Hz noise suppression on the Analog Front End
  • Small package (the 80-pin LQFP is probably overkill)

Also, is there a cost-effective evaluation kit for the MSP430F6, like the launchpad?

MSP430F2419: Reset Handler in code

$
0
0

Part Number:MSP430F2419

Hi All,

Earlier I posted the issue mentioning the phantom reset which causes the micro controller to reset. To find out the specific cause I would like to implement reset vector handler. 

I followed TI application notes about this @ 

This is specific to F5529. Could anyone guide me what to write for the MSP430F2419. I am using IAR tool chain. And can't seem to find the RESET vector information on the data sheet or online. Datasheet seems little bit cryptic.

Thank you.

Compiler/MSP430FR5962: Device support package

$
0
0

Part Number:MSP430FR5962

Tool/software: TI C/C++ Compiler

Dear Masters,

My customer is using old version IAR (may be .6 or earlier) which do not include MSP430FR596x device, but they do not want to change the IDE due to license reason. Do we have any support  package to add our new device into the old IDE?

Thanks.

B&R

Eric

CCS/MSP430FR5969: How to pair the differential channel of ADC12_B

$
0
0

Part Number:MSP430FR5969

Tool/software: Code Composer Studio

           I can't find the rule of how to pair the differential channel of ADC12_B in MSP430FR5969's user's guide. Who can show me the location of the information in the user's guide or other documents. Thank you!

MSP430F5529: Sending data over serial port

$
0
0

Part Number:MSP430F5529

Hi All,

As a quick background, I am working on a project which involves an ADXL345 (three axis accelerometer). I have currently got the accelerometer communicating to an arduino (via I2C), and the arduino is printing the XYZ data to the serial port, which I am reading into matlab. This process of sending serial data via an arduino is very simple, using the Serial.print(data).

I am now looking to replace the arduino with my MSP430F5529 Launchpad. Could anyone advise me on the steps involved in sending serial data over the serial port ? Im using IAR if that makes a difference.

Thanks in advance,

MSP430F6736A: Connection to SD24B I+/I-

$
0
0

Part Number:MSP430F6736A

Hi everyone

I have a measurement question relating to the I+/I- pins (ie  pins 3&4) on the MSP430 that is being used in a power meter....


In the circuit above (note that this is the V+/V- inputs to the SD24B) points 3 and 4 are floating and not actually connected to the chip

The AC is 120V and voltage across 1&2=0.094V  (This was predicted and measured) and voltage across 3&4=0.094V (this was also predicted and measured)

 

 

But now in the circuit above (note that this is now the I+/I- inputs to the SD24B) points 5 and 6 are floating and NOT actually connected to the chip...

The AC between AGND & LIVE (shunt) is 120V and the Load through the shunt is: 8.60A

Voltage across 1&2=2.081mV  (This was predicted and measured)
Voltage across 3&4=4.6mv  (measured)
Voltage across 5&6=4.6mv  (measured)

And when disconnecting the Load (0A): Voltage across 5&6=4.0mv  (measured)

And, since points 5 & 6 are not connected to the MCU, there is no current path. 
So we now placed a 1K resistor across points 5 & 6 to complete a current path and we observed the following:

When Load: 0A    Voltage across 5&6=1.3mv  (measured)
When Load: 8.6A Voltage across 5&6=1.64mv  (measured)  The change compared to 0A is 26%.

And then we also replaced Capacitors C8 & C12 with 33nF (instead of the 47pF shown above) and observed the following:

When Load: 0A    Voltage across 5&6=0.44v  (measured)
When Load: 8.6A Voltage across 5&6=0.42v  (measured)  The change compared to 0A is now -4.5%.

So we can easily predict our inputs for (or rather the pd across) points 1 & 2 because the current loop is complete and the impact of the capacitors is minimal based on the given current flow.
However, this is not the case for points 5 & 6 (ie pins 3 & 4) which, it seems, are VERY sensitive to any noise.

And hence we need to know, or have a benchmark, of deliverable values to the MCU regarding Pins 3 & 4.

So NOW the questions...
In order to provide correct inputs for pins 3 & 4 (ie points 5 & 6 above) we would like to know:

  1. What does the MCU's internal circuitry do at points 5 & 6 (ie pins 3 & 4) and what impact does it have when varying the capacitance values of C8 & C12?
  2. What is the recommended circuit configuration connecting the shunt to points 5 & 6 (ie to pins 3 & 4)?
  3. In order to filter out any noise effects, what is the benchmark measurements that we should aim towards for pins 3,4 and what is the recommendation for completing the current path (so as to emulate the MCU)?

 

thanks in advance

CCS/MSP430FR2311: OutOfBox_MSP430FR4133 run at MSP-EXP430FR4133 seems to give 511 as maximum ADC10 ADC_Conversion_Result

$
0
0

Part Number:MSP430FR2311

Tool/software: Code Composer Studio

Could anyone please confirm this. And if it is so- Why?

There are two versions of the project: one in Resource Explorer, and a slightly different one in the MSP430FR231x Examples. They behave the same way. No matter how strong light you expose the photo diode to, I cannot make the ADC_Conversion_Result pass 511. In driverlib adc.c it says that the ADC defaults to 10 bit 0-1023. Setting the resolution in a call make no difference.

Strangely enough the main.c file has a test:

    if(ADC_Conversion_Result >= 256)  //Normalize data for lower brightness

which could mean that the program is meant to present only 9 bit / 512 values.

I am making a micro/nano ampere meter, and need the 1024 steps to get some 0.1% resolution.

Thanks in advance.

Roy


CCS/MSP430F2272: Debug issue. State machine variable changes randomly at each cycle

$
0
0

Part Number:MSP430F2272

Tool/software: Code Composer Studio

Hi all,

I'm using a Lauchpad as a debugger with CCS 7.1.0.

The main code is a state machine as follows:

At each step, GPIO operations are done and the result is captured by the ADC10.

The state machine variable is declared as follows:

in .h file:

typedef enum
{
    IDLE,
    CHECK_INSERTION,
    INVALID_INSERTION,
    VALID_INSERTION,
}Status_t;

in .c

static Status_t state = IDLE;

The problem is that at each loop of the state machine, the state variable changes to another state without any reason. It exits the state machine in the correct state and re-enters the state machine with another state.

I would really appreciate help on this.

Thanks a lot

Salim.

MSP-GANG: errors 14 and 23

$
0
0

Part Number:MSP-GANG

Hi

I'm using an MSP-FET to successfully load my firmware into the MSP430-F6736A on my custom board.
I'm using a custom JTAG cable that i made up from a 8 wire ribbon cable.
This works with no problems.
So i can assume my cable is fine (length 180mm).

This is the JTAG connector on my board....each track goes to the applicable MSP430 pin.

I am now wanting to load my firmware using an MSP-GANG and using the same cable as above.
The board has its own power (naturally) and the GANG has been set up to NOT supply power to target.
When i try and load the MSP I get error 14 "Vcc too high"...but when measured, Vcc is 3.25 so clearly its not too high so the error message must mean something else.
As a test, I did lower the board voltage so Vcc was 2.8V but then i got an error 23 (Failed to initialise MCU) which i would think is quite correct as that voltage is too low.
I did try lowering the data rate but that still gave the same error 14.

I know the GANG is not faulty because i've successfully read the flash on an MSP430F47197 using a std JTAG cable and TS430PZ100A.

This is the GANG setup..


My Question is: What could be wrong??

thanks

MSP430FR5994: TLV missing in launch pad

$
0
0

Part Number:MSP430FR5994

The TLV memory is all zero in my MSP-EXP43FR5994. Should I expect to find actual TLV material, in particular the ADC and temperature calibration values, in production FR5994 processors?

(After finding that a program was fetching zeros, I looked and found all zeros in the memory display window of IAR EW430 V7.1.4 and have verified that I can write to and read from that memory.)

Less important but I'm curious: Why is the TLV space all zero in my launch pad processor?

MSP430G2553: connect directly GPIO pin to the enable pin of an IC or use external pull-up or pull-down resistors?

$
0
0

Part Number:MSP430G2553

Hi, I have a very basic question but I can not clarify me. I am using the MSP430G2553. When a GPIO pin of the microcontroller is connected to a pin enable of an integrated circuit, can it be connected directly or is it necessary (or better) to use external pull-up or pull-down resistors? In this way, would you ensure that the ICs are in a controlled state while the values of the MSP430G2553 registers are set to the value programmed in the code? Thanks

Best regards,

Fran Martin.

MSP432P401R: Lanuchpad MSP432P401R tooling problem

$
0
0

Part Number:MSP432P401R

Dear all TI Engineers,

I have a new board of MSP432P401R Launchpad.  I encounter 2 problems about tooling:

  1. This board has no foot. It can't stand on its own.  I can't find any matching good feet on Arrow. Can you give me the part number of its feet?



  2. I am supplying power to this board through a USB cable connecting from my PC. If I want to do a presentation, can I supply power to this board from a usual rechargeable lithium battery for smartphones?

Thanks for your attention.  ^^

MSP430F5359: Launchpad

MSP430F5359: Power Consumption of MSP430


MSP430F5152: 5V Tolerant I/O

$
0
0

Part Number:MSP430F5152

Dear all,

In my application, I want to use 5V Tolerant I/O by 3.3V and 5V I/O on MSP430F5152 as following.

- Leave the DVIO pin.

- Supply external pull-up source(3.3V or 5V) through a resistor on I/O line.

Is it possible?

Sincerely,

Eui-heon

Starterware/MSP430FR6972: the question of FRAM's wait state control

$
0
0

Part Number:MSP430FR6972

Tool/software: Starterware

Hi, sir

I  set MCLK to 12MHz from DCO . From FRAM Part of msp430fr6972's user guide ,I knew "The system clock for the CPU or DMA can exceed the FRAM access and cycle time requirements. For these scenarios, a wait state generator mechanism is implemented. The Recommended Operating Conditions of the device-specific data sheet list the frequency ranges with the required wait state settings. "  The Recommend Operating Conditions is following:

I confused the "NWAITSx" means.  Do it represent  the every bit of  NWAITS[2:0], or not ?  What should be set in NWAITS[2:0], if MCLK is 12MHz?

Another question ,  From msp430fr6072's  device-specific data sheet ,the Supply Current is showed at different frequency of MCLK . I want to kow the speed of operation at  different frequency of MCLK.

Cloud I understand that the speed of 16MHz MCLK  is 16 times the speed of 1MHz MCLK ? So,  1MHz 's  current consumption is assumed to be 210 uA, 16MHz‘s current consumption is assumed to be 1845 uA. Executing the same codes , 1MHz's time consumption is 16 times 16MHz.  The 1MHz's current consumption is 210uA * 16 , and 16MHz's current consumption is 1845uA*1. Therefore, 1MHz's current consumption is large than 16MHz , when they execute same codes. Is it right ?

Best regards

Jent

MSP430F447: I2C interface design

$
0
0

Part Number:MSP430F447

hi 

I am planning to interface I2C eeprom to microcontroller  msp430f447 .I want to know how to design schematics.Because i don find SDA,SCL pins in the pindetails but the datasheet shows u can interface I2c devices to this processor.

with regards

senthil

MSP432P401M: Error Connecting to the target

$
0
0

Part Number:MSP432P401M

Hello Everyone,

    I want to connect XDS100V3(emulator board) to MSP432P401M controller. when i debug sample code (toggle a port pin)  this error message comes up:

 Error connecting to the target:

(Error -182 @ 0x0)
The controller has detected a cable break that is near-to itself.
The user must connect the cable/pod to the controller.
(Emulation package 6.0.504.1)

CCS  Version:  7.2.0.201705101800 

-The adapter appears in Device Manager correctly. TDIS on the 14-pin TI header is also connected to GND properly.

-When  test  the JTAG conection in CCS V7, the following message is coming:

[Start: Texas Instruments XDS100v3 USB Debug Probe]

Execute the command:

%ccs_base%/common/uscif/dbgjtag -f %boarddatafile% -rv -o -F inform,logfile=yes -S pathlength -S integrity

[Result]


-----[Print the board config pathname(s)]------------------------------------

C:\Users\NIKHIL~1\AppData\Local\TEXASI~1\
CCS\ti\3\0\BrdDat\testBoard.dat

-----[Print the reset-command software log-file]-----------------------------

This utility has selected a 100- or 510-class product.
This utility will load the adapter 'jioserdesusbv3.dll'.
The library build date was 'Jul 21 2017'.
The library build time was '19:36:41'.
The library package version is '7.0.48.0'.
The library component version is '35.35.0.0'.
The controller does not use a programmable FPGA.

An error occurred while hard opening the controller.

-----[An error has occurred and this utility has aborted]--------------------

This error is generated by TI's USCIF driver or utilities.

The value is '-182' (0xffffff4a).
The title is 'SC_ERR_CTL_CBL_BREAK_NEAR'.

The explanation is:
The controller has detected a cable break that is near-to itself.
The user must connect the cable/pod to the controller.

[End: Texas Instruments XDS100v3 USB Debug Probe]

-In Target configurations, I made some changes:-

Any idea how I can fix this error and connect the device?

CCS/MSP432P401R: Multiple Slave Devices (I2C)

$
0
0

Part Number:MSP432P401R

Tool/software: Code Composer Studio

Hello,

I'm beginner in MSP432 and also in programming.

I'm trying to read four sensors: 2x SHT31(temperature and humidity sensor) and 2x SFM3000(flow sensor).

I succeeded to read just two by two,but never all of them. I need a code example for multiple slave devices or something that could help me.

Here is my code:

#include "msp.h"

unsigned char RXData;

const unsigned int cu16SFM3000MeasureCommand = 0x1000;
const unsigned char cu8SFM3000Address = 0x40;


const uint16_t cu16SHT31MeasureCommand = 0x240B;
const uint8_t cu8SHT31Address = 0x44;



typedef struct
{

    unsigned char u8TxCount;
    unsigned char u8RxCount;

    unsigned int u16FlowData;
    float fFlowDataCalculated;
    unsigned char u8CRC;

    uint16_t u16TempData;
    float fTempDataCalculated;
    uint8_t u8CRCTemp;

    uint16_t u16HumData;
    float fHumDataCalculated;
    uint8_t u8CRCHum;


}var;

var FirstSensorF,SecondSensorF,FirstSensorT,SecondSensorT;

#define OFFSET_FLOW 32000.0F // offset flow
#define SCALE_FLOW 140.0F // scale factor flow


extern void EUSCIB1_IRQHandler();

int main(void)
{
    volatile uint32_t i;
    WDT_A->CTL = WDT_A_CTL_PW | WDT_A_CTL_HOLD;     // stop watchdog timer


    // Configure GPIO
    P6SEL0 |= BIT4 | BIT5; // I2C pins
    P1SEL0 |= BIT6 | BIT7; // I2C pins

    __enable_interrupt();
    NVIC->ISER[0] |= 1 << ((EUSCIB1_IRQn) & 31); // Enable eUSCIB1 interrupt in NVIC module
    NVIC->ISER[0] |= 1 << ((EUSCIB0_IRQn) & 31);


    // Configure USCI_B1 for I2C mode


    while (1)
    {

        // Configure USCI_B1 for I2C mode
               UCB1CTLW0 |= UCSWRST; // Software reset enabled
               UCB1CTLW0 |= UCMODE_3 | UCMST | UCSYNC; // I2C mode, Slave mode, sync
               UCB1BRW = 192;
               UCB1CTLW0 |= UCTR;
               UCB1I2CSA = cu8SFM3000Address;
               FirstSensorF.u8TxCount = 2;
               UCB1CTLW0 &= ~UCSWRST;
               UCB1IE = UCTXIE | UCNACKIE;
               UCB1CTLW0 |= UCTXSTT; // I2C start condition

               for (i = 20000; i > 0; i--);

               UCB1CTLW0 |= UCSWRST; 
               UCB1CTLW0 |= UCMODE_3 | UCMST | UCSYNC; 
               UCB1CTLW1 |= UCASTP_2; // Automatic stop generated
               UCB1CTLW0 &= ~UCTR;
               // after UCB0TBCNT is reached
               UCB1BRW = 192; // baudrate = SMCLK / 192
               UCB1TBCNT = 3; // number of bytes to be received
               FirstSensorF.u8RxCount = 3;
               UCB1I2CSA = cu8SFM3000Address;
               UCB1CTLW0 &= ~UCSWRST;
               UCB1IE |= UCRXIE | UCNACKIE | UCBCNTIE;

               for (i = 20000; i > 0; i--);

               while (UCB1CTLW0 & UCTXSTP); // Ensure stop condition got sent
               UCB1CTLW0 |= UCTXSTT; // I2C start condition

               UCB0CTLW0 |= UCSWRST; 
               UCB0CTLW0 |= UCMODE_3;
               UCB0CTLW0 |= UCMST;
               UCB0CTLW0 |=UCSYNC; 
               UCB0BRW = 192;
               UCB0CTLW0 |= UCTR; //Transmitter
               UCB0I2CSA = cu8SHT31Address; 
               SecondSensorT.u8TxCount = 2; //send two bytes of data
               UCB0CTLW0 &= ~UCSWRST;//Software reset enable
               UCB0IE = UCTXIE | UCNACKIE;//Transmit interrupt enable +Not-acknowledge interrupt enable

               UCB0CTLW0 |= UCTXSTT; // FirstSensorT start condition

               for (i = 10000; i > 0; i--);

               UCB0CTLW0 |= UCSWRST; // Software reset enabled
               UCB0CTLW0 |= UCMODE_3 | UCMST | UCSYNC; // FirstSensorT mode, Slave mode, sync
               UCB0CTLW1 |= UCASTP_2;
               UCB0CTLW0 &= ~UCTR; //receiver
               // after UCB0TBCNT is reached
               UCB0BRW = 192; // baudrate = SMCLK / 192
               UCB0TBCNT = 6; // number of bytes to be received
               SecondSensorT.u8RxCount = 6;
               UCB0I2CSA = cu8SHT31Address;
               UCB0CTLW0 &= ~UCSWRST; //Software reset enable
               UCB0IE |= UCRXIE | UCNACKIE | UCBCNTIE;  enable

               UCB0CTLW0 |= UCTXSTT; 
               for (i = 10000; i > 0; i--);



    }
}

// I2C interrupt service routine
void EUSCIB1_IRQHandler(void)
{
    if (UCB1IFG & UCNACKIFG)
    {
        UCB1IFG &= ~ UCNACKIFG;
        UCB1CTLW0 |= UCTXSTT; // I2C start condition
    }
    if (UCB1IFG & UCRXIFG0)
    {
        if(FirstSensorF.u8RxCount == 3)
        {
            FirstSensorF.u8RxCount --;
            FirstSensorF.u16FlowData = UCB1RXBUF << 8;
        }
        else if(FirstSensorF.u8RxCount == 2)
        {
            FirstSensorF.u8RxCount --;
            FirstSensorF.u16FlowData |= UCB1RXBUF;
            FirstSensorF.fFlowDataCalculated = (FirstSensorF.u16FlowData - OFFSET_FLOW) / SCALE_FLOW;
        }
        else if (FirstSensorF.u8RxCount == 1)
        {
            FirstSensorF.u8RxCount = 3;
            FirstSensorF.u8CRC = UCB1RXBUF;
        }
        UCB1IFG &= ~ UCRXIFG0;
    }
    if (UCB1IFG & UCBCNTIFG)
    {
        UCB1IFG &= ~ UCBCNTIFG;
        P1OUT ^= BIT0; 
    }

    /* TX  */

    if(UCB1IFG & UCTXIFG0)
    {

        if(FirstSensorF.u8TxCount == 2)
        {
            UCB1TXBUF = (cu16SFM3000MeasureCommand >> 8) & 0xFF;
            FirstSensorF.u8TxCount --;
        }
        else if(FirstSensorF.u8TxCount == 1)
        {
            UCB1TXBUF = cu16SFM3000MeasureCommand & 0xFF;
            FirstSensorF.u8TxCount --;
        }
        else
        {
            UCB1CTLW0 |= UCTXSTP; // I2C start condition
        }

        UCB1IFG &= ~UCTXIFG0;
    }

}
void EUSCIB0_IRQHandler(void)
{
    if (UCB0IFG & UCNACKIFG)
    {
        UCB0IFG &= ~ UCNACKIFG;
        UCB0CTLW0 |= UCTXSTT; // FirstSensorT start condition
    }
    if (UCB0IFG & UCRXIFG0)
    {
        if(SecondSensorT.u8RxCount == 6)
        {
            SecondSensorT.u8RxCount --;
            SecondSensorT.u16TempData = UCB0RXBUF << 8;
        }
        else if(SecondSensorT.u8RxCount == 5)
        {
            SecondSensorT.u8RxCount --;
            SecondSensorT.u16TempData |= UCB0RXBUF;
            SecondSensorT.fTempDataCalculated = -45 + (175 * ((float)  SecondSensorT.u16TempData / (float) 0xFFFF));
        }
        else if (SecondSensorT.u8RxCount == 4)
        {
            SecondSensorT.u8RxCount --;
            SecondSensorT.u8CRCTemp = UCB0RXBUF;
        }
        else  if(SecondSensorT.u8RxCount == 3)
        {
            SecondSensorT.u8RxCount --;
            SecondSensorT.u16HumData = UCB0RXBUF << 8;
        }
        else if(SecondSensorT.u8RxCount == 2)
        {
            SecondSensorT.u8RxCount --;
            SecondSensorT.u16HumData |= UCB0RXBUF;
            SecondSensorT.fHumDataCalculated = 100 * ((float) SecondSensorT.u16HumData / (float) 0xFFFF);
        }
        else if (SecondSensorT.u8RxCount == 1)
        {
            SecondSensorT.u8RxCount = 6;
            SecondSensorT.u8CRCHum = UCB0RXBUF;
        }

        UCB0IFG &= ~ UCRXIFG0;
    }


    if (UCB0IFG & UCBCNTIFG)
    {
        UCB0IFG &= ~ UCBCNTIFG;
        P1OUT ^= BIT0; // Toggle LED on P1.0
    }


    /* TX  */

    if(UCB0IFG & UCTXIFG0)
    {

        if(SecondSensorT.u8TxCount == 2)
        {
            UCB0TXBUF = (cu16SHT31MeasureCommand >> 8) & 0xFF;
            SecondSensorT.u8TxCount --;
        }
        else if(SecondSensorT.u8TxCount == 1)
        {
            UCB0TXBUF = cu16SHT31MeasureCommand & 0xFF;
            SecondSensorT.u8TxCount --;
        }
        else
        {
            UCB0CTLW0 |= UCTXSTP; // FirstSensorT start condition
        }

        UCB0IFG &= ~UCTXIFG0;
    }

}


Viewing all 22232 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>