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

Reply via email to