We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hi, All!
My problem is exactly the same as http://www.keil.com/forum/13634/
void UARTHandler (void) __irq { isr_evt_set(0x0001,UART_TASK); //use "os_evt_set" works } void task_UART_received (void) __task { for(;;) { //can not get here if I use "isr_evt_set": os_evt_wait_or(0x0001,0xffff); ...... } }
I could not reach os_evt_wait_or section, program is always pending in irq interrupt. But if I change isr_evt_set to os_evt_set everything work fine.
Task task_UART_received is created before first UART interrupt occurs. I don't understand where error is. Do you have some ideas about? Thank you.
Don't you think you should service the UART before returning from the ISR? Wouldn't you think the UART will request a new interrupt if you don't service it?
You normally have the ISR pick up any received characters (or send out any outgoing characters). Then you have a thread process the received and queued data, or compute more data to queue for transmission when the UART becomes ready again.
First could you post the Id chip (LPC24xx, LPC3250 ?)
Secondly if you're working with MCB2300, check if all uart interrupt event have been validate (see uart register)