Background
For nearly all outputs, rusEfi uses a single global scheduling queue. This includes injectors, ignition coils, and PWM (idle, ETB, etc). When we decide that we know when an event will happen in the future, we schedule it to occur later. Scheduling an event inserts it in to a priority queue of all future scheduled events, and sets a timer to expire when the first item in the list should occur.
What does "Scheduler Performance & Accuracy" mean?
The scheduler's job is to provide precision scheduling for outputs and other events. Ultimately, if the scheduler is doing its job, the following will be true:
- Injections will be of the correct duration (fuel quantity)
- Injections will begin/end at the correct engine phase (SOI/EOI timing)
- Ignition events fire at the correct time (is ignition timing correct? This one makes power!)
- PWM duty cycle & frequency are correct
- MAP sensor windowing is measuring manifold pressure over the correct interval
I made measurements by "running an engine" on the bench. I connected together a pair of STM32 F4 Discovery boards: one simply generating a trigger at 5000 rpm, and the other "running the engine". A Saleae logic analyzer was then connected to monitor the trigger input, and a few each ignition and injection outputs. Logic analyzer data was exported to Excel, where analysis was performed.
Findings are presented are in the following posts.
tl;dr: As-is performance was okay, but not great. A few relatively straightforward changes improved accuracy by an order of magnitude.