Hallo @ll ! Ich bin nicht mehr blutjunger Anfänger in Sachen avr c programmieren und hab auch Schon so einige Programme erstellt. Dennoch hab ich noch eine ganz wichtige GrundsatzFrage. Ich hab immer wieder Probleme mit der Schreibweise. Was ist eigentlich der Unterschied zwischen z.b. TCCR0B = (1<<COM1A1)|(1<<WGM11); und TCCR0B |= (1<<COM1A1)|(1<<WGM11); Ich verwende immer die 2te Schreibweise. In manchen c Programmen stehts aber auch anders. Wo liegt da der Unterschied ? Lg
Reinhard Schopf schrieb: > TCCR0B = (1<<COM1A1)|(1<<WGM11); Hier werden die beiden Bits COM1A1 und WGM11 auf "1" gesetzt, alle anderen auf "0". > TCCR0B |= (1<<COM1A1)|(1<<WGM11); Hier werden die beiden Bits COM1A1 und WGM11 auf "1" gesetzt, alle anderen bleiben unverändert. Gruß Dietrich
TCCR0B = (1<<COM1A1)|(1<<WGM11) beschreibt das gesamte Register mit 6 0en und 2 1en an den entsprechenden Bit-Positionen. Alles was vorher drinstand ist überschrieben. TCCR0B |= (1<<COM1A1)|(1<<WGM11) bedeutet TCCR0B = TCCR0B | ((1<<COM1A1)|(1<<WGM11)) also eine veroderung des alten Inhalts mit dem rechten teil D.h. im Endeffekt werden genau zwei Bits gesetzt, der Rest bleibt unverändert. Rücksetzen geht analog mit TCCR0B &= ~((1<<COM1A1)|(1<<WGM11))
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.