Sobald die Funktion "uart_init()" aufgerufen wird, wird das, was nach
dem Funktionsaufruf kommt, nicht ausgeführt.
Beispiel:
1 | #include <avr/interrupt.h>
|
2 | #include <avr/io.h>
|
3 |
|
4 | #include "lcd.h"
|
5 | #include "uart0.h"
|
6 |
|
7 |
|
8 | void io_init(void) {
|
9 | DDRB=0xFF;
|
10 | PORTB=0xFF;
|
11 |
|
12 | DDRC=0xFF;
|
13 | PORTC=0xFF;
|
14 |
|
15 | DDRD=0xFF;
|
16 | PORTD=0xFF;
|
17 | }
|
18 |
|
19 |
|
20 | int main(void) {
|
21 |
|
22 | uart_init();
|
23 |
|
24 |
|
25 | // *** Wird nicht ausgeführt ***
|
26 |
|
27 | io_init();
|
28 |
|
29 | LCD_init();
|
30 | LCD_clear(7);
|
31 | LCD_ShowString(12, 120, colors[2], "Done.");
|
32 |
|
33 |
|
34 | while(1);
|
35 | }
|
Hoffe jetzt ist es verständlicher ;)!
Hab noch herausgefunden, dass das Problem nur da ist, wenn TXEN und RXEN
aktiviert sind. Also wenn ich diese Zeile
1 | UCSRB |= (1 << RXEN) | (1 << TXEN);
|
weglasse, ist das Problem nicht mehr da. Aber dann ist der USART auch
nicht richtig initialisiert und folglich kann man darüber auch nichts
empfangen/senden...