Hallo Renegr,
vorab ein frohes Weihnachtsfest.
ich habe es so gelassen, wie im ersten Eintrag also
__asm("DSB"); /* Data Synchronization Barrier, !!! Write Buffer */
Dies stellt zumindest eine gewisse Zeit sicher, damit das Interrupt Flag wirklich gelöscht sein müste.
Ein erneutes Löschen des Interrupt-Flags geht aber auch, das habe ich ausprobiert.
also:
LPC_T3IR.bits.MR0INT = 1; /* Interrupt Bit loeschen */
gefallen tut mir so etwas aber nicht. Der Grund: Je nach Einstellungen des Compilers (Optimierung)
wird nämlich mehr oder weniger Code erzeugt, was sich natürlich in einer veränderten Laufzeit wiederspiegelt.
Ein wirklich "GUTE" Lösung habe ich somit noch nicht gefunden. Aber es funktioniert bei mir, auch mit verschiedenen Optimierungsstufen.
Ich find das schon sehr Schade, daß man sich nicht mehr hundertprozentig auf den Code verlassen kann, so schön und gut das mit den Write Puffern ja sein mag,
aber man hat keine hundertprozentige Kontrolle. Isser fertig oder noch nich ?? Vermutlich eine Zeile später schon.....oder doch nich......
Wenn es da andere Möglichkeiten gibt, bin ich für jede Info dankbar.
bis dann
Siro
Lesezeichen