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.

MSPM0G1506: Behavior after BOR Reset

Part Number: MSPM0G1506

Tool/software:

Hello.

I have a question about the behavior of the MSPM0G1506 after a BOR reset.

I intentionally caused a BOR reset by manipulating the power supply.

The BOR level was set to 1, and the power supply was changed from 2.3V to 2.0V, then back to 2.3V.

I was able to confirm that the MAPM0G1506 reset, but after the reset it stopped responding to interrupts.

When I turned the power back on, it started responding to interrupts.

My questions are as follows.

1) Are there any specifications that would prevent functions such as interrupts from being used after a BOR reset?

2) If I leave it at 2.0V instead of returning it to 2.3V, how will the MSP behave? Will it keep resetting all the time?

Thank you in advance.

-Tsuchiya

  • In TRM: 2.2.3.2 Brownout Reset (BOR) Supervisor

    If the BOR is in interrupt mode (a threshold level of BOR1-BOR3), and the supply drops below the corresponding
    BORx- level, an interrupt is generated and the BOR circuit automatically switches the BOR threshold level to
    BOR0 to make sure that a BOR- violation is asserted if VDD drops below BOR0-.

    Need to check whether MSPM0 stuck in this, if you ser BOR level to BOR1

    /* This is the code that gets called when the processor receives an unexpected  */
    /* interrupt.  This simply enters an infinite loop, preserving the system state */
    /* for examination by a debugger.                                               */
    void Default_Handler(void)
    {
        /* Enter an infinite loop. */
        while (1) {
        }
    }

    Also, BOR1 will release when power supply back to 2.3V.

    1) Are there any specifications that would prevent functions such as interrupts from being used after a BOR reset?

    BOR0 is BOR reset, BOR1 will generate a NMI.

    BOR interrupt is a NMI, if you didn't implement the NMI, M0 will run into default handler with infinite loop.

    2) If I leave it at 2.0V instead of returning it to 2.3V, how will the MSP behave? Will it keep resetting all the time?

    In BOR1's NMI.

    Pease add these two interrupt handler and check when voltage drop from 2.3 to 2.0V, whether MSPM0 run into NMI or not.

    You can turn on a LED in NMI.

    void NMI_Handler(void)
    {
        __BKPT(0);
    }
    void HardFault_Handler(void)
    {
        __BKPT(0);
    }

  • Hi, Helic Chi.

    I confirmed that the NMI handler is called at BOR1.

    I created a Reset function in the NMI handler to enable the GPIO interrupt.
    However, the GPIO interrupt event is not generated.

    If I reset the power, the interrupt event will occur.


    void NMI_Handler(void)
    {
    	SoftwareReset();
    }
    
    void SoftwareReset( void )
    {
        DL_GPIO_setLowerPinsPolarity(BUTTON_PORT,
    		DL_GPIO_PIN_10_EDGE_RISE_FALL | DL_GPIO_PIN_11_EDGE_RISE_FALL);	
    	
    	// Button INT
    	DL_GPIO_initDigitalInputFeatures(BUTTON_IOMUX,
    		DL_GPIO_INVERSION_DISABLE, DL_GPIO_RESISTOR_NONE,
    		DL_GPIO_HYSTERESIS_DISABLE, DL_GPIO_WAKEUP_DISABLE);
    
    	DL_GPIO_clearInterruptStatus(GPIOA, BUTTON_PIN);
    	DL_GPIO_enableInterrupt(BUTTON_PORT, BUTTON_PIN);
    }

  • I created a Reset function in the NMI handler to enable the GPIO interrupt.
    However, the GPIO interrupt event is not generated.

    What does this function do?

    You didn't enable NVIC interrupt controller of GPIOA. Or you already enable the NVIC in main?

    Also, software reset is the function of this API: DL_SYSCTL_resetDevice