Hi. I'm working on a project which makes use of "embOS for M32C and Renesas NC308 compiler" and I've found a bug in my firmware I should solve. The device that I'm programming is an RS-232/RS-485 comunications concentrator, and the problem ocurs when there is high communications throughput. In this situation, some times, the concentrator looses some bytes in one of it's UARTs, and this slows down the communications process due to communication retries.
I have carefully checked the firmware and have realized that the problem is due to the fact that these "lost bytes" are not received in the interrupt routine, maybe because the processor is busy executing another interrupt. So maybe the problem is that some UART interrupts are lost when the system is busy on other interrupt.
I've cheked our OS docuemntation and have found that exists a function named OS_EnterNestableINterrupt() which I'think could solve the problem reenabling the interruptions while another interrupt is being executed. The ISR function is:
My cuestion is: would be right replace OS_EnterInterrupt(); with OS_EnterNEstableInterrupt?
Thanks in advance!
Jordi
I have carefully checked the firmware and have realized that the problem is due to the fact that these "lost bytes" are not received in the interrupt routine, maybe because the processor is busy executing another interrupt. So maybe the problem is that some UART interrupts are lost when the system is busy on other interrupt.
I've cheked our OS docuemntation and have found that exists a function named OS_EnterNestableINterrupt() which I'think could solve the problem reenabling the interruptions while another interrupt is being executed. The ISR function is:
My cuestion is: would be right replace OS_EnterInterrupt(); with OS_EnterNEstableInterrupt?
Thanks in advance!
Jordi