Hallo zusammen,
Ich versuche auf dem ATMega328p über UART zu senden.
Der TX Pin geht zwar nach aktivieren und setzen der Baud Rate auf 5V
aber leider wird nichts gesendet. Der TX Pin bleibt dauerhaft auf 5V
(Oszilloskop).
Der interne Oszillator (auf 8Mhz gefused) wird benutzt.
Der benutzte Quellcode ist:
1 | #include <avr/io.h>
|
2 |
|
3 | #define UBRR_9600 51 //value for UBRR for baud rate 9600 with 8Mhz
|
4 |
|
5 | void uart_init(uint16_t ubrr)
|
6 | {
|
7 | UCSR0B |= (1 << TXEN0) | (1 << RXEN0);
|
8 | // set baudrate in UBRR
|
9 | UBRR0L = (uint8_t)(ubrr & 0xFF);
|
10 | UBRR0H = (uint8_t)(ubrr >> 8);
|
11 | }
|
12 |
|
13 |
|
14 | void uart_putc(unsigned char data)
|
15 | {
|
16 | // wait for transmit buffer to be empty
|
17 | while(!(UCSR0A & (1 >> UDRE0)));
|
18 | // load data into transmit register
|
19 | UDR0 = data;
|
20 | }
|
21 |
|
22 |
|
23 | int main ()
|
24 | {
|
25 | uart_init(UBRR_9600);
|
26 | while(1)
|
27 | {
|
28 | uart_putc('c');
|
29 | }
|
30 | }
|
Hat jemand eine Idee warum der TX Pin einfach auf 5V bleibt?
Viele Grüße