Hallo, bei der USART-Initialisierung liest man im Manual UCSRC = ....... (3<<UCSZ0) 8 data 2 stop-bit Mit der nach links zu verschiebenden 3 - ist das eine neue Erfindung von C oder bloß ein Druckfehler? Wie müßte man denn schreiben, wenn man nur ein Stopbit wollte: 2<< ? Viele Grüße Alexander
mit << kannst du alles nach links schieben, nicht nur einsen da du ja scheinbar ein Manual hast kannst du ja nachschauen was an der Position UCSZ0 für Bits stehen ... na gut, ich verrat's: es ist die Zahl der übertragenen Bits, 3 steht für 8Bit
@Alexander: Wenn Dir schon die Grundlagen von C Probleme bereiten, empfehle ich ein Buch über die Grundlagen von C. Sonst wirst Du noch viel Schwierigkeiten bekommen.
Hallo Walter Walter wrote: > mit << kannst du alles nach links schieben, nicht nur einsen > und wie kriege ich das dann sinnvollerweise unter? Schließlich handelt es sich doch um nur um einzele Bits mit den Werten 0 oder 1 in dem Register UCSRC, nämlich UCSZ0=Bit 1 und UCSZ1=Bit 2. Und wenn man sich vorstellen könnte, es würden halt drei mal eine eins verschoben? Geht nicht, denn das dritte der Bits sitzt in einem ganz anderen Register (UCSRB). Ach, die Zuweisung mit den Werten der Bits kann es auch nicht sein, denn Bit 1 und Bit 2 gibt 6. Ist doch sehr mysteriös, oder? Aber vielleicht funktioniert es trotzdem? > da du ja scheinbar ein Manual hast kannst du ja nachschauen was an der > Position UCSZ0 für Bits stehen ... > > na gut, ich verrat's: es ist die Zahl der übertragenen Bits, 3 steht für > 8Bit Hier ist das erste Ergebnis meiner Zusammenstellung (ich habe mir die Mühe gemacht, weil ich demnächst etwas in das Programm schreiben muß). Sind die Ausdrücke falsch? UCSRC = (1<<UCSZ1) | (1<<UCSZ0) = 8 bits , außerdem noch UCSRB = (0<<UCSZ2) = 8 bits oder auch UCSRC |= 134 für 8 bit, parity disabl, 1 stopbit. Je mehr man sich hineinvertieft, desto unübersichtlicher wird es (wann muß URSEL sein = 1, wann = 0?). Ich werde den ganzen Kram wohl von einem getesteten Programm abschreiben (möglichst ohne 3<<). Viele Grüße Alexander
(möglichst ohne 3<<).
>
Nun gut, wenn <<3 heißt, bit 0 und bit 1 = zusammen =3 werden um eins
nach links verschoben und rechts wird eine Null aufgefüllt (UCPOL soll
ja = 0 sein),
dann soll mir das recht sein.
mfg
Alexander
Hi, kann Geek nur voll zustimmen. Wenn Du Dir das Ganze mal genau angesehen hättest (insbesondere z.B. auch wie UCSZ0 und UCSZ1 definiert sind), wärst Du vielleicht auch selbst drauf gekommen, daß
1 | (3<<UCSZ0) |
und
1 | ((1<<UCSZ1) | (1<<UCSZ0)) |
im Endeffekt ein und dasselbe sind. Ansonsten, ein Stift und ein Stück Papier wirken manchmal Wunder. CU
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.