usage of configUSE_TICKLESS_IDLE
hi,
i am working on low power mode, here i using the freertos functionality vPortSupressTicksandSleep() ot make the harware sleep and wakeup after a interrupt given, for using this function i need to define
usage of configUSE_TICKLESS_IDLE
define configUSETICKLESSIDLE 1 in the file where the sleep mode is configured, it does not enable this function.Which function? Assuming you are using a Cortex-M3, M4F or M7 port, then setting configUSETICKLESSIDLE is 1 will the ‘supportess ticks and yield’ macro is called, which by default, calls vPortSuppressTicksAndSleep() defined in the FreeRTOS port.c file.
usage of configUSE_TICKLESS_IDLE
Hi,
Thank you Richard for the reply.
I am referring to the function called vPortSupressTicksandSleep() and I am
using cortex M7.
Now the issue:
If I make the macro defined to 1, I would observed that the presleep and
post sleep called continuously, is the behaviour expected or not?
On Tue 20 Aug, 2019, 12:25 AM Richard Barry, rtel@users.sourceforge.net
wrote:
define configUSETICKLESSIDLE 1 in the file where the sleep mode is configured, it does not enable this function. Which function? Assuming you are using a Cortex-M3, M4F or M7 port, then setting configUSETICKLESSIDLE is 1 will the ‘supportess ticks and yield’ macro is called, which by default, callsvPortSuppressTicksAndSleep() defined in the FreeRTOS port.c file.
usage of configUSETICKLESSIDLEhttps://sourceforge.net/p/freertos/discussion/382005/thread/d3e4e92feb/?limit=25#0403/aee7
Sent from sourceforge.net because you indicated interest in https://sourceforge.net/p/freertos/discussion/382005/ To unsubscribe from further messages, please visit https://sourceforge.net/auth/subscriptions/
usage of configUSE_TICKLESS_IDLE
In the source code you will see that vPortSuppressTicksAndSleep() is
called if the expected idle time goes above a threshold you configure
using the configEXPECTEDIDLETIMEBEFORESLEEP constant
FreeRTOSConfig.h – then inside vPortSuppressTicksAndSleep() you have the
following code which is where the pre and post sleep functions (which
are defined by the application) are executed.
configPRESLEEPPROCESSING( xModifiableIdleTime );
if( xModifiableIdleTime > 0 )
{
__asm volatile( “dsb” ::: “memory” );
__asm volatile( “wfi” );
__asm volatile( “isb” );
}
configPOSTSLEEPPROCESSING( xExpectedIdleTime );
Which bit is not executing as you expect? When you step through the
code in the debugger why is it not behaving as expected?