Hi,
ich hab ein Problem, es geht einfach nicht.
Also von Anfang an:
Ich habe einen Attiny2313, an dem ich PD6 ein Taste angeschlossen.
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Tasten_und_Schalter
Die Taste ist Active Low aufgebaut.
Mein Programm sieht so aus:
1 | #include <avr/io.h>
|
2 | #include <avr/delay.h>
|
3 |
|
4 | void main()
|
5 | {
|
6 | int i;
|
7 |
|
8 | DDRB |= (1<<PB2); //LED ausgang
|
9 | DDRD &= ~(1<<PD6);
|
10 | //PORTD &= ~(1<<PD6);
|
11 |
|
12 | PORTB &= ~(1<<PB2); //LED AUS
|
13 |
|
14 | while(1)
|
15 | {
|
16 | if( (PORTD & (1<<PD6)) )
|
17 | {
|
18 | for(i=0; i<10; i++)
|
19 | {
|
20 | _delay_ms(20);
|
21 | }
|
22 | PORTB ^= (1<<PB2); //Led toggeln
|
23 | }
|
24 |
|
25 |
|
26 | }
|
27 |
|
28 | }
|
Also sollte die Led im 2 sec Takt blinken, wenn die Taste nicht gedrückt
ist.
....
Mein Problem ist das es nicht geht.
Wo ist der Fehler ?
jeroen