Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
10 years, 9 months ago.
How to determine reset source in KL46Z?
E.g., From external reset pin, power on reset (POR), timer, watchdog, etc. I looked for, but failed to find, source code referring to the Freescale RCM_RPFC reset register which has flag bits for the reset type. Also looked for RCM->POR or RCM->PIN. Has this been implemented in the Freescale ports? Thanks!
2 Answers
10 years, 9 months ago.
Hello K B,
I don't recall seeing any library which would use RCM registers to recover an application after reset. What exactly do you need?
Here's an example how RCM can be used, taken from TSS library:
/* Read RCM for identification of Chip Reset reason */ if (RCM->SRS0 & RCM_SRS0_WAKEUP_MASK) { /* Releases hold with ACKISO: Only has an effect if recovering from VLLS1, VLLS2, or VLLS3 if ACKISO is set you must clear ackiso before calling pll_init or pll init hangs waiting for OSC to initialize if osc enabled in low power modes - enable it first before ack if I/O needs to be maintained without glitches enable outputs and modules first before ack. */ if (PMC->REGSC & PMC_REGSC_ACKISO_MASK) { PMC->REGSC |= PMC_REGSC_ACKISO_MASK; /* Clear ACKISO bit */ LLWU->ME &= ~LLWU_ME_WUME4_MASK; /* TSI LLWU Input Disable = LLWU_M4IF */ } } else if (RCM->SRS0 & RCM_SRS0_LOC_MASK) { /* Loss of clock case */ }
Martin, Following a reset, I'd like to take action based on what caused the reset. Especially if power on versus watchdog versus reset button. I appreciate the seemingly on-point code snippet, but I don't know the what/where of the "TSS library?" Can you please direct me? Thanks!
posted by 13 Mar 2014That was just a note that the code was taken from that libray. The TSS library, it's from Freescale, not available on mbed due licensing issues.
I found something better for you, User guide for Kinets (this document is for Kinetis V, but will be valid for kinetis L, at least what you need). There are user guides for each kinetis line, most probably kinetis L should contain same wake up section. You can find it on freescale webpage.
Refer to : http://cache.freescale.com/files/microcontrollers/doc/user_guide/KVQRUG.pdf Scroll to the section 5.4.2.5 Wake-up sequence, there are code snippets with explanation. Good starting point.
Regards,
0xc0170
10 years, 9 months ago.
The KLQRUG.pdf document, which is for the Freescale KL processors, is where I originally found the references to the RCM register and reset flags. What had me stymied, was how to use them in the mbed environment. E.g., was there some library/structure, etc. for them.
Martin has encouraged me to use the same code for mbed and it works!
An example for power on reset check:
if (RCM->SRS0 & RCM_SRS0_POR_MASK) porTrue = TRUE; else porTrue = FALSE;
The defines are already in MKL25Z4.h and MKL46Z4.h.
So, thanks very much Martin! -Keith