Ich denke mal wir reden hier von 2 Dingen.Stell Dir vor das Quarz oder der der interne RC Oszillator vom Controller fällt aus, dann bleiben irgendwelche Segmente dauerhaft angesteuert.
1. Von Breakpoints für das Debugging.
Das könnte man so lösen, das man vor dem Breakpoint die Ausgangspins der Ports für die Segmenttreiber inaktiv schaltet.
A oder K der Displays sollte dabei egal sein.
Dann wird das Display bei einem Breakpoint nicht mehr angesteuert.
Nachteilig ist, das hier durch den zusätzlich eingefügten Code die anzahl der Taktzyklen nicht mehr 100% stimmt - Das sollte aber keine allzu große Rolle spielen.
2. Abschaltung des Displays bei einem Hardwarefehler / Programmhänger.
Das kann man wiederum mit einem Watchdog lösen.
Fast alle AVR Controller haben einen internen Watchdog, der mit dem Assembler Kommando WDR immer wieder zurückgesetzt werden muß.
Dieser Watchdog hat einen eigenen Oszillator und läuft somit unabhängig vom Prozessortakt.
Bei manchen AVR ist dieser Watchdog auch direkt über die Fuses aktivierbar.
Wird dieser Watchdog nicht rechtzeitig zurückgesetzt resettet er den Controller.
Auch wenn der Controller keine gültige Taktquelle mehr hat, sind dann die Portpins als Eingänge geschaltet und somit hochohmig.
Schaltungtechnisch sollten für diesen Fall passende pullup bzw. pulldown Widerstände an den entsprechenden Ports angebracht werden.
Aber das ist für die Initialisierungsphase ohnehin sinnvoll.
Noch was.
Ich hatte mal vor Jahren eine Jumbo Uhr mit 6 Stellen ebenfalls im Multiplexbetrieb gebaut.
Beim Umschalten der einzelnen Anzeigeelemente glimmten die Segmente der vorher angsteuerten Anzeige mit.
Grund war, das die Anodentreiber ( gemeinsame Anoden ) nicht schnell genug umschalteten.
Nachdem die Anoden kurz abgeschaltet und dann erst das nächste Segment angeschaltet wurde, war das Phänomen weg.
Lesezeichen