I finished assembling the SMD version of the MK312 (which I modified to make 2-layer). After swapping the right transistors in (the P- and N-channel part numbers are switched in the schematic), I have gotten it to startup and pass its self-test. It gets to the screen that says “Battery: 00% Press Any Key…” (battery 0% with 15V input??). When I press a button, the processor appears to crash/restart, flashing one of the LEDs then doing the startup process again, but without re-initializing the LCD I guess. As soon as I press the button, the top row of the LCD fills with black rectangles, but if you look at it from an angle, you can barely see that the top line of text of the startup sequence is being output until it gets to the “Press Any Key” screen again.
I’ve tried other firmware, which does nothing (no LCD output) and have added a decoupling capacitor near the LCD and have put a short ground wire between the front panel and the main board. I also checked the 5V rail and the ATMEGA’s reset line (which both look solid at 5V even when it crashes) and some of the data lines on the LCD, which look nice and square. I’ve read on some other topics on here it helps to make the ribbon cable shorter (the only ones Mouser had in stock were either way too short or really long), but the data seems to be getting through just fine. I tried adding pull up resistors and 100nF caps to the buttons (for debouncing), but it made it immediately crash at the “Press Any Key” screen without having to push the buttons.
Regarding the weird 0% battery thing, it seems to be sensing something because if I just power the 5V (without the 9V/12V), it does say low battery.
Has anyone else had or found a solution to this black square/crashing problem? Anything else I should measure? It seems very odd to me that a button press would cause the processor to crash.