STM32F4DISCOVERY atomare Operationen/Mutex?

Gast #2640317
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
So einfach ist das fuer mich nicht! Fuer eine Mutex Implementierung 
brauche ich genau das wonach ich Suche: mehrere zusammenhaengende 
atomare Operationen!
Gast
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
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.
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

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.