Hallo,
ich bin gerade am Erlernen von C. Ich benutze den Atmega8A. Mein Problem
ist, dass ich es nicht schaffe zu verstehen warum der µC immer den
Eingang als "Null" sieht. Dabei ist der Taster Hardwaremäßig entpellt
und er besitzt einen Pulldownwiderstand. Dabei soll der Taster (PinD.2)
immer abgefragt werden, bei 1 soll er den Ausgang "blinken" lassen. Dies
geht aber nur ein mal. Mein bisheriges Verständnis sagt mir:
Pin lesen; auf 1 überprüfen ; wenn ja blinken;Pin lesen ; auf 1...
Wenn ich also auf dem Taster bleibe müsste es immer blinken? Ich hab
mein Progrämmchen auch in AVR Studio simuliert, dort läuft es auch nur
einmal durch(es blinkt nur ein paar mal), erst wenn ich den Taster los
lasser und erneut betätige geht es wieder.
Vielen Dank wenn mir das jemand kurz erklären könnte wieso dies nicht
der Fall ist.
1 | int main(void)
|
2 | {
|
3 | DDRD=0b00000001;
|
4 |
|
5 | while(1)
|
6 | {
|
7 | if((PIND & (1<<PIND2))) // Taster Abfrage
|
8 | {
|
9 |
|
10 | PORTD=0b00000001; // blinken
|
11 | _delay_ms(50);
|
12 | PORTD=0b00000000;
|
13 | _delay_ms(50);
|
14 | PORTD=0b00000001;
|
15 | _delay_ms(20);
|
16 | PORTD=0b00000000;
|
17 | }
|
18 | else{
|
19 | PORTD=0b00000000; // Wenn Taster 0 dann Ausgang 0
|
20 | }
|
21 |
|
22 |
|
23 | }
|
24 | }
|