Niels Hüsken wrote:
> Karl heinz Buchegger wrote:
>
>> In der main Schleife hast du ja schon sowas über flags.dcf_rx gemacht.
>
> Sollte flags nicht auch besser volatile deklariert werden (sofern das
> bei structs überhaupt geht)?
Ja natürlich. Alles was gemeinsam von ISR und main() benutzt
wird, sollte in erster Linie volatile sein. Es gilt zu verhindern,
dass der Compiler in der main() Schleife die Zugriffe auf diese
Variablen wegoptimiert und die Werte in Register ablegt.
Das könnte auch die Ursache sein, ist aber reine Spekulation:
Solange der UART Code drinnen war, hatte der Copmiler nicht
genug Register um alle Variablen dort abzulegen und war so
gezwungen, die Variablen immer aus dem SRAM nachzuladen.
Jetzt ist der UART Code weg, ein paar mehr Register sind frei
und der Compiler benutzt sie um Variablen dort ständig
unterzubringen und sich das ständige Nachladen aus dem SRAM
zu ersparen.
Ist aber, wie gesagt, reine Spekualtion. Ansonsten ist mir im
Code nichts aufgefallen. Die main() Schleife ist einfach genug
um sie überschauen zu können. Wenn die Pulse am INT0 ankommen
und der Interrupt ausgelöst wird, die LED also regelmässig blinkt,
sehe ich keinen Grund (ausser dem volatile) warum das nicht gehen
sollte.