Hi,
I use a system with BLE softcore running - and can generate highly precise pulses with the gpio pins using Timer1+2 with interrupt service routines. Jitter might be definitely below 10usecs. It does not matter if I send 1 or 13 telegrams a second from mainloop context, ISR timing keeps precise.
If I start regularly a manual ADC conversion (ADC->TASK_START=1)(from main loop or isr (didnt try PPI)) my precise pulse timing is gone. I got up to 700(!!)usecs jitter on my timing signals.
Jitter disappears if I turn off softcore or dont touch the DAC.
Conclusions/Ideas: ...its pretty scary where this 700usecs come from. ...if there is Timer0 running with the BLE stack and polling for non-busy ADC in the isr (how is the RSSI measured ?????) - this could somehow interfere - This would mean if a lower priority runtime / mainloop /low pri irq / is starting the adc - there might be busy blocking in the Timer0 irq from the stack. I read somewhere that the conversion time should be about 70usecs - why is it blocking irqs 700usesc ? Where does this jitter come from ? There has to be an arbitration issue with softcore and ADC. If we have this issue - how could I sample regularly without introducing this runtime penality ?