Gast
#2883190
Hier Beitrag "ARM: kompliziert?" wurde über die Vorzüge eines STM32F4 diskutiert, wobei das Problem der atomaren Befehle angesprochen wurde. Da diese im Gegensatz zu anderen µCs beim STM nicht vorhanden sind, können sich Probleme bei der Interruptverarbeitung ergeben. Aktuell möchte ich beim Timer9 den Überlauf, sowie beide Capture-Flags per Interrupt auswerten. Die Bits CC2IF, CC1IF und UIF im TIM9_SR-Register werden durch das zugehörige Ereignis gesetzt und müssen per Software (in der Interruptroutine) auf '0' gesetzt werden. UIF löscht man entsprechend mit TIM9->SR &= 0xfffe, was durch die Befehle Lesen, Maskieren, Zurückschreiben nicht atomar erledigt wird. Wird nun währenddessen ein Capture-Flag gesetzt, wird es 'großzügigerweise' gleich mit gelöscht: das ist schlecht! Habe ich etwas übersehen oder wie kann eine zuverlässige Auswertung der Flags aussehen?