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 (AT90CAN128) 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 (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:
1 | void LIN_Syncbreak() |
2 | {
|
3 | // Baudrate von 19200Baud auf 13000Baud runtersetzen
|
4 | // um für >677µs Syncbreak zu senden
|
5 | |
6 | BAUD_Init(SYNCB); // Baudrate auf 13000 setzen |
7 | |
8 | lin_msg.syncbreak = 0x00; // Daten für Syncbreak = 0x00 |
9 | uart_putc(lin_msg.syncbreak); // Sende Syncbreak |
10 | |
11 | BAUD_Init(NORMB); // Baudrate auf 19200 setzen |
12 | }
|