Gast
#4184039
Hallo zusammen,
ich habe folgendes Problem..
In einer Funktion sende ich ein Byte über I2C an einen Slave
Funktion()
{
...
bTransferComplete = FALSE;
I2CSendByte(...);
while (bTransferComplete == FALSE);
...
}
Das Flag wird in einer Interrupt-Funktion, wenn das Byte rausgegangen
ist auf TRUE gesetzt --> ist auch auf 1.
Das Programm bleibt aber trotzdem in der while-schleife hängen, obwohl
das bTransferComplete Flag auf TRUE ist.
Ich denke durch die Compliler - Optimierung wird nur zu Begin der
while-Anweisung der Inhalt der Addresse bTransferComplete in das
Register R0 geladen, dann nicht mehr. Also vergleicht er immer den
Inhalt des Register R0 mit 0 und dies verändert sich ja nicht.
Wie kann ich das umgehen? Wie ist hier eine saubere Vorgehensweise?
Bin über jeden Vorschlag dankbar!
Danke im voraus!
Gruß