mikrocontroller.net

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


Autor: Philipp Burch (philipp_burch)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Philipp Burch (philipp_burch)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Philipp Burch (philipp_burch)
Datum:

Bewertung
0 lesenswert
nicht 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!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.