Guten morgen, ich habe eine ISR Timer OVF auf meinem AVR. Dort wird eine Variable zeit bei jedem overflow erhöht. (zeit++) Im Hauptprogramm soll zeit mit einem Grenzwert verglichen werden und bei Übereinstimmung bzw. Überschreiten der Zeit etwas getan werden (if zeit>=GRENZE). D.h. zeit wird im Hauptprogramm nur gelesen, aber nicht verändert. Muss ich zeit dann als volatile deklarieren oder nicht? Danke.
Ja, sonst weiß das Hauptprogramm ja nicht, dass sich ihr Wert "unvorhersehbar" geändert haben könnte und es läuft munter vor sich hin.
Ok, danke. Nur zum Verständnis noch etwas hinterher. Wenn zeit nur in der ISR erhöht wird und der Vergleich nicht mehr im Hauptprogramm stattfindet, sondern in der ISR selbst, dann würde ich es nicht benötigen, richtig?
Johann L. schrieb: > Zudem ist darauf zu achten, dass das Ändern von zeit atomar > geschieht. Grundsätzlich ist darauf zu achten, im genannten Beispiel wäre das vollkommen unnötig.
Malte S. schrieb: > Grundsätzlich ist darauf zu achten, im genannten Beispiel wäre das > vollkommen unnötig. Wieso? Steht hier irgendwo, dass zeit nur ein Byte belegt?
Natürlich tut es das. Es ist ja ein 8-Bitter. Nee, in ehrlich: ich ziehe meine in diesem Zusammenhang leichtsinnige Annahme zurück und behaupte das Gegenteil bzw. betone, dass "darauf achten" weit wichtiger ist, als da rübergekommen sein mag!
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.