Hi, while working on nRF52 BLE link-layer I experienced some problems due to delayed ISRs. This can be quite problematic for handling all the tight timings required by the standard. I eventually reached an implementation that can deal with this relatively well (BLE standard gives some leeway for some small number of dropped packets and also retransmits missing ones). However, as other peripherals start generating more interrupts, this could actually become a problem. Also, I think it would be good to know BLE ISRs will always have priority.
I've been looking into how ISRs can be prioritized but I don't have much experience with this, so I have some questions: * Does nRF52 need explicit support for handling interrupts with different priorities or is the support supposed to be taken care of at the ARM level code? * How well supported is this in nRF52/ARM? * Do interrupt priorities imply nested interrupts? It isn't clear to me if priorities only mean which ISR will get served first when they are pending together or if it also implies that a low priority interrupt can be interrupted to handle a higher priority one (I believe the latter is what is usually refered to as "nested interrupts") * How does enter_critical_section() deal with priorities? How do I know which priority is masked and which one isn't? * Which configs should I enable to try this? Thanks, Matias