www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik "Prozess" killen


Autor: Binnesmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich progge einen 80C537 und habe gerade folgendes Nervenraubende Prob:

Ich habe einen Timer laufen, der jede Milisekunde auslöst und Messwerte
aufnimmt. Die kommen aus dem AD Wandler, Capture / Compare, DS1820, I2C
usw.

Jetzt habe ich noch eine Endlosschleife laufen, in der die Daten auf
einem Grafikdisplay laufen. Diese Endlosschleife bleibt irgendwann an
irgendeiner Stelle stehen, die ich in dem komplexen Code nur schwer
erkennen kann. Jetzt möchte ich als erste große Lösung das
Hauptprogramm überwachen und nur dies neu starten. Ich habe nur keine
Idee wie? Der Timer läuft sauber weiter. Hier könnte ich also
eingreifen. Nur wie kann ich ohne WDT eine Endlosschleife resetten?

Danke für Ideen.

Gruß Binnesmann

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Poste den Code!

Autor: Binnesmann (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Das sind 19 Dateien. Startdatei ist raweboot.src. Das Board ist das
Rakers 537 Board.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das "Killen" bringt dir doch keinerlei Information.

Wenn der Timerinterrupt noch geht, dann könntest Du dort z.B. über die
UART die Adresse aus dem Stack ausgeben, wo der Timerinterrupt das
hängende Programm gerade unterbrochen hat. Das dürfte wesentlich mehr
helfen.


Ansonsten:
"Killen" tut man bei MCs mit "Jump 0000" (Soft-Reset).
Aber beim 8051 erst, nachdem alle Interrupts mit "RETI" beendet
wurden.

Alle anderen "Killversuche" erzeugen nur Mist im Stack- und
Datenbereich.


Peter

Autor: Binnesmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Peter,

ich habe da glaube ich die beste Möglichkeit zum debuggen vor lauter
Bäumen nicht gesehen. So'n sch... . Passiert immer wenn man ohne zu
denken was machen und sich dann so verstrickt das nachher die absolute
Blockade einsetzt.

Werde da erstmal ansetzen und schauen wie ich dem Fehler Herr werde.

Mit Deinem Tip habe ich sogar noch einen anderen Fehler gefunden. Der
DPTR wird in meinen IRQ Routienen noch expliziet in den Stack
geschoben. Das fällt ja flach. Oder brauche ich das hier doch?

Gruß Binnesmann

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.