while-Schleife STM32

Gast #4184039
Lesenswert?

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ß

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren