Forum: Mikrocontroller und Digitale Elektronik AVR-Studio (Simulator): Grund eines Resets herausfinden


von Philipp B. (philipp_burch)


Lesenswert?

Hallo Leute,

ich hab' da ein etwas merkwürdiges Problem. Ich habe ein Programm, das
nicht so recht will wie ich will, im Simulator aber ebenso nicht tut wie
im Controller. Das ist ja ansich nicht schlecht, wenn alles korrekt
simuliert wird, aber wie um alles in der Welt kann man bei Simulator
herausfinden, wodurch ein Reset ausgelöst wurde? Ich kann das Programm
im Einzelschrittmodus durchlaufen lassen und der holt es mir da aus
einer Schleife raus. Aus einer Schleife, in der ich auf das Ende eines
Bytes über's USART warte (gesendet). Der Watchdog ist zwar aktiviert,
aber erstens macht er bei jedem Durchlauf der Schleife (Nur etwa drei
Anweisungen lang) einen Watchdog-Reset (WDR), zweitens funktioniert es
auch nicht, wenn ich den WDT rausnehme und drittens hat das Ganze zuvor
noch funktioniert. Alle Änderungen (Zumindest wohl eben fast alle)
habe ich seit "zuvor" wieder rückgängig gemacht, aber nun tut's
nimmer. Da läuft kein Timer mehr, kein ADC, kein GarNix, praktisch nur
noch das USART. Und trotzdem schafft der es, mir das Programm zu
resetten.

Nochmal die Frage: Wie kriegt man im AVR-Studio-Simulator den Grund,
bzw. die Quelle eines Resets heraus?

Besten Dank im Voraus!

von Philipp B. (philipp_burch)


Angehängte Dateien:

Lesenswert?

Hier jetzt mal der komplette Code. Alles was keine Rolle spielt hab'
ich auskommentiert. Zumindest in der Initialisierung, die Prozeduren
sind alle drin. Der Controller ist übrigens ein ATmega48 an 20MHz. Die
Beschreibung oben könnt ihr vergessen, die muss ich dann noch anpassen,
wenn alles fertig ist.
Jetziger Stand:
Watchdog ist ausgeschaltet, doch der Controller wird alle 0.5s oder so
zurückgesetzt. Sieht man auch im AVR-Studio. Im Timer1-Compare wird
eine LED getoggled (An Port C Bit 0), daran sieht man, dass er immer
wieder resetted.

von Philipp B. (philipp_burch)


Lesenswert?

Hat sich wohl erledigt...
Ich bin zu INT0 und INT1 anstatt INT0R und INT1R gesprungen. Da INT0
aber als '0' definiert ist, sprang des Ding jeweils wieder an den
Anfang...
Naja, nix für Ungut!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.