Gefahren bei schreiben ins Register TIMSK?
Hallo,
Durch das Register TIMSK werden die Interrupts aller Timer gesteuert.
Nun habe ich z.B. meinen Timer so eingestellt, dass er alle 10 ms eine capture match interrupt aulöst und in die entsprechende ISR springt. Um die ISR kurz zu halten, setzte ich nur ein Flag welches ich dann in der main routine abrage um verschiedene Berechnungen auszuführen.
Nun kann es aber sein, dass diese Berechnungen nicht durchgeführt werden sollen. Aus diesem Grund lösche ich das entsprechen Bit im Register TIMSK, damit kein Interrupt generiert wird.
Meine Frage: darf TIMSK jederzeit verändert werden ohne vorher alle IRQs mit cli() zu deaktivieren?
Re: Gefahren bei schreiben ins Register TIMSK?
Zitat:
Zitat von fambi_mail
Meine Frage: darf TIMSK jederzeit verändert werden ohne vorher alle IRQs mit cli() zu deaktivieren?
Das kommt auf deine Applikation an. Die AVR-Hardware verändert TIMSK nicht. Das einzige, was TIMSK ändern kann, ist deine Applikation.
Wenn also von unterschiedlichen Interrupt-Ebenen aus auf TIMSK zugegriffen wird, muss der Zugriff auf den unteren Ebenen atomar sein.
Siehe auch:
https://www.roboternetz.de/wissen/in...-atomarer_Code