Forum: Mikrocontroller und Digitale Elektronik frage zu while schleife


von Dongo (Gast)


Lesenswert?

Bin grad dabei mit dem LM75 die Temp. per I²C auszulesen.

Hab im Datenblatt des megas den ich benutze den syntax gefunden zum
warten bis eine bestimmte bedingung erfüllt ist:

while (!(TWCR & (1<<TWINT)));

while (TWCR & (1<<TWSTO));

kann mir die 2 schleifen da einer erklären?
warum steheht da ein &?

kann man das irgendwie eleganter lösen?

bitte um help danke

von Reiner (Gast)


Lesenswert?

1. TWCR ist ein Register
2. Wenn TWINT z.B Bit 3 in TWCR ist, ist 1<<TWINT  gleich 00001000.
3. Eine UND Verknüpfung von TWCR mit 00001000 ergibt 1 (wahr), wenn
   TWINT gesetzt ist.

Eleganter geht das kaum zu lösen.

Reiner

von Wegstabenverbuchsler (Gast)


Lesenswert?

noch 2 Anmerkungen:

1.    ! ist ein Vorzeichen-Wandler, also "NOT Bedingung"

2.    Die Syntax einer While-schleife ist:
while BEDINGUNG {do} AKTION
hier in de Beispielschleifen ist die AKTION leer, denn da soll ja halt
nix getan werden ausser zu warten bis de BEDINGUNG erfüllt ist

von Dongo (Gast)


Lesenswert?

super danke..

einen GUTEN RUTSCH AN ALLE!!

von Rahul (Gast)


Lesenswert?

"Vorzeichenwandler" nennt sich auch Negation.
In diesem Fall die logische Negation.
Die bitweise Negation wird durch "~" beschrieben.
Wenn mehr Informationen notwendig sind, empfehle ich den K&R
"Programmieren in C", sozusagen die C-Bibel.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.