Hello everyone
I have a problem in one of my applications. I have a timer interrupt which should trigger every ms an event. The problem is that after some time (20 min - 2h), the _lwevent_set functions hangs up.
while (q_ptr != (QUEUE_ELEMENT_STRUCT_PTR) ((pointer)&event_ptr->WAITING_TASKS)) { td_ptr = (pointer)q_ptr; _BACKUP_POINTER(td_ptr, TD_STRUCT, AUX_QUEUE); next_q_ptr = q_ptr->NEXT; if (((td_ptr->FLAGS & TASK_LWEVENT_ALL_BITS_WANTED) && ((td_ptr->LWEVENT_BITS & set_bits) == td_ptr->LWEVENT_BITS)) || ((!(td_ptr->FLAGS & TASK_LWEVENT_ALL_BITS_WANTED)) && (td_ptr->LWEVENT_BITS & set_bits))) { /* Start CR 406 */#if 0 _QUEUE_DEQUEUE(&event_ptr->WAITING_TASKS, q_ptr);#endif _QUEUE_REMOVE(&event_ptr->WAITING_TASKS, q_ptr);/* End CR 406 */ _TIME_DEQUEUE(td_ptr, kernel_data); td_ptr->INFO = 0; _TASK_READY(td_ptr, kernel_data); /* store information about which bits caused task to be unblocked */ td_ptr->LWEVENT_BITS &= set_bits; set_bits &= ~(event_ptr->AUTO & td_ptr->LWEVENT_BITS); } /* Endif */ q_ptr = next_q_ptr; } /*next_q_ptr is equal to q_ptr, so the while loop becomes an endless loop. I don't know why this can happen.
Did someone else already have a similar problem? The interrupt is installed by calling _int_install_isr().
The platform is a Kinetis PK60DN512VLL10 with MQX V3.8 compiled on Codwarrior 10.2.
Best regards
Stefan