Memory Dump im Kleinformat

Wenn ein Sensor nicht so will, wie er soll, ist das meistens ein Problem mit der Firmware. Wenn sich der Fehler einfach reproduzieren lässt, hängt man den Debugger dran und vollzieht das Zustandekommen des Problems so lange nach, bis man es gefunden hat und den Bug fixt.
Problematischer wird es bei sporadischen Fehlern, die nur gelegentlich auftreten und wo völlig unklar ist, was sie auslöst. Wenn man dann den Debugger dranhängt, macht das Gerät einen Reset und alle Information ist weg.
Die fünf Sensoren bei mir auf dem Schreibtisch haben deswegen jetzt alle einen kleinen Draht herausstehen. Über einen Interrupt erkennen sie, wenn ein Prozessor-Pin auf Masse gezogen wird (dafür tut es ein Stück Draht) und schreiben dann den RAM-Inhalt per ganz primitivem Bit-Banging-UART (mit Delays!) raus. Der LED-Port musste dafür herhalten, jetzt flackert die LED dann eben ein bisschen. Erledigt wird das Ganze direkt in der Interrupt Service Routine, also genau dort, wo man auf keinen Fall Delays verwenden darf. Im Fehlerfall ist das aber auch egal.
Bei den 2kB RAM ist das Schreiben in unter einer Sekunde erledigt…

Ich bin die nächsten Tage nicht da, die fünf Sensoren haben jetzt also ein bisschen Zeit, um alleine Blödsinn zu machen…