Hallo,
Ich wollte mal das UART Empfangsinterrupt testen. Mit dem folgenden
Programm sollte eine LED an Port C 0 leuchten, wenn ein Zeichen
empfangen wird, doch dies funktioniert nicht. Kann mir jemand helfen?
1 | #include <avr/io.h>
|
2 | #include <avr/interrupt.h>
|
3 |
|
4 | void uart_init(void)
|
5 | {
|
6 | UBRRH = UBRR_VAL >> 8;
|
7 | UBRRL = UBRR_VAL & 0xFF;
|
8 |
|
9 | UCSRB |= (1<<RXEN); // UART RX einschalten
|
10 | UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); // Asynchron 8N1
|
11 | }
|
12 |
|
13 | int main(void)
|
14 | {
|
15 | uart_init();
|
16 |
|
17 | // PC0=Ausgang
|
18 | DDRC |= (1 << DDC0);
|
19 | PORTC |= (1<<PC0); // LED ausschalten
|
20 | sei(); //Interrupts aktivieren
|
21 | while (1)
|
22 | {
|
23 | }
|
24 | }
|
25 |
|
26 | ISR(USART_RXC_vect)
|
27 | {
|
28 | PORTC &= ~(1<<PC0); //LED einschalten
|
29 | }
|