Hello,
i'm using the KL46 with KDS3.2 and SDK1.3.
I use the rtc to wakeup the micro every 4 minute and 30sec. I use the function RTC_DRV_SetAlarm to set the alarm and i reset the RTC timer to 0, so i have this condition:
i read then some sensor and put the micro in VLLS1 with this function:
Peripheral_Disable();
POWER_SYS_SetWakeupModule(kPowerManagerWakeupModule5, TRUE);
error = CLOCK_SYS_UpdateConfiguration(2, kClockManagerPolicyAgreement);
i = CLOCK_SYS_GetCoreClockFreq();
POWER_SYS_SetMode(2, kPowerManagerPolicyAgreement);
the system wake up and in the llwu interrupt i have this:
PMC_REGSC = PMC_REGSC_ACKISO(1);
PORT_HAL_ClearPortIntFlag(PORTD_BASE_PTR);
if(POWER_SYS_GetWakeupModuleFlag(kLlwuWakeupModule5)){
SIM_SCGC6 |= SIM_SCGC6_RTC_MASK;
RTC_DRV_AlarmIntAction(RTCTimer_IDX);
impulsi_pioggia=0;
}
then the micro reinit doing this command:
/* Write your local variable definition here */ | |
byte error = 0; |
/*** Processor Expert internal initialization. DON'T REMOVE THIS CODE!!! ***/ | |
PE_low_level_init(); | |
/*** End of Processor Expert internal initialization. ***/ |
LPTMR_DRV_Start(Timer_1ms_IDX); | |
Init_UART0(48000, 115200); |
#ifdef DEBUG
debug_printf("////////////////////////////////////////////\r\n");
debug_printf("////////////////////////////////////////////\r\n");
RTC_DRV_GetDatetime(RTCTimer_IDX, &DataTime);
debug_printf("Actual Time %02d.%02d.%02d %02d/%02d/%02d\r\n",
DataTime.hour, DataTime.minute, DataTime.second, DataTime.day, DataTime.month, DataTime.year);
#endif
i read : Actual Time 00.04.55 01/01/1970 so there are 25 sec of delay ... why this? they are so many...
In clock configuration 2 used in the VLLS1 i have set this clock
Thanks
Hi
KL46 MCU wake up from VLLS1 to normal Run mode will go through wake-up reset (Follows the reset flow with the LLWU interrupt flag set for the NVIC).
For the RTC module doesn't affected with VLLS1 low power mode and wake-up reset procedure, the timer will continue counting at VLLS1 low power mode.
That's why customer will find the RTC timer pass 25 seconds after VLLS1 low power mode wake up.
Wish it helps.
Have a great day,
Ma Hui
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Hello,
yes, but my question is why the cpu take 25 seconds to wakeup? It's a long time. Before the printf the only code executed is the peripherals init.
Thanks
Hi
Could you provide the whole project source code?
I want to make sure the RTC counter value just before core enter into VLLS1 low power mode.
Customer doesn't need to update the core/system clock configuration before enter into VLLS1 mode.
Wish it helps.
Have a great day,
Ma Hui
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Hi
There with a similar demo at <FRDM-KL46Z and TWR-KL46Z48M Sample Code Package> named [lcd_rtc_lowpower_tower] demo. The default project path is ..\kinetis_kl46_sc\kinetis_kl46_sc_rev2\klxx-sc-baremetal\build\iar\lcd_rtc_lowpower
The demo using RTC as wake up source and will wake up the KL46 from VLLS1 low power mode every 5 seconds.
I checked the KL46 reference manual, below picture shows the MCG module is OFF during VLLSx clock mode.
Customer could not using MCG IRC 32KHz clock as RTC module clock, the RTC module clock source with below option:
Customer need to use TWR-KL46Z48M to do the RTC wake up KL46 MCU from VLLS1 low power mode test, for the TWR-KL46Z48M board provides 32KHz oscillator connects with RTC_CLKIN pin.
Wish it helps.
Have a great day,
Ma Hui
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Hello,
yes in fact i use the LPO 1khz like clock source for the RTC. You can see this in the fsl_clock_manager, clock configuration 2.
Thanks
Daniele Cortellazzi wrote:
yes in fact i use the LPO 1khz like clock source for the RTC.
If you are measuring the extra 23 seconds from real time (instead of from the RTC time on the MCU), it may be that the LPO 1 kHz clock's poor accuracy is to blame. It is specified as 1 kHz +/- 10%, and 23 seconds in 5 minutes is about 8% error, so it's possible that is part of it.
Hi
I checked your project, In <Wakeup.h> with below definition:
#define MIN_WAKEUP 5
#define SEC_WAKEUP 00
If that code be updated before you sent the code?
Wish it helps.
Have a great day,
Ma Hui
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
The firmware wake-up, reset the rtc in set_wakeup_timer and set the alarm after the MIN_WAKEUP (minutes) : SEC_WAKEUP (seconds). In the firmware sended the wakeup alarm is set after 5 minutes.
Thanks
AlarmDataTime = DataTime; AlarmDataTime.minute = MIN_WAKEUP; AlarmDataTime.second = SEC_WAKEUP;