Hallo, ich hab hier ein paar Probleme..
Und zwar will ich etwas über Uart an den Rechner senden, wenn eine Taste
gedrückt wird.
Das Senden ist auch kein Problem...
So funktioniert das ganze z.B. wunderbar:
1 | while(1)
|
2 | {
|
3 | if ((PIND & (1<<PD3))>0) //Taster an PD3 gedrückt?
|
4 | {
|
5 | uart_puts("PD3 gedrückt");
|
6 | PORTD|=(1<<PD5);
|
7 | }
|
8 | else
|
9 | {
|
10 | PORTD&=(!(1<<PD5));
|
11 | PORTD|=(1<<PD5);
|
12 | }
|
13 |
|
14 |
|
15 | }
|
Lass ich den else-Block aber weg oder leer, wird "PD3 gedrückt" immer
gesendet. Egal ob der Taster gedrückt wird oder nicht.
Wird das if wegoptimiert???
Ich benutze das AVR-Studio mit GCC (vers 3.4.6 ? )
(optimierungseinstellung -Os oder -O0 macht keinen Unterschied)