Hallo Dierk,
(mit ie ? oder Schreibfehler?)
angenommen ich setzte in einem Programm nur einen Ausgang z.B. den PB0. An diesen Ausgang schließe ich eine LED an. Nun nehme ich die Spannungsversorgung des ATtinys kurz weg und schließe diese wieder an. Müsste dann die LED ohne den Reset-Eingang auf GND zu legen wieder angehen?
wenn du an PB0 eine LED anschließt und die anschalten willst, muß im DDRB
das Bit0 auf 1 sein (Ausgang). Je nachdem ob du jetzt die LED nach GND oder
+5V schaltest muß im PORTB das Bit0 auf 0 oder 1 sein um sie zum leuchten
zu bringen.
Wenn die Spannung jetzt kurzzeitig ausfällt, setzt die interne Power-On-Reset
Schaltung den Prozessor zurück und damit sind die Register alle mit Nullen
gefüllt. Dadurch wird PB0 automatisch auf Eingang geschaltet und die LED ist
aus. Einschalten geht nur, wenn du sie im Programm, das dann anfängt zu
laufen, wieder anschaltest (DDRB0=1 und PORTB0 entsprechend setzen).
Geht also leider nicht was du da vorhast. Selbst wenn die Programmierung
über SPI abgeschlossen ist wird der Prozessor automatisch zurückgesetzt.
In meinem Fall muss ich immer nach dem kurzzeitigenzt Abziehen der Spannungsversorgung den Reset-Eingang auf GND legen, dass die LED wieder an geht. Und ist das normal??
Ich würde mal sagen ... undefinierte Spannungspegel bei der Betriebsspannung.
Evtl fällt die Spannung durch Elkos zu langsam in sich zusammen.
Stell mal den Brown-Out über die Fuses auf nen anderen Wert und den
Timeout nach dem Reset auch länger machen. Weißt du was ich damit
meine ?
Die Betriebsspannung fällt nicht weit genug zusammen um die interne
Rest-Logik auszulösen und der Prozessor kommt dadurch in einen
undefinierten Zustand weil die Registerwerte sich bei der niedrigen
Spannung wohl teilweise verändern (Bits gehen verloren) und der AVR
dadurch Amok läuft. Das ist das, was ich weiter oben schon mal beschrieben
habe.
EDIT : Fällt mir grade noch ein ... evtl läuft der Oszillator des AVR nach
dem Spannungsausfall und Reset nicht sauber an. Dann hat er zwar nen
definierten Zustand aber an dem ändert sich auch nix mehr weil er nicht
weiterläuft
Gruß
Dino