On July 4th I finally got the newest prototype working. But it runs very slowly...
I chased some rabbits, learned even more, and figured out that the enable transistor has too much of a voltage drop for the system running at 3.3V. With the enable transistor, there are a total of three transistors in series for each core matrix wire. That doesn't leave much current for flipping bits. As a quick test, I soldered a jumper wire to bypass the enable transistor and then everything started working reliably. I've now replaced the transistor with a FET and gate pull-down resistor. It's just above the section in on the left above the chip, above the text CORE ARRAY ENABLE.
With respect to the core matrix drive, there are two big functional changes in this prototype from the last one (single green board). And some big "oh..." learnings.
1) The core matrix is driven from a 3.3V regulator. And it starts to drop-out around 4.3V. And with a .9V drop diode on top of that (to limit input voltage to the Teensy MCU's weak regulator), I'm wasting a lot of power.
2) The core matrix transistors are driven by two IO Expanders that are connected to the Teensy MCU with I2C. This makes the effective refresh rate a hundred times slower than direct IO pin manipulation on the Teensy. I'll be dropping those IO Expanders from the next iteration and going with more MCU IO.
Combining both of these (wasting input power, and having transistor on-times measured in ms instead of us) results in very poor battery life. That is were most of my learning is recently, but there are a several other things I've learned that I need to refine. I also have a few more peripheral functions to test, so I might uncover a few more opportunities for improvement.
Overall, I'm very happy with the progress and results. I'm getting close to being able to offer a kit that is robust, and that I can be proud of. I need to rework my power supply approach now.