UART Parity even wird nicht erkannt ?

OP #1183539
Lesenswert?
• ▲
▼
Hallo,
ich hab da mal ne kurze Frage.
Folgender Code funktioniert nicht, aber warum?
1
void uinit (void){  //init usart Tx, 8n1 ,parity even
2

3
  UCSRC = (1<<UCSZ1)|(1<<UCSZ0)|(1<<UPM1);  
4
  
5
  //Baudrate (high und low byte)
6
  UBRRH = (unsigned char)(UBRR_VAL>>8);
7
  UBRRL = (unsigned char)UBRR_VAL;
8
  UCSRB |= (1<<TXEN);    // UART TX einschalten
9
}

Besser gesagt, das even Parity bit wird ignoriert. Auf Pc Seite kommt 
nur Müll an, wenn ich Parity auf even stelle.
UPM1=1 und UPM0=0 sollte doch laut Datenblatt Parity auf even stellen 
?!?

Weiß nicht mehr weiter...
#1183550
Lesenswert?
• ▲
▼
Daniel Platte wrote:
> Sorry, Atmega 8, aber ist doch fast überall identisch ?
Nein, ist es nicht! Denn gerade beim ATMega8 und 16 haben UCSRC und 
UBRRH die selbe Adresse. Deshalb muss beim Zugriff auf UCSRC das Bit 
URSEL gesetzt sein, was bei Dir nicht der Fall ist! Das, was Du in UCSRC 
schreibst, landet in Wirklichkeit in UBRRH!

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