geclearte bits sind null, ich habe es versucht an der USART auszulesen. eins geschrieben, nul,l gelesen.


das READ AS SET hat ne andere bedeutung (die eigentlich verdammt wichtig ist:
benutzt man CBI oder SBI, muss man sehr vorsichtig sein. diese befehle setzen nämlich nicht wirklih nur das eine bit, sondern:
lesen das register
verknüpfen es mit ODER mit dem bit
schreiben das register zurück
dadurch werden die interrupt-flags gelöscht!!!


"Note that the CBI and SBI instructions will operate on all bits in the I/O Register, " -> beachten sie, dass CBI und SBI auf alle bits des registers wirken.
"writing a one back" -> schreiben eine 1 zurück
"into any flag read as set" -> in jedes flag, das als gesetzt gelesen wurde
"thus, clearing the flag" -> und dadurch wird das flag gelöscht



das = ist schon richtig. sagen wir mal, wir haben ein status register, in dem 8 interrupt-flags drin sind:
0b00110101
4 flags sind aktiviert. wir wollen jetzt das bit 4, also die zweite eins von links löschen.
möglichkeit 1:
REG |= 0x10;
was ja das gelice bedeutet wie
REG = REG | 0x10;
also REG = 0b00110101 | 0b00010000
also REG = 0b00110101

jetzt werden 4 einsen geschrieben. und da eine 1 ja zum löschen den interrupt-flags verwendet wird, werden alle 4 interrupt-flags gelöscht, obwohl wir nur eines wollten...

zweite möglichkeit:
REG = 0x10;
also
REG = 0b00010000;
es wird nur eine 1 geschrieben. das bit wird gelöscht, alle anderen bits bleiben unverändert.