STM32F4DISCOVERY atomare Operationen/Mutex?

Gast #2640317
Lesenswert?
• ▲
▼
Und schon habe ich das naechste Problem: Ich habe Daten die zwischen 
einem Interrupthandler und dem Rest vom Code benutzt werden. Es handelt 
sich dabei nicht um einzelne Variablen sondern um mehrere 
zusammengehoerdende Werte.

Wenn ich beim Zugriff pauschal alle Interrupts ausschalte muss ich wohl 
damit rechnen einzelnen Interrupts zu verpassen. Gibt es noch andere 
Moeglichkeiten? Wie sieht es mit einem Mutex aus? Gibt es da fertige 
Ansaetze?

Welche Moeglichkeiten habe ich noch den Zugriff sauber zu regeln?

Danke fuer eure Hilfe!
Gast #2640361
Lesenswert?
• ▲
▼
wigo schrieb:

> Wenn ich beim Zugriff pauschal alle Interrupts ausschalte muss ich wohl
> damit rechnen einzelnen Interrupts zu verpassen.

Es reicht, den speziellen Interrupt zu sperren. Es
werden ja wohl nicht alle Interrupt-Handler auf diese
Struktur zugreifen.

Wenn in der Zeit des Sperrens ein Interrupt-Ereignis auftritt,
wird der Interrupt automatisch sofort bei Wieder-Freigabe bearbeitet.

Interrupts verlieren würdest Du nur, wenn die Sperrdauer > 
Interrupt-Periode
wäre.


HDH,

scherenschleifer
Gast #2640516
Lesenswert?
• ▲
▼
scherenschleifer schrieb:
> wigo schrieb:
>
>> Wenn ich beim Zugriff pauschal alle Interrupts ausschalte muss ich wohl
>> damit rechnen einzelnen Interrupts zu verpassen.
>
> Es reicht, den speziellen Interrupt zu sperren. Es
> werden ja wohl nicht alle Interrupt-Handler auf diese
> Struktur zugreifen.
>
> Wenn in der Zeit des Sperrens ein Interrupt-Ereignis auftritt,
> wird der Interrupt automatisch sofort bei Wieder-Freigabe bearbeitet.
>
> Interrupts verlieren würdest Du nur, wenn die Sperrdauer >
> Interrupt-Periode
> wäre.


Danke. War etwas Betriebsblind. Scheint zu funktionieren.
#2641193
Lesenswert?
• ▲
▼
Wenn auf gemeinsame Daten sowohl in Interrupts als auch außerhalb 
zugegriffen werden ist ein Sperren des Interrupts ohnehin unerlässlich!

Ein Interrupt kann schließlich nicht warten, bis ein Mutex freigegeben 
wird, er blockiert ja die normale Ausführung. Mutexe ergeben nur bei 
Multitasking zur Synchronisation zwischen Threads Sinn. Locks innerhalb 
von Interrupts wiederum braucht man nur bei Mehrprozessorsystemen zur 
Synchronisation zwischen Cores (lokal müssen zusätzlich Interrupts 
gesperrt werden).

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.