Hallo alle zusammen,

ich muss während des Programmlaufs die Baudrate vom USART ändern, doch
leider funktioniert das nicht so ganz.
Ich baue eine LIN Kommunikation auf (AT90CAN12 und um den Syncbreak zu
senden, muss ich von 19200Baud auf 13000Baud runter gehen.

Mit dem Debugger sehe ich auch das die Baudrate im Register richtig
verändert wurde wenn ich einen Breakpoint zwischen den beiden "BAUD_Init" setze (auf 13000Baud) aber es wird trotzdem mit 19200Baud
gesendet.
Habe ich etwas übersehen oder muss ich irgendein Flag noch setzen damit
die Übertragungsrate auch so übernommen wird ?

Meine Funktion sieht wie folgt aus:

Code:
void LIN_Syncbreak()
{
  // Baudrate von 19200Baud auf 13000Baud runtersetzen
  // um für >677µs Syncbreak zu senden

  BAUD_Init(SYNCB);  // Baudrate auf 13000 setzen

  lin_msg.syncbreak = 0x00;  // Daten für Syncbreak = 0x00
  uart_putc(lin_msg.syncbreak);  // Sende Syncbreak

  BAUD_Init(NORMB);  // Baudrate auf 19200 setzen
}
Gruß Andi