Was ist für einen kleinen Mikrocontroller ohne Betriebssystem der richtige Weg, um Daten zwischen verschiedenen Interrupts und der Hauptschleife auszutauschen?
Mit einem Betriebssystem kann man einfach einen Mutex für jeden kritischen Teil erstellen und weitermachen, und der Scheduler wechselt beispielsweise zwischen Aufgaben.
Wenn ein Mutex in einem Interrupt verwendet wird, wird er nur für immer gesperrt, sodass dies offensichtlich nicht funktionieren kann.
Ein einfacher Ansatz, den ich mir vorstellen kann, besteht darin, Kopien der Variablen in einer Tabelle zu haben und beim Ändern ein Flag für jede geänderte Variable zu setzen. Kopieren Sie dann in der Hauptschleife durch Deaktivieren von Interrupts die Kopien in die Hauptvariablen und umgekehrt (mit einem Prioritätssystem für den Fall, dass zwei oder mehr geändert wurden). Dies würde einige Zeit dauern und sollte aber funktionieren.
quelle