USART ATmega2561

OP #4862352
Lesenswert?
• ▲
▼
Hallo zusammen,

ich habe eine Verständnisfrage zu folgendem Code:

 UCSR0C = (3<<UCSZ00);

aus der Beispiel-Funktion zu USART von Atmel zum ATmega2561.

void USART_init(void){
 
 UBRR0H = (uint8_t)(BAUD_PRESCALLER>>8);
 UBRR0L = (uint8_t)(BAUD_PRESCALLER);
 UCSR0B = (1<<RXEN0)|(1<<TXEN0);
 UCSR0C = (3<<UCSZ00);
}

Wie kommt man auf die 3? Ich dachte man setzt immer nur die 1 oder die 
0?

Vielen Dank für die Hilfe.

Grüße

datatom
Gast #4862361
Lesenswert?
• ▲
▼
Thomas H. schrieb:
> Wie kommt man auf die 3? Ich dachte man setzt immer nur die 1 oder die
> 0?

warum soll man eine 3 nicht schieben? Man kann jede zahl shiften

42 << 1 = 84;

nur bei 1 wird es bei einem Atmel als spezielle Atomare Bitoperation auf 
ein Register umgesetzt, wenn mehr als 1 bit gesetzt ist klappt das nicht 
mehr.
Gast #4862403
Lesenswert?
• ▲
▼
Karl M. schrieb:
> Hallo,
>
> vielleicht sollte man noch mitteilen dass (n<<1) = n*2¹ entspricht.

Vielleicht sollte man das.

Vielleicht sollte man das aber auch in einem C Buch gelesen haben, 
bevor man damit umgeht; spätestens aber bevor man danach fragt.


Es ist nun nicht wirklich schlimm, sowas zu fragen, aber es grenzt doch 
sehr ans Lächerliche.
Gast #4862494
Lesenswert?
• ▲
▼
Hallo,

man schaue ins Datenblatt

# 
http://www.atmel.com/Images/Atmel-2549-8-bit-AVR-Microcontroller-ATmega640-1280-1281-2560-2561_datasheet.pdf

Abschnitt *22.10.4* UCSR0C – USART Control and Status Register 0 C
1
UCSR0C = (3<<UCSZ00);
die 3 dezimal entspricht 11 binär UCSZ00 ist die Bitposition hier =1
Aus (3<<UCSZ00) = (0b11<<UCSZ00) wird 0b110 und das passt wunderbar in 
das Muster von UCSR0C – USART Control and Status Register 0 C !

*Table 22-7.* UCSZ0 Bits Settings
UCSZ0[2:0] = 011 entspricht Character Size 8-bit


Thomas H. schrieb:
> Nach dem wir jetzt alle sehr herzlich gelacht haben, wäre ich
> dankbar,
> wenn mir jemand erklärt, wie die 3 zustande kommt.
OP #4862585
Lesenswert?
• ▲
▼
Danke für die Antworten.

Karl M. schrieb:
> *Table 22-7.* UCSZ0 Bits Settings
> UCSZ0[2:0] = 011 entspricht Character Size 8-bit

Wenn ich in das Datenblatt schaue, steht das Bit UCSZ00 und UCSZ01 an 
der zweiten und dritten Bitposition des Registers UCSR0C. UCPOL0 steht 
an erster Bitposition. Bei 8-Bit ist das Register folgendermaßen belegt: 
00000110
Das wäre der Wert 6.

Aber wahrscheinlich ist es so, dass der Wert ab dem angegebenen Bit 
zählt. Also 11 ab UCSZ00. Damit gilt die eine 1 automatisch für das Bit 
UCSC01. Oder irre ich mich?
Gast #4862607
Lesenswert?
• ▲
▼
Das erste und wichtigste im Leben allgemein und in der Technik im 
Besonderen ist aufmerksames Beobachten. Sonst kann man keine 
Erkenntnisse gewinnen.

Den ersten Schritt, überhaupt mal etwas anzuschauen hast Du jetzt 
gemacht. Schön.

Jetzt guckst Du Dir mal auf Seite 221, die oberste Tabelle an. Was steht 
da ganz links als Zeilenbeschriftung? Richtig. Da steht: "Bit". Und was 
steht da recht daneben? Wieder richtig. Die Ziffern 7 bis 0 in von links 
nach rechts absteigender Folge. Welche Nummer hat USCPOL? Nochmal 
richtig. Es hat die Nummer 0.
Die Aussage:

> UCPOL0 steht an erster Bitposition.

ist also in diesem Kontext falsch. Sie muss lauten:

UCPOL0 steht an NULLTER Bitposition.

Merkregel: In der Informatik werden im allgemeinen die Ordinalzahlen ab 
0 genommen, nicht ab 1.

Das koninzidiert recht gut mit dem Schema dass mit der 
Bitschiebeoperation << gemeint ist.

x << y

Sei x = 1

Dann schiebt 1 << USCPOL mit USCPOL = 0 die 1 um wieviel Bit?

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.