Forum: Mikrocontroller und Digitale Elektronik Fehler im Atmega644P Datenblatt?


von Elias B. (bouni)


Lesenswert?

Hi,

ich versuch grade den USART0 vom Atmega644P im 9 Bit Modus zu 
initialisieren und hab wahrscheinlich mein Problem gefunden.

Im DB steht auf Seite 181 "If 9-bit characters are used (UCSZn=7)"
Ich wollte in meiner Naivität das ganze aufdröseln und UCSZ00 bis UCSZ02 
einzeln setzen.
Nicht sicher ob die alle im selben Register stehen geh ich in die 
Register Summary auf Seite 413.
Dort finde ich aber nur das Bit UCSZ02 in Register UCSR0B.
Ok schauen wir eben im Register UCSR0C -> Fehlanzeige.
und im Register UCSR0A -> Auch nix :(
Wo sind den die Bits UCSZ00 und UCSZ01 hingekommen?

Ist das tatsächlich ein Fehler im DB?

Hab dan nachher die Lösung auf den Seiten 190 und 191 gefunden.
Dort sind die einzelnen Zeilen der Register aufgeführt, aber anders als 
in der Summary.

Die vermeintlich verschwunden Bits UCSZ00 und UCSZ01 sind im Register 
UCSR0C.

Um zum Schluss noch sicher zu gehen, stimmt meine Initialisierung so:
1
// MDB USART initialisieren 9,N,1
2
void mdb_usart_init(void)
3
{
4
    // Baudrate einstellen
5
    UBRR0H = (uint8_t) (UBRR_BAUD>>8);
6
    UBRR0L = (uint8_t) (UBRR_BAUD & 0x0ff);
7
8
    // Aktivieren von Receiver & Transmitter und RX Interrupt
9
    // Setzen des UCSZ02 für den 9 Bit Modus
10
    UCSR0B = (1<<RXEN0) | (1 << RXCIE0) | (1<<TXEN0) | (1<<UCSZ02);
11
12
    // Einstellen des Datenformats: 9 Datenbits, 1 Stoppbit
13
    UCSR0C = (1<<UCSZ01)|(1<<UCSZ00);
14
}

Danke schon mal im Voraus

Elias

von spess53 (Gast)


Lesenswert?

Hi

>Die vermeintlich verschwunden Bits UCSZ00 und UCSZ01 sind im Register
>UCSR0C.

Die Bits 1 und 2 von UCSRnC haben verschieden Bedeutungen (und 
Bezeichnungen). Als normale UART sind es:   UCSZn1 und UCSZn0

Bei UART im SPI-Mode sind es UDORDn und UCPHAn.

Also kein richtiger Fehler.

MfG Spess

von Elias B. (bouni)


Lesenswert?

Hi,

ok wenn das so ist :)

Gruss Elias

P.S. Mein Init sieht aber richtig aus wie er ist oder ?

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.