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
Das sind 19 Dateien. Startdatei ist raweboot.src. Das Board ist das Rakers 537 Board.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.