PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Interrupt in ISR-Routine freigeben



dj5am
29.07.2007, 21:48
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

Gock
30.07.2007, 13:25
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ß

dj5am
30.07.2007, 18:25
Danke für den Hinweis.

Steffen

frankne
09.08.2007, 15:55
Laut handbuch musst du Sreg.7 = 1 in deiner ISR setzen dann gehts

linux_80
09.08.2007, 18:13
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. ;-)

Gock
10.08.2007, 09:44
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ß