Forum: Mikrocontroller und Digitale Elektronik Atmel 9-Bit Mode


von Nilix N. (nilix)


Lesenswert?

Hallo

Ich will ein MDB-Protokoll mit 9-Bit realisieren.
Prozessor Atmel Atmega64.
Das Datenblatt habe ich gelesen.
Wenn ich am TX den Oszi anschließe sehe ich es aber nicht.

Zum testen schalte ich um, angeschlossen ist mein Oszi.
Baudrate stimmt, aber das Paritätsbit sehe ich nicht aan der Ausgabe auf 
dem Oszi.
SendByteRs232_UART_MDB('A',true);
delay();// 1Sekunde warten
SendByteRs232_UART_MDB('A',false);


void Init_UART_MDB(void)
{
Uart_1_set_baudrate(BAUDRATE_UART_1); //9600 Baud

UCSR1A |= (1<<U2X1); //double_bdr
UCSR1A |= (1<<MPCM1);//hierzu muss sich das Gerät im 9-Bit-Modus 
befinden

UCSR1C |= (1 << UCSZ12) | (1 << UCSZ11) | (1 << UCSZ10);   // 9n1

//Aktivieren
UCSR1B= (1<<RXEN1)|(1<<TXEN1);

//Interupt aktivieren
UCSR1B |= (1<<RXCIE1);
}


void SendByteRs232_UART_MDB(unsigned char c,bool Bit9)
{
  //Warten bis Sendeschleife leer
  while(!((UCSR1A) & (1<<UDRE1))) {};//Transmit buffer empty

  UCSR1B &= ~(1<<TXB81);
  if(Bit9) UCSR1B |= (1<<TXB81);

  //Daten
  UDR1 = c;
}

Weiss jemand warum?

von Nilix N. (nilix)


Lesenswert?

Habs gefunden.
Falls jemand das Problem auch hat.

UCSR1B= (1<<RXEN1)|(1<<TXEN1)|(1<<UCSZ12)|(1<<RXCIE1);

von Nemopuk (nemopuk)


Lesenswert?

Typisch menschlich: Wenn man sich die Mühe macht, das Problem für andere 
ordentlich zu beschreiben, kommt man oft selbst auf die Lösung.

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.