Forum: Mikrocontroller und Digitale Elektronik ATMega32 UART initialisieren (UCSRC und UBRRH)


von Karl (Gast)


Lesenswert?

Hallo zusammen habe nochmal eine Frage zu dem Atmega32 bzw. der 
Konfiguration der USART Schnittstelle.

Laut Datenblatt muss man zum schreiben des UBRRH am MSB eine logische 
Null haben um auf das UCSRC zu schreiben muss man am MSB eine logische 
Eins haben. Die Baudrate wird richtig eingestellt. Aber auf das 
C-Register kann ich nicht richtig zugreifen.
1
     
2
  UBRRH = UBRRH_VALUE;
3
  UBRRL = UBRRL_VALUE;
4
5
6
  UCSRC = (1 << URSEL) | (1 << USBS) | (3 << UCSZ0);
Das gleiche passiert bei folgendem Code
1
  UBRRH = UBRRH_VALUE;
2
  UBRRL = UBRRL_VALUE;
3
4
5
  UCSRC = (1 << URSEL) | (1 << USBS) | (1 << UCSZ1) | (1 << UCSZ0);


Damit soll eine Übertragung mit 8 Bit + Zwei Stopbit eingestellt werden. 
Aber er macht nur 6 Bit + Stoppbits und zwar für den Rest der Framezeit 
(48 µs) =>
 8µs   Start
+6*4µs Daten (24µs)
+4*4µs Stop  (16µs)

von Stefan E. (sternst)


Lesenswert?

Karl schrieb:
> Damit soll eine Übertragung mit 8 Bit + Zwei Stopbit eingestellt werden.
> Aber er macht nur 6 Bit + Stoppbits und zwar für den Rest der Framezeit
> (48 µs) =>
>  8µs   Start
> +6*4µs Daten (24µs)
> +4*4µs Stop  (16µs)

Was ist das für eine merkwürdige Rechnung? Das Start-Bit hat eine 
einfache Länge.

Kann es vielleicht sein, dass du beim Vergleich vom Oszi/LA-Bild mit den 
gesendeten Daten nicht bedacht hast, dass LSB-First gesendet wird?

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
Noch kein Account? Hier anmelden.