Forum: Mikrocontroller und Digitale Elektronik Tutorial ISR - unterbrechbar.Fehler?


von Tutorialgucker (Gast)


Lesenswert?

Hi im Tutorial is folgendes zu unterbrechbaren ISR tzu finden:

1
ISR (XXX) 
2
{
3
    // Implementiere die ISR ohne zunaechst weitere IRQs zuzulassen
4
 
5
    <<Deaktiviere die XXX-IRQ>>
6
 
7
    // Erlaube alle Interrupts (ausser XXX)
8
    sei();
9
 
10
    //... Code ...
11
 
12
    // IRQs global deaktivieren um die XXX-IRQ wieder gefahrlos 
13
    // aktivieren zu koennen
14
    cli();
15
 
16
    <<Aktiviere die XXX-IRQ>>
17
}

ist das nicht aber falsch  fehlt hinter dem

    <<Aktiviere die XXX-IRQ>>

nicht ein sei()??

weil ansonsten würde doch der interrupt einmalig ausgeführt werden und 
ansonsten nie wieder  (aufgrund des cli())

oder werden das Global Interrupt Enable Flag nach Ende der ISR wieder 
automatisch  gesetzt? was dem sei() Aufruf gleichkommt.

von Falk B. (falk)


Lesenswert?

@ Tutorialgucker (Gast)

>ist das nicht aber falsch  fehlt hinter dem

>    <<Aktiviere die XXX-IRQ>>

>nicht ein sei()??

Nein, das mach das unsichtbare RETI, mit welchem die ISR immer beendet 
wird.
Macht der Compiler.

von Thomas E. (thomase)


Lesenswert?

Tutorialgucker schrieb:
> oder werden das Global Interrupt Enable Flag nach Ende der ISR wieder
> automatisch  gesetzt? was dem sei() Aufruf gleichkommt.
Genau so ist das.

mfg.

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.