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

MSP432P4111: yes

$
0
0

Part Number:MSP432P4111

Hi all, 

I have been working on a project which invovles SPI. I wanted to know how can i poll the UCTXIFG bit.

Regards,

Bhaumik Jain 


MSP432P401R: speed problem

$
0
0

Part Number:MSP432P401R

This is my first project with MSP432, and I'm using a custom board.

External 2-channel ADC is connected to eUSCI_B0, and also external 1-channel DAC connected to eUSCI_B1. I'm using external 32MHz HFXT for MCLK and SMCLK.

I should take ADC samples from both channels, do some processing and write the result to DAC. The code below is simplified version - just ADC read and write value of one channel to DAC(no processing still).

The sampling is controlled by timers, TIMER_A0 - interrupt in 32kHz - setting ConversionStart signal for ADC, and running TIMER_A1 to enter CCR0 isr in ~9us (max conversion time of the ADC).

The rest is just ADC result read (4 bytes via SPI) and DAC write (3 bytes via SPI).

This 2 actions last for 80us! I can not reach even sampling frequency speed, not to mention any processing. 

I tried even just a bit set/reset in TIMER_A1 routine (no SPI at all) and that single instruction lasts for 4us!

I would appreciate any help.

Here is the code with SPI:

#include "msp.h"
#include <driverlib.h>
#include <stdio.h>
#include <arm_math.h>
#include "arm_const_structs.h"

#define LFXT_FREQUENCY          32768
#define HFXT_FREQUENCY          32000000
#define SMCLK_FREQUENCY         HFXT_FREQUENCY
#define SPI_CLK_FREQUENCY       SMCLK_FREQUENCY/2


const eUSCI_SPI_MasterConfig spiMasterConfig =
{
  EUSCI_B_SPI_CLOCKSOURCE_SMCLK,                // SMCLK Clock Source
  SMCLK_FREQUENCY,                              // SMCLK = HFXT = 32MHz
  SPI_CLK_FREQUENCY,                            // SPICLK = SMCLK/2 = 16MHz
  EUSCI_B_SPI_MSB_FIRST,                        // MSB First
  EUSCI_B_SPI_PHASE_DATA_CHANGED_ONFIRST_CAPTURED_ON_NEXT,
  EUSCI_B_SPI_CLOCKPOLARITY_INACTIVITY_LOW,     // Low clock polarity
  EUSCI_B_SPI_3PIN                              // 3-wire SPI mode
};


uint16_t X, Y;
uint8_t ConvOver = 0;


void InitADC (void);
void ReadADCResults (void);
void InitDAC (void);
void uWriteDAC (uint16_t value);
void TimerA0_IRQHandler(void);
void TimerA1_IRQHandler(void);

void main(void)
{
    /* Halting WDT and disabling master interrupts */
    MAP_WDT_A_holdTimer();
    MAP_Interrupt_disableMaster();

    /* Set the core voltage level to VCORE1 */
    MAP_PCM_setCoreVoltageLevel(PCM_VCORE1);
    MAP_FlashCtl_setWaitState(FLASH_BANK0, 2);
    MAP_FlashCtl_setWaitState(FLASH_BANK1, 2);
    
    /* Initializes Clock System */
    MAP_GPIO_setAsPeripheralModuleFunctionOutputPin(GPIO_PORT_PJ,
          GPIO_PIN3 | GPIO_PIN2, GPIO_PRIMARY_MODULE_FUNCTION);
    MAP_CS_setExternalClockSourceFrequency(LFXT_FREQUENCY,HFXT_FREQUENCY);
    MAP_CS_startHFXT(false);
    MAP_CS_initClockSignal(CS_MCLK, CS_HFXTCLK_SELECT, CS_CLOCK_DIVIDER_1 );
    MAP_CS_initClockSignal(CS_HSMCLK, CS_HFXTCLK_SELECT,CS_CLOCK_DIVIDER_1 );
    MAP_CS_initClockSignal(CS_SMCLK, CS_HFXTCLK_SELECT,CS_CLOCK_DIVIDER_1 );
    MAP_CS_initClockSignal(CS_ACLK, CS_REFOCLK_SELECT, CS_CLOCK_DIVIDER_1);
    
    

    /* Initialize Peripherals */
    InitADC();
    InitDAC();
    
    
    /* Initialize TimerA0 and map interrupt */   
    TIMER_A0->CCTL[0] &= ~TIMER_A_CCTLN_CCIFG;
    TIMER_A0->CCTL[0] = TIMER_A_CCTLN_CCIE; // TACCR0 interrupt enabled
    TIMER_A0->CCR[0] = 1000 - 1;
    TIMER_A0->CTL = TIMER_A_CTL_SSEL__SMCLK | // SMCLK, UP mode
            TIMER_A_CTL_MC__UP;
    MAP_Interrupt_enableInterrupt(INT_TA0_0);
    
    /* Initialize TimerA1 and map interrupt */   
    TIMER_A1->CCTL[0] &= ~TIMER_A_CCTLN_CCIFG;
    TIMER_A1->CCTL[0] = TIMER_A_CCTLN_CCIE; // TACCR1 interrupt enabled
    TIMER_A1->CCR[0] = 0;
    TIMER_A1->CTL = TIMER_A_CTL_SSEL__SMCLK | // SMCLK, UP mode
            TIMER_A_CTL_MC__UP;
    MAP_Interrupt_enableInterrupt(INT_TA1_0);
    
  
    /* General Interrupt Enable */
    MAP_Interrupt_enableMaster();
        
    while(1)
    {
      while(!ConvOver);
      ConvOver = 0;     
     
      ReadADCResults();          // Will be written to X, Y

        P2->OUT &= ~BIT1;         // CONVST = 0

      uWriteDAC(X);
    }
}

void InitADC (void)
{
  // * Port init for ADC SPI communication
    // P1.5 - SCLK - SPI output
    GPIO_setAsPeripheralModuleFunctionOutputPin(GPIO_PORT_P1,GPIO_PIN5, GPIO_PRIMARY_MODULE_FUNCTION);
    // P1.7 - SDATA - SOMI - SPI input
    GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P1,GPIO_PIN7, GPIO_PRIMARY_MODULE_FUNCTION);    
    // P2.1 - CONVST - GPIO output
    GPIO_setAsOutputPin(GPIO_PORT_P2, GPIO_PIN1);
    GPIO_setOutputLowOnPin(GPIO_PORT_P2, GPIO_PIN1);
  
  // * Initialize USCI_B0 for SPI master operation
    SPI_initMaster(EUSCI_B0_BASE, &spiMasterConfig);
    SPI_enableModule(EUSCI_B0_BASE);
    SPI_clearInterruptFlag(EUSCI_B0_BASE, EUSCI_SPI_RECEIVE_INTERRUPT);
}

void ReadADCResults (void)
{
  X = 0;
  Y = 0;
  
  Interrupt_disableMaster();
  
  SPI_clearInterruptFlag(EUSCI_B0_BASE, EUSCI_SPI_RECEIVE_INTERRUPT);
  
  while (!(EUSCI_B0->IFG & EUSCI_B_IFG_TXIFG));
  SPI_transmitData(EUSCI_B0_BASE, 0xFF);
  while (!(EUSCI_B0->IFG & EUSCI_B_IFG_TXIFG));
  Y = SPI_receiveData(EUSCI_B0_BASE);
  Y = Y<<8;
  while (!(EUSCI_B0->IFG & EUSCI_B_IFG_TXIFG));
  SPI_transmitData(EUSCI_B0_BASE, 0xFF);
  while (!(EUSCI_B0->IFG & EUSCI_B_IFG_TXIFG));
  Y += SPI_receiveData(EUSCI_B0_BASE);
  
  while (!(EUSCI_B0->IFG & EUSCI_B_IFG_TXIFG));
  SPI_transmitData(EUSCI_B0_BASE, 0xFF);
  while (!(EUSCI_B0->IFG & EUSCI_B_IFG_TXIFG));
  X = SPI_receiveData(EUSCI_B0_BASE);
  X = X<<8;
  while (!(EUSCI_B0->IFG & EUSCI_B_IFG_TXIFG));
  SPI_transmitData(EUSCI_B0_BASE, 0xFF);
  while (!(EUSCI_B0->IFG & EUSCI_B_IFG_TXIFG));
  X += SPI_receiveData(EUSCI_B0_BASE);
  
  Interrupt_enableMaster();
}

void InitDAC (void)
{
  // * Port init for DAC SPI communication
    // P6.3 - SCLK - SPI output
    GPIO_setAsPeripheralModuleFunctionOutputPin(GPIO_PORT_P6, GPIO_PIN3, GPIO_PRIMARY_MODULE_FUNCTION);
    // P6.4 - DATA - SIMO - SPI output
    GPIO_setAsPeripheralModuleFunctionOutputPin(GPIO_PORT_P6, GPIO_PIN4, GPIO_PRIMARY_MODULE_FUNCTION);
    // P5.7 - SYNC - GPIO output
    GPIO_setAsOutputPin(GPIO_PORT_P5, GPIO_PIN7);
    GPIO_setOutputHighOnPin(GPIO_PORT_P5, GPIO_PIN7);
  
  // * Initialize USCI_B1 for SPI master operation
    SPI_initMaster(EUSCI_B1_BASE, &spiMasterConfig);
    SPI_enableModule(EUSCI_B1_BASE);
    SPI_clearInterruptFlag(EUSCI_B1_BASE, EUSCI_SPI_RECEIVE_INTERRUPT);
}

void uWriteDAC (uint16_t value)
{
  Interrupt_disableMaster();
  
  GPIO_setOutputLowOnPin(GPIO_PORT_P5, GPIO_PIN7);
  
  while (!(EUSCI_B1->IFG & EUSCI_B_IFG_TXIFG));
  SPI_transmitData(EUSCI_B1_BASE, (value>>10)&0x3F);
  while (!(EUSCI_B1->IFG & EUSCI_B_IFG_TXIFG));
  SPI_transmitData(EUSCI_B1_BASE, value>>2);
  while (!(EUSCI_B1->IFG & EUSCI_B_IFG_TXIFG));
  SPI_transmitData(EUSCI_B1_BASE, value<<6);
  while (!(EUSCI_B1->IFG & EUSCI_B_IFG_TXIFG));
  
  GPIO_setOutputHighOnPin(GPIO_PORT_P5, GPIO_PIN7);
  
  Interrupt_enableMaster();
}


/* ISR for TimerA0 */
void TimerA0_IRQHandler(void)
{
  TIMER_A0->CCTL[0] &= ~TIMER_A_CCTLN_CCIFG;

  // Start conversion here
  P2->OUT |= BIT1;              // CONVST = 1
  
  TA1CCR0 = 280;                // Set TimerA1 to max conversion time
}

/* ISR for TimerA1 */
void TimerA1_IRQHandler(void)
{
  TIMER_A1->CCTL[0] &= ~TIMER_A_CCTLN_CCIFG;
  ConvOver = 1;                 // Set Conversion Over Flag
  TA1CCR0 = 0;                  // Halt TimerA1
}

CCS/MSP430F67641A: TIDM-3PH-ENERGY5-ESD issues with Code Composer (instead of IAR)

$
0
0

Part Number:MSP430F67641A

Tool/software: Code Composer Studio

I am working with the MSP430F67641 dev kit from www.ti.com/.../tidm-3ph-energy5-esd

The provided example code is written for IAR, but I only have a trial license and we can't justify the large expense for continuing to use IAR - so I've been working to get the code working under Code Composer Studio.

So far I've got it to the point that it compiles and seems to run - but it looks like the ADC10 and/or DMA ISRs don't work properly. When connected to the GUI, I can get correct-looking values for the RMS current (which is processed by the SD24 routines) but the RMS voltage (from the ADC10 routines) is stuck at zero. I set up a simple variable to count the number of times each ISR runs, and the SD24 ISR seems to continue running forever, as expected, but the ADC10 and DMA ISRs stop after around 5,000 runs and do not resume.

Is there something special that the IAR code for the TIDM-3PH-ENERGY5-ESD reference meter does with the ISRs? I've not used MSP430s very much before, is there something tricky about getting the ADC10s to work reliably?

MSP-EXP430FR2433: How to identify a box from board information

$
0
0

Part Number:MSP-EXP430FR2433

Hello.

Can I identify boxes from Launchpad information(including the information of device memory)?

I would like to check out Launchpad and identify what box it was contained.

Regards,

U-SK

MSP432P401R: Question about DMA example dma_eusci_spi_scatter_gather

$
0
0

Part Number:MSP432P401R

Hi,

I am reading about setting SPI with DMA based on  dma_eusci_spi_scatter_gather  and I have few questions.

In the example dma_eusci_spi_scatter_gather.c  the DMA sequence "spiAdcDmaSeq" in line 113, the third task initiates SPI transfer by writing data to "EUSCI_B2_SPI->TXBUF". The fourth task they read the data sent by SPI to the board (master). This process repeated three times. 

Between these tasks, there seems to be no checks mode of the SPI interrupt flags to verify that our data to transmit is staged in steps three, five, and seven. More critically, data received interrupts are not checked prior to reading the data fro the SPI slave in step four, six, and eight. This could result in false data being read from an external peripheral, which is obviously undesirable. 

Is there a way to check these flags before storing? Why has this not been done? Am I missing something?

Last thing, why TI example codes do not have comments. I think if they are commented well we don't get confused and people don't just copy and paste the code from each other. Please please add more comments.

Regards,

Bezak

CCS/MSP430FR5994: Create universal function for MPU hardware

$
0
0

Part Number:MSP430FR5994

Tool/software: Code Composer Studio

Possible create universal function for hardware?

For examle function for I2C on different eUSCI

for B1

void I2C_init(unsigned int addr,unsigned int count,unsigned int dv){
    UCB1CTLW0 = UCSWRST; // Software reset enabled
    UCB1CTLW0 |= UCMODE_3 | UCMST | UCSYNC | UCSSEL__SMCLK; // I2C mode, Master mode, sync
    UCB1CTLW1 |= UCASTP_2; // Automatic stop generated
    UCB1BRW = dv; // baudrate divider
    UCB1TBCNT = count; // number of bytes to be received
    UCB1I2CSA = addr; // Slave address
    UCB1CTLW0 &= ~UCSWRST; // clear reset register
    UCB1IE |= UCRXIE0 | UCNACKIE; //receive interrupt enable
}

for B0 or A0, or A1 - change only name register

Why create one function for differnet  eUSCI ? if use pointer to map port directly - create variable, up use memory and other overheads 

MSP430F1611: MSP430 power consumption advances

$
0
0

Part Number:MSP430F1611

Hi there,

we are looking into developing a new version of our product that is based on the MSP430F1611IPM. We hope to extend the battery life of our device, which is mostly used to run FFTs periodically. I was trying to see what kind of advances TI has made since this chip that may help us to reduce the power consumption. We assume that just by the manufacturing advances since its development, we should be able to make some gains.

Unfortunately I could not find any kind of overview of the MSP430 chip generations and their power consumptions nor could I find suggestions for a more modern replacement for our chip. So before I need to dig through all the datasheets to try and calculate some ballpark figures, can you point me to some kind of resource that is presentable to my management, to argue that we could get better battery lifetime with a new chip?

A statement that the our chip is still state of the art would also help.

Cheers,

Olaf

MSP430L092: How to run asm program and find API functions, again

$
0
0

Part Number:MSP430L092

Replay to Mr. James,

Yes, there is some special reason, the ULV, I need to chose the L092.
The main reason that asm programs could not be run in my IAR system may be they are developed from CCS.,though they are all be provided from your company. There are many differences between CCS and IAR for the assembler. Is it right?
By the way, could you provide us some more examples of asm programs developed from IAR and for L092, and some programs showed Its API operation? If so, we will be easy  to master its developing.Thank you very much.
Regards,
Ruan

Appendix:

James Evans replied to Compiler/MSP430L092: How to run asm program and find API functions.

Hello,

Please check out the following threads that are related to this error. I suspect that you started with a C project and imported assembly code into it or vice versa.

Also, I would recommend updating your tools and your device. I would start by using our newest debugger, the MSP-FET, and also trying out our Code Composer Studio (CCS) IDE. Is there a specific reason that you've chosen the L092? We offer much newer, better supported devices, including some exciting ones from our FRAM family, like the MSP430FR2311.

Regards,

James

MSP Customer Applications


EVM430-F6779: Debugging is not possible because IAR is not available

$
0
0

Part Number:EVM430-F6779

Hi,

I would like to use the EVM430-F6779 reference design and modify the code to make it compatible with my application. Given that IAR license is not free, do you have any news regarding the posting of the code available in CCS?

Kind regards,

Pau

CCS/MSP-EXP430FR2433: MSP-EXP430FR2433

$
0
0

Part Number:MSP-EXP430FR2433

Tool/software: Code Composer Studio

I need to know if this development kit:

1- can be used to work as a stopwatch for time values up to 30 seconds with highest accuracy (for instance 0.00001 s or better);

2- what is the highest accuracy of measurements?

3- it can be adapted a proper display for measured time values (at least the last measured value or the last 5-8 values);

4- it is possible to save at least 40 values?

5- it is possible to transfer these values to a PC?

Please answer to my questions by e-mail

gdf.dragan@gmail.com

I thank you in the advance for help

dragan

MSP430F6779A: energy meter

$
0
0

Part Number:MSP430F6779A

hello sir,

              i am using TI's 3 phase energy meter module  and load the code which TI provided for msp430f67791A 3 phase meter with 4 mux lcd. but in our design we are going to interface 8 mux lcd in place of yours 4 mux lcd with this 3 phase energy meter design. My problem is that my lcd does not show any display when TI code for energy meter is load in the controller msp430f67791A. here in the given code i have also done the changes for 8 mux in lcd register as shown below in place of 4 mux lcd settings. my lcd is of 36 pin having 8 common and 18 segment lines.

// given below is 4 mux lcd setting

LCDCCTL0 = LCDDIV_31 | LCDPRE_1 | LCD4MUX | LCDON;

//Charge pump generated internally at 2.96V, external bias (V2-V4) generation
//Internal reference for charge pump
LCDCVCTL = LCDCPEN | VLCD_2_60;
REFCTL0 &= ~REFMSTR;

LCDCPCTL0 = 0xFFFF; //Select LCD Segments 4-5
LCDCPCTL1 = 0xFFFF; //
LCDCPCTL2 = 0xFFFF; //;

// given below are 8 mux lcd setting which i have done for lcd display

LCDCCTL0 = LCDDIV_31 | LCDPRE_1 | LCD8MUX | LCDON;

//Charge pump generated internally at 2.96V, external bias (V2-V4) generation
//Internal reference for charge pump
LCDCVCTL = LCDCPEN | VLCD_2_96;
REFCTL0 &= ~REFMSTR;

LCDCPCTL0 = 0xFFFF;  
LCDCPCTL1 = 0x0003;

But on same time this lcd gives proper display when any LCD sample code of msp430f67791A  is load in to it, by just doing register setting for 8 mux display.

please sir suggest me solution for this.

regards,

kinjal

EVM430-FR6047: FFT (via DSP Library API ) via LEA with 256 samples instead of 128 does not fit into existing memory

$
0
0

Part Number:EVM430-FR6047

Hello,

I followed the DSP Library example 'transform_ex1_fft_fixed_q15' to implement the use of the fast fourier transformation in my code which is supposed to take measurements and calculate the FFT (with the goal of getting the envelope by Hilbert transformation).

So far everything works fine, but only with a sample size of 128. After flashing it says: 'MSP430: Flash/FRAM usage is 40180 bytes. RAM usage is 4958 bytes.'

But with a sample size of 256 the following error occurs: "../lnk_msp430fr6047.cmd", line 257: error #10099-D: program will not fit into available memory. run placement with alignment fails for section ".leaRAM" size 0xea0 . Available memory ranges:   LEARAM       size: 0xec8       unused: 0xec8       max hole: 0xec8

But shouldn't there be plenty of memory left? The MSP430-FR6047 has 8 kB of RAM with 4 kB being shared between LEA and CPU. Am I overlooking something obvious?

The relevant code snippets would be:

Global:

#define FFTsamples 256

DSPLIB_DATA(input, MSP_ALIGN_FFT_Q15(FFTsamples)) _q15 input[FFTsamples];

In main flow:

// Fill input array with ADC Waveform
uint16_t* pUPSCap16 = (uint16_t*) (USS_getUPSPtr(&gUssSWConfig));
uint16_t c = 0;
while(c < FFTsamples) {
input[c] = *pUPSCap16;
pUPSCap16++;
c++;
}

// FFT
msp_fft_q15_params fftParams;
fftParams.length = FFTsamples;
fftParams.bitReverse = true;
msp_fft_fixed_q15(&fftParams, input);

Another question: I was wondering how, with a FFT sample size of 128 and for example only 160 available ADC samples, this code was capable of generating 128 valid FFT values. Doesn't the FFT of a real vector result in a vector of the same size, but mirrored, so only half of it is supposed to be usable? Is there some kind of interpolation involved or anything?

Best regards

Daniel

CCS: MSP430F5529 trying to generate a 5 MHz square wave to serve as a clock pulse for other equipment

$
0
0

Tool/software: Code Composer Studio

Hello,

I'm not very experience with programming micro-controllers and this is the first time I have worked with the MSP430F5529.

I need to produce a square wave with a frequency of 5MHz to serve as a clock pulse for another piece of equipment that I am working with. I have set the MCLK to 25 MHz and I have raised the voltage to accommodate this clock frequency. However, when I run the following code

for(;;) {

        P2OUT ^= 0x01;


    }

P2.0 is only toggled at a frequency of 1.61 MHz. Is there anyway to iterate through this loop faster? Presumably after that speed is increased, I can set a delay using __delay_cylces() to achieve the precise frequency.

Please help me if possible. I would appreciate any advice or suggestions.

Compiler/MSP430F2274: Why is this array not populating with data?

$
0
0

Part Number:MSP430F2274

Tool/software: TI C/C++ Compiler

I am trying to create a dynamic array and populate it with data, but in when debugging the code, the array is never populated with any data. Instead the value is consistently 0000. Attached is the code I am working with, the 

#include <msp430.h>
#include <string.h>
#include <stdlib.h>
void configWDT(void); void configClocks(void); void configGPIO(void); void configTimerA(void); static volatile unsigned char blink_cnt; static volatile unsigned short intrp_flg; int main(void) { blink_cnt = 0; intrp_flg = 0; configWDT(); configClocks(); configGPIO(); configTimerA(); int *password = (int *)malloc(128 * sizeof(int)); unsigned int i; for(i = 128; i > 0; i--) { password[i] = i; } __no_operation(); while(1) { __bis_SR_register(LPM3_bits + GIE); // Enter LPM3 if(blink_cnt) { P1OUT ^= BIT0; free(password); __no_operation(); } } } void configWDT(void) { WDTCTL = WDTPW + WDTHOLD; } void configClocks() { DCOCTL |= DCO1 + DCO0; BCSCTL1 |= XT2OFF + DIVA_3 + RSEL2 + RSEL1 + RSEL0; BCSCTL2 |= SELM_3 + SELS; BCSCTL3 |= XT2S_3; } void configGPIO(void) { P1DIR |= 0x03; // P1.1 output P1SEL |= 0x02; // P1.1 option select } void configTimerA(void) { TACCTL0 |= OUTMOD_4; // TACCR0 toggle mode TACCR0 |= 0xFFFF; TACTL |= TASSEL_1 + ID_3 + MC_3 + TAIE; // ACLK, up-downmode } // Timer_A3 Interrupt Vector (TAIV) handler #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__) #pragma vector=TIMERA1_VECTOR __interrupt void Timer_A(void) #elif defined(__GNUC__) void __attribute__ ((interrupt(TIMERA1_VECTOR))) Timer_A (void) #else #error Compiler not supported! #endif { intrp_flg++; switch(TAIV) // Efficient switch-implementation { case 2: break; // TACCR1 not used case 4: break; // TACCR2 not used case 10: if(intrp_flg % 2 == 0) { blink_cnt = 1; intrp_flg = 0; __bic_SR_register_on_exit(LPM3_bits); } else { blink_cnt = 0; } break; } }

MSP430F5529: USBMSC_pollCommand() and USBMSC_handleBufferEvent()

$
0
0

Part Number:MSP430F5529

Programmer's Guide MSP430 USB API states that the API doesn't interrupt the application to tell that a command has been received. The application uses USBMSC_pollCommand() to find that out. A paragraph in 8.5.5, says that any scsi command received by the API will not be handled (?) until USBMSC_pollCommand() is called ... My understanding is that the command IS handled by the API, it's just that if the application doesn't ask, the API will ...get stuck?. I don't know what is the set of scsi commands the API "understands", and I haven't found a listing of them. But then, there is USBMSC_handleBufferEvent(). This function seems to run every time the API has received a buffer command (read or write). So it seems to me that if code is added here to find what operation is required, process it, and modifies the returnCode, USBMSC_pollCommand() would not be required. And probably I'm wrong. Is it possible for somebody to clarify the use of these 2 functions. In the example I analyzed, USBMSC_handleBufferEvent() is empty and always returns a TRUE.

Regards


EZ430-RF2500-SEH: the SEH part shows no voltage

$
0
0

Part Number:EZ430-RF2500-SEH

Hello, I have the ez430 dev kit and the solar panel part appears to be broken. I removed the jumper, waited for it to harvest some energy, but the voltage on pins is still 0, it cannot supply the End Device. I am afraid that this part is broken. Should I return the kit or is it possible to somehow repair it by myself?

MSP430FR5969: Increase the accuracy of the ADC_12

$
0
0

Part Number:MSP430FR5969

I am testing the accuracy of the ADC_12 on A13 using a DC power supply and I have found that the values the ADC is reading varies more than expected. I believe that the expected difference should be around +/- 0.0003 (VREF/2^12), where VREF was set to 1.2V. But I am getting values more like +/- 0.02.

I tried increasing the accuracy by increasing the sample and hold time, but that did not seem to make a visible difference. The values would still fluctuate by +/- 0.02,

The current setup I have includes:

- Sample and Hold source -> ADC12SC bit

- Clock source -> ACLK

- Clock source divider -> /1

- Clock source predivider -> Predivide by 1

- Sample and Hold Time -> 8 ADC12CLK cycles

- Multiple Sample and Conversion-> enables

- Resolution -> 12-bit

- Voltage Reference -> VR+ = VREF buffered, VR- = AVSS

- Conversion Mode Sequence -> Sequence of Channels

Would the internal reference be inaccurate with an external input? In that, would the internal reference not necessarily be stable?

If you had any recommendations or suggestions on how to improve the accuracy of the ADC, that would be appreciated. Thank you!

MSP432P401R: Out of the box demo suddenly not working

$
0
0

Part Number:MSP432P401R

Hi,

I tried the out-of-the-box demo with my newly purchased MSP432 P401R (Read) Launchpad Dev Kit. I used the online (dev.ti.com) option, and I could modify LED 2's color and Frequency as mentioned. However, after trying to setup the BoosterPack MKII which resulted in some errors, I went back to trying the out-of-the-box demo. And I observe that the LED 2 no longer turns ON, and I cannot change the color or frequency of it. Could you please let me know why this might be happening and how I can get back to the factory way ?

Attached is the GUI too . 

Please let me know,

Thanks!

Avi

MSP-FET: The command line MSP-FET flasher produces surprising results when you read RAM with -r[...,RAM]

$
0
0

Part Number:MSP-FET

The command line Flasher tool MSP430Flasher.exe can write, read, or verify various memory regions of the MSP430 chips.

The -r ("Read") qualifier is documented as follows:

If you actually specify "RAM", though, (at least for my MSP430F2618), it doesn't read through the normal RAM window (in the address range 0x1100-0x30FF where all 8KB of the RAM can be seen) but instead reads through the low-addressed RAM "mirror" (in the address range the range 0x0200-0x09FF where only 2KB is visible, even on the MSP430F2618 with its 8KB RAM).

This isn't exactly a bug; it's more like a mis-feature. And you CAN work-around it by explicitly specifying the address range to be read:

-r[...,0x1100-0x30FF]

But this came as a a surprise to me; all the other range keywords seem to know exactly how big an area to dump for each chip in the family.

1) Is this the expected behavior and 2) would you consider changing it in a future release?

MSP430F5342: MSP430F5342 "lockup" does not recover with JTAG reprogram ... But does by powering down for a time ...

$
0
0

Part Number:MSP430F5342

MSP430F5342"lockup" does not recover with JTAG reprogram ... But does by powering down for a time ...

I am wondering if my current issue has been seen by anyone else ...

The case on the forum is different, as my current lockup does not recover with JTAG reprogramming ...

e2e.ti.com/.../545430 lockup

... But mine does recover if the board is unplugged for a period of time (5 minutes usually does it, but it can take up to an hour).

If the board is unplugged for a minute or two, the MSP430 still exhibits the lockup.

Any thoughts on what could be causing this would be great, as can happen only once months of development work.

The only other clue is it seems to happen after power cycling the board when everything is running fine (so perhaps powering off at the wrong time triggers it?)

Regards,

Jerry

Viewing all 21963 articles
Browse latest View live