Gast
#117334
Hallo, hab folgendes Problem: Eine 16-Bit Variable wird im Timer-Interrupt dekrementiert und in main() auf Null abgefragt. Gelegentlich passiert es nun, dass die Null-Bedingung bereits beim Wert 0x00ff erfüllt ist. Schaut man sich die LST-File an, sieht man, dass der Zugriff auf die Variable mit 2 Assemblerbefehle efolgt, zwischen denen natürlich ein Interrupt dazwischen funken kann. Erfolgt in main() genau zwischen den 2 Ladebefehlen ein Interrupt, indem nun der Zählerwert z.B. von 0x0100 auf 0x00ff dekrementiert wird, steht letztendlich eine 0x0000 in der Variable (niederwertiges Byte wird zuerst geladen). Durch 2-maliges Abfragen der Variable bzw. Sperren des Interrupts hab ich derzeit das Problem gelöst. Gibt es dafür eine saubere Lösung ? Gruss Gerhard