I would like to blame it on the damn bad tools again, and I suppose that's still a possibility. But this time it was bad board layout tools, not a bad compiler. And it was my boss's fault. Pro-TIP: If you cross your RS-485 A and B lines, your serial output from the driver chip comes out with the voltages inverted, and so it looks like it's sending a continuous break/overflow character. Unfortunately there's no really easy way to notice this in firmware if you're not expecting it. So now you know - and you won't have to spend until 3:20 in the morning with an oscilloscope, probing circuit boards to learn this the hard way.
I would say that I'm getting too old for this shit. But the truth is, no, actually, not quite yet. Thank you very much, caffeine. (Bows in "I'm not worthy" style to can of Mountain Dew.)
I wish I could say that I was done now, now that the button panel is working. That I could go home and maybe get two or three hours of sleep before we head out to the customer's site to deliver this equipment I've spent my weekend and now all night Sunday building and debugging. But I'm not done. I have to make sure the sensor boards are still working correctly, and I suspect I have at least another hour after that getting the timer code on the main board working too. That last one's my own fault... but I would have liked to get to it a bit earlier. :P
I suppose it's good that I'm getting this stuff figured out now. This is, after all, why I was hired - because I can solve these problems when everyone else would be clueless. I guess I just wish I could have solved them a little faster this weekend. Also wish that we didn't take this job on a flat rate. While I'm wishing, can I have Vida Guerrera and a Ferrari? Yeah. At least this is stake number 2 of 4 that will finally allow us to nail this fucking thing through the heart and kill it for good. This project really, really needs a bullet to the head.