I am trying to get a workaround for the following problem:
- KL15Z128 MCU
- bootloader uses SRCM_SRS1 & RCM_SRS1_SW_MASK as criterion to stay in bootloader/update mode
- watchdog is unused/disabled
- I need to reset the MCU from the application while restarting (not staying in bootloader/update mode), so
SW reset can not be used for this.
As I have a rather large capacitor and pull-up connected to RESETb/PTA20
I thought about setting PTA20 low as a GPIO and then switch it back to
RESETb function to let the MCU reset itself, but this does not work. This
is my code:
|PORT_PCR_REG(PORTA_BASE_PTR, 20) = PORT_PCR_MUX(1);|
|GPIOA_PDDR |= (1 << 20);|
|GPIOA_PCOR = 1 << 20;|
|PORT_PCR_REG(PORTA_BASE_PTR, 20) = PORT_PCR_MUX(0);|
There is no low pulse on PTA20 and when single-stepping through the
code, I can see PORTA_PCR20, GPIOA_PDDR and GPIOA_PDOR
being correctly set, but GPIOA_PDIR always reads '1' in bit 20.
From the data sheet I see no limitation in PTA20 GPIO functionality,
but to me it seems that this pin is input-only in hardware.
Did anybody else try this yet and can share their experience?