How to wait in Low Power mode with FreeRTOS and Kinetis MKL16Z

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

How to wait in Low Power mode with FreeRTOS and Kinetis MKL16Z

Jump to solution
2,002 Views
bgraham
Contributor IV

Kinetis MKL16Z

MCUXpresso IDE v10.2.1 [Build 795] [2018-07-25] 

Amazon FreeRTOS

I need to put the MCU into low power mode.

I go the "power_mode_switch" example to work with my custom board.

I am attempting to convert the "power_mode_switch" example to work with FreeRTOS.

Around the calls to APP_PowerModeSwitch(), which calls SMC_PreEnterWaitModes() SMC_SetPowerModeWait(SMC), I used portENTER_CRITICAL() and portEXIT_CRITICAL().

portENTER_CRITICAL(); // stop the RTOS kernel tick timer

APP_PowerModeSwitch(SMC_GetPowerModeState(SMC), kAPP_PowerModeWait);

portEXIT_CRITICAL(); // resume the RTOS kernel tick timer

The FreeRTOS APIs did not keep the MCU in low power mode. I am guessing that an interrupt woke the MCU.

I would like to determine which interrupt woke the MCU. Can MCUXpresso catch the interrupt in the debugger?

The FreeRTOS docs do't cover this problem. Is there a "correct way" to do this in FreeRTOS?

Thanks,

Bruce

0 Kudos
Reply
1 Solution
1,790 Views
bgraham
Contributor IV

I think I have working solution.

I added a vApplicationIdleHook() that checks a global variable, and if set, it calls APP_PowerModeSwitch().

When an interrupt like the FreeRTOS system tick wakes MCU, the state of a user button is checked.

If pressed, the task that requested low power mode is sent an event, so that it wakes up.

View solution in original post

2 Replies
1,791 Views
bgraham
Contributor IV

I think I have working solution.

I added a vApplicationIdleHook() that checks a global variable, and if set, it calls APP_PowerModeSwitch().

When an interrupt like the FreeRTOS system tick wakes MCU, the state of a user button is checked.

If pressed, the task that requested low power mode is sent an event, so that it wakes up.

1,790 Views
danielchen
NXP TechSupport
NXP TechSupport

Thanks for sharing this good idea.

Regards

Daniel

0 Kudos
Reply