ATMega32 UART initialisieren (UCSRC und UBRRH)

Gast #2325749
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)
#2325882
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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren