Guten Tag,
ich benutze gerade die uart_init() Funktion, wie sie auch in der Wiki zu
finden ist:
https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Der_UART
1 | void uart_init(void)
|
2 | {
|
3 | #undef BAUD
|
4 | #define BAUD 9600
|
5 | #include <util/setbaud.h>
|
6 | UBRR1H = UBRRH_VALUE;
|
7 | UBRR1L = UBRRL_VALUE;
|
8 | #undef BAUD
|
9 |
|
10 |
|
11 | #if USE_2X
|
12 | UCSR1A |= (1 << U2X1);
|
13 | #else
|
14 | UCSR1A &= ~(1 << U2X1);
|
15 | #endif
|
16 |
|
17 | UCSR1B = (1 << RXEN1) | (1 << TXEN1); // UART TX einschalten
|
18 | UCSR1C = (1 << UCSZ11) | (1 << UCSZ10); // | ~(1 << USBS0); // Asynchron 8N1
|
19 | }
|
Dabei möchte ich aber die Baudrate verändern können, sodass
uart_init(128000); den uart mit der entsprechenden Baudrate starten
würde.
Dabei frage ich mich gerade wie ich das am geschicktesten löse. Immerhin
ist BAUD über eine Präprozessordirektive definiert und kann innerhalb
der Programmlaufzeit nicht geändert werden.
Freundliche Grüße
Felix.