Hallo Forum, die Zeile: UCSR0C = (1<<USBS0)|(3<<UCSZ00); bedeutet doch folgendes: (1<<USBS) // es werden zwei Stop-Bits verwendet (3<<UCSZ00) // sollte identisch sein mit ((1<<UCSZ00) | (1<<UCSZ10)), um 8 Bits zu senden Wenn man nun (3<<UCSZ0) schreibt, setzt das Programm dann automatisch beginnend bei UCSZ00 eine 1 und bei dem nächstfolgenden Bit des Registers UCSR0C (hier laut Datenblatt UCSZ01) ebenfalls eine 1. oder ist dies nur eine kurzschreibweise für die Anleitung des Datenblattes? Im konkreten Fall besitzt das Register UCSR0C folgenden Aufbau: UMSEL01 UMSEL00 UPM01 UPM00 USBS0 UCSZ01 UCSZ00 UCPOL0 möchte ich also USB00, UCSZ01 und UCSZ00 auf 1 setzen, könnte ich dann auch einfach schreiben: UCSR0C=(5<<UCSZ0) ??? mfg
Großes Fragezeichen schrieb: > möchte ich also USB00, UCSZ01 und UCSZ00 auf 1 setzen, könnte ich dann > auch einfach schreiben: > > UCSR0C=(5<<UCSZ0) Nein, dann musst du UCSR0C |= (7<<UCSZ0) scchreiben ! Gruß
Großes Fragezeichen schrieb: > Wenn man nun (3<<UCSZ0) schreibt, setzt das Programm dann automatisch > beginnend bei UCSZ00 eine 1 und bei dem nächstfolgenden Bit des > Registers UCSR0C (hier laut Datenblatt UCSZ01) ebenfalls eine 1. Im Grunde ja. Wenn du dir auf Binärebene überlegst, was 3 << UCSZ0 eigentlich macht, ist auch klar warum.
...also irgendwie stehen eure beiden Antworten leicht im Gegensatz zueinander. Die UCSR0C |= (7<<UCSZ0) wäre nötig, weil das Bit 0 nicht UCSZ0 ist, sondern UCPOL0, richtig? Dann verstehe ich aber nicht, warum das Codebeispiel des Datenblattes das Beipiel mit (3<<UCSZ00) verwendet, weil dort gilt der selbe Registeraufbau, auch dort beginnt das Register mit UCPOL0 als 0-tem Bit...
Großes Fragezeichen schrieb: > Die UCSR0C |= (7<<UCSZ0) wäre nötig, weil das Bit 0 nicht UCSZ0 ist, > sondern UCPOL0, richtig? nö weil binär 111 nunmal im dezimalen 7 ist und nicht 5...
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.