-
-
Neuer Benutzer
Öfters hier
Interrupt in ISR-Routine freigeben
Ich habe ein Programm mit zwei Interruptroutinen
(Int0 und timer0)
Wenn der INT0 erzeugt wird, pringt das Programm in den
Interrupt Handler für Int0 (funktioniert!)
Hier soll zum Schluß der Interrupt für den Timer0 mit
Enable Timer0
freigegeben werden.
Das klappt leider nicht innerhalb der Interruptroutine?
Wo liegt denn mein Fehler?
Steffen
-
Erfahrener Benutzer
Roboter Genie
Soll dann innerhalb der Interruptroutine auch noch der Timer0 IRQ ausglöst werden?
Wenn ja, würde das nicht gehen, weil der globale IRQ disabled wird, wenn der INT0 ausgelöst wird.
Gruß
-
Neuer Benutzer
Öfters hier
Danke für den Hinweis.
Steffen
-
Neuer Benutzer
Öfters hier
Laut handbuch musst du Sreg.7 = 1 in deiner ISR setzen dann gehts
-
Erfahrener Benutzer
Robotik Einstein
Wir sind hier bei Bascom, dann schreibt man auch "Enable Interrupts",
das den ASM-Befehl "sei" erzeugt, was nichts anderes macht als das Bit im Statusregister zu setzen
Ist für spätere Forschungen besser, wenn man die Befehle so verwendet wie vorgesehen.
-
Erfahrener Benutzer
Roboter Genie
Ja, aber wenn Du innerhalb einer ISR wieder ein SEI benutzt, dann kann der erste IRQ nicht mehr ohne weiteres "returned" werden. Das kann je nach Code natürlich gefährlich sein.
Gruß
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen