Programm läuft - aber nur direkt nach flashen

OP #7440577
Lesenswert?

Guten Tag in die werte Runde,

hier habe ich ein seltsames Problem: Auf einem Attiny13a soll das angehängte Programm laufen. Momentan macht das nicht viel, außer einer LED an PB4, welche in einem bestimmten Rhythmus aufleuchtet.

Das Programm läuft direkt nach dem flashen wie gewünscht, und auch im Simulator gibt's keinerlei Probleme. Sobald ich aber den Controller vom Strom ab- und wieder anklemme (sprich: vom Programmer den USB-Stecker abziehe und gleich wieder anstecke), passieren unvorhersehbare Dinge. Meistens passiert einfach gar nichts (LED bleibt aus) oder - denn die Versorgungsspannung nur kurz getrennt wird - die LED leuchtet nach scheinbar zufälligem Muster oder invertiert. Ein Reset über den reset-Pin bringt auch keine Änderung. Wenn ich jetzt wieder neu flashe läuft alles wieder wie erwartet - bis zur nächsten Trennung der Stromversorgung.

Am Attiny hängt nichts außer dem Programmer sowie der gegen GND geschalteten LED samt 2K-Vorwiderstand und einem 100n-Kondensator zwischen Vcc und GND, alles auf einem Steckbrett. Die Fuses sind im Auslieferungszustand (64ms startup-time). Beim flashen selbst und auch einem verify mit avrdude treten keinerlei Fehler auf.

Ich habe auch schon versucht die Warteschleife, die am Ende des Codes steht, gleich zu Beginn mehrmals laufen zu lassen - keine Änderung (außer daß das Programm direkt nach dem flashen halt später startet). Alternativ habe ich auch eine Version, die statt des eeproms den SRAM nutzt. Damit exakt dasselbe Phänomen, so daß ein defekter eeprom vermutlich auch eher unwahrscheinlich ist.

Die Spannungsversorgung von 3.3V kommt aus einer stabilen Quelle, genauer aus einem Diamex AVR ISP. Damit hatte ich noch nie Probleme und glaube nicht, daß es daran liegt.

Hat zufällig jemand einen sachdienlichen Hinweis für mich?

Angehängte Dateien:
#7440586
Lesenswert?

Stephan E. schrieb:

Das Programm läuft direkt nach dem flashen wie gewünscht, und auch im Simulator gibt's keinerlei Probleme. Sobald ich aber den Controller vom Strom ab- und wieder anklemme (sprich: vom Programmer den USB-Stecker abziehe und gleich wieder anstecke), passieren unvorhersehbare Dinge.

Sehr wahrscheinlich: nicht initialisierte "Variablen".

Vermutlich ist das Programm allein mit dem Simulator entwickelt worden. Der initialisiert den SRAM immer komplett auf Null. Das ist aber nicht das Verhalten der realen Hardware. Da enthält der SRAM beim Programmstart mehr oder weniger zufällige Werte.

Beim Simulator fallen fehlende Initialisierungen auf Null deswegen nicht auf. Auf der realen Hardware dann aber schon...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren