Forum: Mikrocontroller und Digitale Elektronik Verständnis Problem Eingänge lesen


von Markus (Gast)


Lesenswert?

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
}

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

Du musst ziemlich gut sein, wenn du eine LED die alle 5 Hunderstel 
Sekunden den Status wechselt, noch blinken siehst.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.