Quoted from benheck:
And yeah it sounds super fast but it would mean an entire "game logic loop" is 5ms, which is a very long time at a hardware level. Consider this psuedo-code, with each action taking 1 ms:
ms0: Do stuff
ms1: Check flipper buttons
ms2: Energize coils if button pressed.
ms3: Do other things
ms4: Do other stuff
This brought back memories of a product I worked on which had to be converted from this algorithm to an interrupt driven approach.
Event loops like this are sensitive and sometimes just can't be tuned to generate a predictable response.
Since the beagle bone has the PRU's, I had assumed those were being used for things like flippers with more hard real time constraints? For those who don't know the PRU's are "separate" CPUs intended to handle real world/time sensitive work... Especially since standard Linux can't provide extremely predictable response times (although there are some distros with features to provide more precise response capabilities)
I'm curious about how the circuit is wired up... Are the flipper switches wired direct to the beagle inputs? This would mean they'd need software debouncing (all switches oscillate open/closed when initially released/opened)
Are the coil drivers being driven directly by the beagle? Or is there another microcontroller handling I/O?
If there's just discrete logic/components then the variability must be from software (as bobukcat noted hardware typically varies orders of magnitudes less than mSec)
Fascinating that a more distributed CPU architecture like Stern Spike is allowing them to modulate the coil.
Even more interesting to me is the data which makes me wonder if the MMr I've been playing recently on location exhibits this behavior or I'm just terrible at pinball
PS that product I mentioned happened to be emulated 6809 code running on a 333mhz powerPC back in the mid-90's...A real time OS was running on both 'chips' (a Linux-like OS on the powerPC and an in-house OS on the 6809.) We had to pull some functions out of the 6809 and implement them on the powerPC to get the required response times.