RTOS version: 8.0.0
IDE: Rowley Crossworks for ARM
We have a debounce algorithm for a membrane switch, which relies on the setting and resetting of a timer in RTOS, based on button edge interrupts. This works great for a while, then the system appears to hang up after many repeated button presses. I traced the reason to this line in timers.c:
static void prvProcessReceivedCommands( void )
BaseType_t xTimerListsWereSwitched, xResult;
while( xQueueReceive( xTimerQueue, &xMessage, tmrNO_DELAY ) != pdFAIL )
where suddenly I get a return status from the xTimerStopFromISR or xTimerStartFromISR indicating that the queue is full. I put a printf debug after the xQueueReceive and recreated the problem, and indeed this no longer was processing the messages from the timers. So the queue fills, the kernel seems quite happy, but we cannot navigate from the current screen as the buttons are frozen…any ideas what is stopping this from working?