Guenter B. schrieb:
>> Es gibt dann zwei Dinge:
>> 1) Sind die beteiligten Variablen volatile deklariert?
> Die Variablen habe ich gleich zu Beginn noch vor der Main-Routine als
> volatile deklariert.
mur einzelne Code-Fragmente posten ist zu 99% eine schlechte Idee...
>> 2) Ist dir bewusst, dass nach dem Empfang der 8 Bits die ISR sofort
>> wieder ausgeführt wird, und versucht weitere 8 Bits zu empfangen?
> Ich habe mal drüber nachgedacht und zu Beginn der ISR CLI() und am Ende
> SEI()
> gestzt, aber das mach der AVR ja eigentlich eh automatisch. Wie kann ich
> es sonst verhindern ?
afaik:
cli() wird schon gemacht, allerdings wird die nächste Flanke am INT
trotzdem das entsprechende Bit INTF0 in GIFR setzen (es wird nur nicht
zum Anfang der ISR gesprungen, weil eben cli() ), welches dann nach dem
automatischen sei() am Ende der ISR den nächsten Interrupt auslöst.
Versuch mal, das entsprechende Bit am Ende der ISR zu löschen...