Forum: Mikrocontroller und Digitale Elektronik "Prozess" killen


von Binnesmann (Gast)


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

von Rahul (Gast)


Lesenswert?

Poste den Code!

von Binnesmann (Gast)


Angehängte Dateien:

Lesenswert?

Das sind 19 Dateien. Startdatei ist raweboot.src. Das Board ist das
Rakers 537 Board.

von Peter D. (peda)


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

von Binnesmann (Gast)


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

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.