Hello my friends,
I have been developing applications using MPSL and timers and PPI for time-sensitive tasks like synchronized radio communication.
Now, I have a few questions regarding the timer options available and their pros and cons.
1. As far as I know, assuming that the interrupts are enabled, the MPSL can only return interrupts for TIMER0. I know that I can configure the TIMER instances, but I am not sure if the MPSL will operate using my configured TIMER0, or all the configs will be override once MPSL is initiated (or softdevice).
2. I suppose that TIMER0 is a power-hungry timer, and I am wondering if configuring it into lower frequency like 32KHz range (if possible) would make it an energy efficient timer like the RTC or the kernel timer?
3. I know that I can configure TIMER1. If TIMER0 is not accessible, I am wondering if configuring TIMER1 into a lower frequency like 32KHz range would make it an energy efficient timer like the RTC or the kernel timer?
4. Is it possible to get MPSL timer callback from other timers? Let's say the RTC timer?
5. I have seen that the energy-efficient timers like RTC can be calibrated to improve on their accuracy; for this, should I just do a configuration setup in the project configuration or I need to develop a code for. If it is just a configuration set up, could you tell me what recent Kconfig I need to use? I have found "NRF_SDH_CLOCK_LF_RC_CTIV".
6. In general, is using MPSL a good idea to implement energy efficient proprietary communication protocols? or it introduces significant energy consumption? I mean is there a significant extra energy cost just because of using the MPSL and requesting time slots, considering that I reset the timers, radio, PPI peripherals immediately after they are done with the tasks.
7. Does Zephyr RTOS k_work and k_timer work based on the RTC timer? If we do calibration, if it is going to affect the kernel timing?
Assume that I need to get the MPSL callbacks, and therefore I am enabling the interrupts in the above cases!