I’m trying to figure out how to properly setup a few ISRs for an application running on an Arduino Due using the Atmel SAM3X chip. I think I’m missing something regarding the use of FromISR APIs.
In the manual “Using the FreeRTOS Real Time Kernel – A Practical Guide” in the chapter 3 “Interrupt Management” section 3.5 regarding interrupt nesting the last two paragraphs state that
For ISRs to use the FromISR APIs the priority of the interrupt must be between configMAX_SYSCALL_INTERRUPT_PRIORITY and configKERNEL_INTERRUPT_PRIORITY. But then it goes on to say
“Interrupts that make API call can only use these priorities, but will be masked by critical sections” and “ Interrupts that use these priorities are prevented from executing while the kernel or application is inside a critical section”.
Can I interpret this as while in critical sections, interrupts with aforementioned priority range are masked and consequently missed? If this is the case what’s the point of the FromISR APIs? To me the beauty of synchronizing a task with an ISR using a binary semaphore is lost if you going to miss interrupts.
Without going into the details my application loses interrupts every once in a while using Give and Take on binary semaphores.