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.

MSP430FR6045: Power on reset time

Part Number: MSP430FR6045
Other Parts Discussed in Thread: MSP430FR6047

In MSP430FR6047 EVM, I am seeing that after power ON reset pin turns high. The first thing I am doing is making GPIO low. So after RESET pin turns high it takes 40ms time to P9.0 to turn low. So why this 40ms delay is there as first thing after power up inside main() I am making GPIO low?

 

Regards

Anup Kumar

  • Try setting the GPIO before C initialization, using something resembling

    int _system_pre_init(void) 
    {
      P9OUT |= BIT0; // P9.0 high
      P9DIR |= BIT0; 
      return(1);     // Continue with C init
    }
    .

    This allows you to measure how long setting up .data/.bss takes.

    [Ref MSP430 C Compiler User Guide (SLAU132Y) Sec 6.9.1]

    [Edit: Changed to use P9.0 instead of P1.0]

  • Your delay is greater than the nominal power up watchdog setting of 32ms so the 40ms delay you are seeing isn't entirely from the C startup.

    Also, the internal pullup on reset getting enabled is done by hardware during the reset process. It could be some time till your program is started. For example, boot code (1.10) always runs.

  •   

    int _system_pre_init(void)
    {
    }

    Inside this function When I make to returns 0, the initialization time reduces to 4 milli seconds at it was 40 milli seconds previously.

    So now what next to do to get around 1-4 mili seconds initialization time after reset turns High.

    regards,

    Anup Kumar

  • POR also need to consider the Reset pin charge time, do you take this part into consideration?

  • [Recent CCS versions include an auto_init hook which holds the Watchdog during C initialization. This feature appears to be automatically enabled in new projects, so presumably it is here.]

  • It sounds as though 36ms (90%) of your startup is C initialization, which is dominated by .data/.bss initialization. I.e. you have a fairly large collection of variables, which one supposes you need.

    You could gain something if you can e.g. trim array sizes. In the extreme, you might get something out of NOINIT, but that would require more understanding of your application than we have.

**Attention** This is a public forum