I was quickly browsing over the source code for APM 2.6. I noticed that the main loop uses just some straight up timers to check for how often update routines are called and so forth.


Are there any benefits to modifing this code to use interrupts or TimedAction to ensure that the loop doesn't get stuck? (you would also have to do some mutex logic if that's needed also).


I deal with this problem on a similar project where reading from a UART might timeout and so forth. I would think in a real time environment this is even more critical.



Views: 585

Reply to This

Replies to This Discussion


Have you tried prototyping something? The FastSerial library uses an interrupt timer, but I do not know if the hardware supports more interrupts or how it would benefit the performance of the code. 

I am not aware of any problems with code "freezing". The main goal on the APM is simply to run the loops as fast as possible, since the CPU is not too powerful and (at least for copters) you need a high sampling rate to stabilize the platform. So one consideration might be whether loops are faster than re-entrant interrupt callbacks. 

I'll prototype out something; I was just worried about blocking I/Os in a real time scenario.

Reply to Discussion


© 2019   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service