Hallo!
Hab eine kleine Testroutine gebastelt und meinen UART zum Alphabet
aufsagen zu überreden.
1 | #define FCPU 8000000L
|
2 | #define UART_BAUD_RATE 9600
|
3 | #define UART_BAUD_CALC(UART_BAUD_RATE,F_OSC)
|
4 | ((F_OSC)/((UART_BAUD_RATE)*16L)-1)
|
5 |
|
6 | #include <inttypes.h>
|
7 | #include <stdio.h>
|
8 | #include <stdlib.h>
|
9 | #include <avr/io.h>
|
10 |
|
11 | int uart_putc(unsigned char c)
|
12 | {
|
13 | while (!(UCSRA & (_BV(UDRE))));
|
14 | UDR = c;
|
15 | return 0;
|
16 | }
|
17 |
|
18 | int main( void )
|
19 | {
|
20 |
|
21 | UCSRB |= _BV(TXEN);
|
22 | UCSRC |= _BV(URSEL)|_BV(UCSZ0);
|
23 |
|
24 | UBRRH=(uint8_t)(UART_BAUD_CALC(UART_BAUD_RATE,F_CPU)>>8);
|
25 | UBRRL=(uint8_t)UART_BAUD_CALC(UART_BAUD_RATE,F_CPU);
|
26 |
|
27 | for (int i='A';i<'A'+26;i++) {
|
28 | uart_putc(i);
|
29 | }
|
30 |
|
31 | }
|
Am PC kommt aber nur Ah"Et!IibMzP5QUuaY an. Dort sind 9600 Baud mit
8N1 eingestellt. Was mach ich denn falsch?
Grüße
Tobias