I’m giving up on Phoebe and adding new sensors using the IMU FIFO code. The final nail in the coffin was I spotted I2C errors while I was trying to diagnose the squid problems. I2C errors rule out using the IMU FIFO as the code then gets out of sync with what data it’s getting from the FIFO. That means Phoebe has to switch back to using the data ready interrupt code, which in turn means she can’t periodically do something else like read other sensors because she can’t afford to miss the next interrupt and hence the next batch of data.
I’ve never been able to find the source of these I2C errors but I guess it’s the PCB, and I’m not going to get a revised version designed any time soon based on speculation alone.
Zoe on the other hand is still working perfectly – no I2C errors with identical code perhaps because she’s the daughter of Johnny Ball, a science presenter from my era, who also has cartoon appearances on the Raspberry Pi site. But more likely is that she’s a Zero not an A+ and running a different PCB design as result (both mine and A+/Zero). Unfortunately Zoe would need a new PCB to add the URF for vertical motion tracking, and she could never have a camera for the horizontal motion tracking – PiZero’s don’t have the camera socket. So Zoe’s is essentially finished other than fine tuning.
So this project is grinding to a terminal halt for the moment until either an A2 appears on the market allowing me to split the DRI code from the motion processing and connect them with an OS FIFO, or I get a new PCB done for an A+ where there’s no guarantee this will fix anything.