-
-
Erfahrener Benutzer
Robotik Einstein
Also erstmal steht der Start deines Programmes im Interruptbereich und zwar direkt nach der Adresse 0x0009.
Ich würd vor der Adresse 0 auch noch .cseg einfügen, damit sicher gestellt ist wo der Code landet.
Zum Zweiten fehlt bei deiner Timer Interrupt routine das RETI mit dem der Controller weiß, das der Interrupt hier beendet werden muß.
Das hat folgenden Effekt:
Ein Interrupt tritt auf, das Enable Interrupt Flag (I) wird dadurch gelöscht.
Da der Programm Counter auf dem Stack gesichert wird läuft der bei jedem neuen Interrupt weiter zu.
Mit einem RETI würde das I Flag wieder gesetzt, der Programm Counter vom Stack geholt und dein Controller könnte sorglos weiter laufen.
Merz mal die beiden Fehler aus - ich denk dann sollte dein Prog laufen.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen