Hallo,
was heisst dürfen, es ist möglich und es scheint soweit keiner was dagegen zu haben
Es kann max. passieren, das während dem ändern des Bit eine IRQ auftritt.
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?
Hallo,
was heisst dürfen, es ist möglich und es scheint soweit keiner was dagegen zu haben
Es kann max. passieren, das während dem ändern des Bit eine IRQ auftritt.
Also das einzige was ich darüber finde ist folgender Satz im Datenblatt (Tiny15L):
Abgesehen davon schiebt man, zumindest beim AtTiny15, die Interrupts durch deaktivieren, sei es durch cli oder durch löschen des entsprechenden IE-Bits, lediglich auf, wenn man dann mit sei oder durch aktivieren des entsprechenden IE-Bits den Interrupt wieder aktiviert, wird er dann sofort ausgeführt.When changing the COM1A1/COM1A0, bits, the Output Compare 1A Interrupt must be disabled by clearing its Interrupt Enable bit in the TIMSK register. Otherwise an Interrupt can occur when these bits are changed.
MfG
Das deaktivieren des IRQ wird weniger das Problem sein, evtl. sollte man vor dem aktivieren zuerst das Interrupt-Flag löschen, damit kein ungeplanter IRQ auftritt.
Das kommt auf deine Applikation an. Die AVR-Hardware verändert TIMSK nicht. Das einzige, was TIMSK ändern kann, ist deine Applikation.Zitat von fambi_mail
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
Disclaimer: none. Sue me.
Lesezeichen