Sync Break für LIN erzeugen

Gast #2266557
Lesenswert?
• ▲
▼
Hallo,

ich bin gerade dabei auf USART-Basis ein LIN-Protokoll zu schreiben. 
Allerdings funktioniert der Baudratenwechsel zur Erzeugung des 
Sync-Breaks nicht. Zum Baudratenwechsel möchte ich den Baudratenteiler 
per U2X1 im Register UCSR1A auf 1 bzw. 0 setzen. Der verwendete 
Controller ist ein AT90CAN128. Was gesendet wird kann ich am Oszi 
verfolgen. Im Dateianhang ist zu erkennen, dass der SyncBreak gleich 
lang ist wie das SyncField. Das SyncBreak sollte aber fast doppelt so 
lang sein?!?

Hier der Ausschnitt aus dem Code:

/* Baudrate einstellen */
UBRR1H = (103 >> 8);    //103 = 9600Baud bei 16mhz mitU2X1=0
UBRR1L = 103;

/* Asynchron, 8N1 */
UCSR1C = (0<<UMSEL1) |(0<<UPM11)|(0<<UPM10)|(0<<USBS1)| (1<<UCSZ11) 
|(1<<UCSZ10);

/* Empfänger und Sender einschalten */
UCSR1B = (1<<RXEN1) | (1<<TXEN1)| (0<<UCSZ12);
sei();

while(1)
{

UCSR1A = (0<<U2X1); //9600Baud

//Sync-Break
uart_send(0x00);
uart_send(zeichen);


UCSR1A = (1<<U2X1); //19200Baud

//Sync-Field
zeichen = 0x55;
uart_send(zeichen);

//Rest senden
...
}

Mit dem Befehl UCSR1A = (0<<U2X1) sollte die Baudrate zum Senden des 
Sync-Breaks auf 9600 zurückgestellt werden. Das Funktioniert nicht! - 
Warum?

Vielleicht findet einer im Forum den Fehler. Wäre toll. Habe bestimmt 
irgendwas übersehen...


Viele Grüße,

Jörg
Angehängte Dateien:

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.