Warum schickt diese Routine beim Tastendruck am STK500 kein Zeichen über den UART an meinen PC? Die andere switch-Anweisung klappt soweit, damit steuere ich eine LED am STK500 von einem von mir geschriebenen Programm am PC.
1 | #include <avr/io.h> |
2 | |
3 | void main (void) |
4 | {
|
5 | |
6 | DDRA = 0x00; //PORTA = Eingang |
7 | DDRC = 0xFF; |
8 | |
9 | |
10 | char c=0; |
11 | |
12 | UCSRB |= (1<<RXEN) | (1<<TXEN); |
13 | UCSRC |= (1<<URSEL)|(1<<UCSZ0)|(1<<UCSZ1); |
14 | |
15 | UBRRH = 00; //Baudrate einstellen 9600 bei 8 Mhz |
16 | UBRRL = 51; |
17 | |
18 | PORTC = 0xFF; |
19 | |
20 | while( 1 ) |
21 | {
|
22 | while (!(UCSRA & (1<<RXC))); |
23 | //warten bis ein Zeichen ankommt
|
24 | |
25 | c = UDR; |
26 | |
27 | |
28 | if (PINA == 0x7F) //wenn irgendein Taster gedrückt wird.... |
29 | {
|
30 | while (!(UCSRA & (1<<UDRE))); //ist die Sendestufe bereit? |
31 | UDR = 5; //dann schicke 5 über UART |
32 | }
|
33 | switch (c) |
34 | {
|
35 | case '1': |
36 | PORTC = 0x7F; |
37 | break; |
38 | case '0': |
39 | PORTC = 0xFF; |
40 | break; |
41 | }
|
42 | |
43 | |
44 | |
45 | }
|
46 | }
|
Vielen Dank!