This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSPM0L1306: UART0 incorrect data

Part Number: MSPM0L1306
Other Parts Discussed in Thread: SYSCONFIG

Tool/software:

Team,

Posting on behalf of my customer.

Problem:  At maximum processor voltage (3.3V), the following sequence causes incorrect data (two extra 1 bits are inserted in the ‘\n’) to be emitted from UART0 on my MSPM0L1306 processor.  I’ve verified this by decoding the data with an oscilloscope.

Here is the code snippet, any ideas what could be causing this?

        // set up ADC conversion memories….then…

    DL_ADC12_enableConversions(ADC12_0_INST);

    while(!DL_UART_isTXFIFOEmpty(UART_0_INST))

    {

        ;

    }

    delay_cycles(1800);   // 1+ character times at 115200 baud

    DL_UART_Main_transmitData(UART_0_INST, ‘\n’);

    NVIC_EnableIRQ(ADC12_0_INST_INT_IRQN);

 

    gCheckADC  = false;

    DL_ADC12_startConversion(ADC12_0_INST);

    while (gCheckADC == false) {

        __WFE();

    }

        //… transmit more characters about the ADC results.

The ADC interrupt code:

void ADC12_0_INST_IRQHandler(void)

{

    switch (DL_ADC12_getPendingInterrupt(ADC12_0_INST)) {

        case DL_ADC12_IIDX_MEM3_RESULT_LOADED:

            gCheckADC = true;

            break;

        default:

            break;

    }

}

 

The UART0 interrupt code:

void UART_0_INST_IRQHandler(void)

{

    unsigned char gEchoData;

    switch (DL_UART_Main_getPendingInterrupt(UART_0_INST)) {

        case DL_UART_MAIN_IIDX_RX:

            gEchoData = DL_UART_Main_receiveData(UART_0_INST);

            if (rxNewest++ >= UINT8_MAX)

            {   rxNewest = 0;

            }

            if (rxNewest != rxOldest)

                rxBuffer[rxNewest] = gEchoData;

            else    // overflow; drop the character

                if (rxNewest-- ==0)

                    rxNewest = UINT8_MAX;

            break;

        default:

            break;

    }

}

 

Thanks,

Tom