C Atomicblock

avr_newbie

Mitglied
13. Apr. 2013
127
0
16
Bayern
Sprachen
  1. ANSI C
Hallo,

kleine Frage zu Atomic-Blöcken.

Beispiel:

Code:
cli(); //lock interrupts

ATOMIC_BLOCK(ATOMIC_FORCEON)
{
tu irgendwas....
}

//interrupts unlocked .........

Irgendwo hab ich mal gelesen und als Notiz abgespeichert ;) :

FORCEON nimmt man, wenn man sich sicher ist, dass die Interrupts vor
Eintritt in den Block freigegeben waren und damit hinterher auch
wieder freigegeben werden sollen ("force on").



Wenn ich über cli() die Interrupts sperre, und danach ein Atomic-Block mit Forecon kommt, dann gibt der mir die Interrupts wieder frei :confused:
Darf ich also so nicht machen?
 
Hallo,

Forceon:
Beim beenden des Atomic Block werden die Interrupts immer global aktiviert, auch dann wenn sie vor dem Atomic Block gar nicht aktiviert waren.

Restorestate:
Das interrupt enable flag wird zwischengespeichert. Im Atomic Block abgeschaltet und am Ende wird das flag wieder hergestellt, also der status wieder hergestellt.

Dirk :ciao:

(Bin gerade am Tab, deshalb die schlechte Rechtschreibung :-o)
 
Wenn also bei Restorestate die interrupts vorher gesperrt waren, bleiben sie auch gesperrt?


Hallo,

Forceon:
Beim beenden des Atomic Block werden die Interrupts immer global aktiviert, auch dann wenn sie vor dem Atomic Block gar nicht aktiviert waren.

Restorestate:
Das interrupt enable flag wird zwischengespeichert. Im Atomic Block abgeschaltet und am Ende wird das flag wieder hergestellt, also der status wieder hergestellt.

Dirk :ciao:

(Bin gerade am Tab, deshalb die schlechte Rechtschreibung :-o)
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)