PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem nach RESET



bombatz
11.08.2006, 16:49
hallo,

ich hab ein Problem mit meinem MEGA48.
Wenn ich meine hex Datei in den Controller brenne, läuft er sofort los (ist ja auch normal)
und dann tut er genau das, was das Programm auch machen soll. \:D/

Aber jetzt zu meinem Problem:

Wenn ich dann einen RESET auslöse bzw. die Spannung wegnehme und wieder einschalte, tut er nicht mehr ganz das was er soll. ](*,)
Also so, als hätte ich einen Fehler in meinem Programm, was ich aber ausschließe, denn beim ersten Mal funktioniert es ja. Dann müsste sich ja der Programmcode während dem ersten Durchlaufen des Programms verändern, sodass dann Fehler drin sind. :-k


Kann mir jemand sagen woran das liegen kann bzw. was man da tun kann?

Danke.


*edit*
wenn es weiterhilft, kann ich auch noch den Code posten, aber wie gesagt, ich glaube nicht, dass es daran liegt

uwegw
11.08.2006, 17:04
Initialisierts du alle von dir benutzten Register und RAM-Zellen? Zumindestens bei einem Watchdog-Reset werden die Register nämlich nicht zurückgesetzt. Lässt sich sogar für nen Blinker nutzen, siehe https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=18714

bombatz
11.08.2006, 17:23
vielen Dank

genau daran hats gelegen
ich habe in meinem Programm Register als Zählregister verwendet, die dann nach Ablauf des Programms nicht zurückgesetzt wurden

was ich nicht gewusst habe (beschäftige mich noch nicht so lange mit AVR´s), dass die Register nach einem Reset nicht automatisch auf NULL gesetzt werden, dadurch war immer noch der alte Zählerstand drin und das Programm konnte nicht das machen, was es soll 8-[

man lernt halt immer wieder was dazu... :-b

uwegw
11.08.2006, 18:02
Ich habs auch erst bei der Blinker-mit-möglichst-wenig-Befehle-Geschichte rausgefunden. Das Datenblatt schweigt sich zu dem Thema aus.

11.08.2006, 19:35
hmm... ich hab immer gedacht, dass alles beim Reset zurückgesetzt wird, also auch wieder alle Register auf Null
bei meinen bisherigen Programmen hat das wahrscheinlich nie dazu beigetragen, dass dann irgendwas in die falsche Richtung läuft, deshalb hab ich das auch noch nicht mitbekommen :-b

bombatz
11.08.2006, 19:36
das oben war ich... wieder mal vergessen einzuloggen ](*,)

dennisstrehl
11.08.2006, 19:53
Hehe, ich musste das auch erst mühsam lernen ;)
Soweit ich weiß, ist das einzige, was nach nem Reset nen definierten Wert hat, die I/O und ext. I/O-Register, also alle die, die Peripherie steuern.

MfG

uwegw
12.08.2006, 12:10
Hehe, ich musste das auch erst mühsam lernen ;)
Soweit ich weiß, ist das einzige, was nach nem Reset nen definierten Wert hat, die I/O und ext. I/O-Register, also alle die, die Peripherie steuern.

MfG
Das steht auch so im Datenblatt. Zu den MPRs wird allerdings nichts gesagt.