FreeRTOS Support Archive
The FreeRTOS support forum is used to obtain active support directly from Real
Time Engineers Ltd. In return for using our top quality software and services for
free, we request you play fair and do your bit to help others too! Sign up
to receive notifications of new support topics then help where you can.
This is a read only archive of threads posted to the FreeRTOS support forum.
The archive is updated every week, so will not always contain the very latest posts.
Use these archive pages to search previous posts. Use the Live FreeRTOS Forum
link to reply to a post, or start a new support thread.
[FreeRTOS Home] [Live FreeRTOS Forum] [FAQ] [Archive Top] [March 2017 Threads]
I am currently developing a project with FreeRTOS (v8.2.1) on ARM Cortex-M3 (STM32F103xE) and IAR Compiler and all the software timers callbacks stopped being called after a systick overflow.
I also created a minimal example and the result was the same. The timer worked just fine until the overflow on xTickCount. Am I missing something here or is there really a bug?
I also tried to create the timer within a task, or starting it after osKernelStart(), but it's always the same result.
FreeRTOSConfig.h:
~~~
...
define configUSE16BIT_TICKS 1
define configTICKRATEHZ ((TickType_t)1000)
define configUSE_TIMERS 1
define configTIMERTASKPRIORITY 3
define configTIMERQUEUELENGTH 6
define configMINIMALSTACKSIZE ((uint16_t)128)
define configTIMERTASKSTACKDEPTH configMINIMALSTACK_SIZE
...
~~~
main.c:
~~~
static volatile uint32t testtick = 0;
TimerHandlet test_timer = NULL;
void testticktimer(void * n) {
testtick += 10;
}
int main() {
// Hardware configuration (clock, systick, ...)
testtimer = xTimerCreate("testtimer", pdMSTOTICKS(10), pdTRUE, (void *) 2, testticktimer);
xTimerStart(test_timer, 0);
osKernelStart();
while(1){}
}
~~~
The behaviour of software timers when the tick overflows is very well tested. In addition soak tests that use a 16-bit counter, which results in frequent overflows, run for months with no failures. That doesn't mean there are not bugs though, just that if there are our tests don't find them.
It looks like you are using an abstraction layer on top of the FreeRTOS API. My first suggestion would be to try using the native API directly. If you still have a demostatable issue after that please create the smallest project possible that exhibits the behaviour along with instructions on how to observe the error and we can investigate.
Actually I was using the version 8.2.2 and the problem occurs only in this version.
I tried 8.2.1 or 8.2.3 and it worked as excepted. It's probably the same bug fix related to tickless low power applications.
Didn't realise you were using tickless - tickless and software timers
didn't used to work together but that was changed some versions ago.
I am not using tickless. I just suspect that the same bugfix that corrected the tickless problem between 8.2.2 and 8.2.3 also corrected my problem.
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.