Mir fiel folgendes Problem auf: ich definiere eine globale 16bit-Variable per static volatile unsigned char xy; Nun wird im z.B. im Timer0-Interrupt eine Messung ausgefuehrt, deren Ergebnis in xy landet. Das Hauptprogramm soll diese nun auswerten und holt sich das Ergebnis per wert = xy; dies wird uebersetzt in lds r24, xy lds r25, (xy)+1 Was passiert nun, falls der Interrupt genau zwischen diesen beiden Befehlen auftritt und xy veraendert, bekommt das Hauptprogramm dann den halben alten und den halben neuen Wert? Was waere ein moeglicher Workaround, Interrupt waehrend des Werte-holens abschalten oder lock bits? Gruss!
Ok, Problem wurde schon beantwortet: Mit cli und sei die Problemstelle einkapseln.
Genau, nicht in zwei verschiedenen Foren zugleich posten. ;-)
Hatte nur befuerchtet, mein Englisch versteht keiner ;-)))
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.