Forum: Mikrocontroller und Digitale Elektronik Debounce-Funktion aus dem GCC-Tutorial


von S.T (Gast)


Lesenswert?

Hallo, arbeite jetzt mit nem attiny2313.
Hab den USBtoSerial Konverter unter Linux (nein unter Windows klappts 
nicht :-( ) zum laufen gebracht.

Auf jedenfall hab ich mir mal diese Debounce-Funktion mal angeschaut und 
wenn ich sie richtig verstanden habe, schaut diese doch erstmal nach, ob 
der Pin auf GND gezogen wurde, oder? Und dann wartet die Funktion 100ms 
und guckt dann ob der Pin wieder auf High steht, wartet wieder 100ms und 
gibt dann true zurück.

Ich taste das indem ich eine LED mit einem jeweiligen druck auf den 
Taster aus und beim nächsten Druck wieder anschalte.

Wenn das so wäre dann wundert mich eins:
Wenn ich den Taster gedrückt lasse (dauerhaft auf GND) müsste nach 
meinem Verständnis sich doch nichts an dem Status der LED ändern, oder? 
Das dürfte doch erst passieren, wenn ich den Taster wieder loslasse, 
oder? Weil die Funktion doch verraussetzt das ich einmal auf GND 
geschaltet habe, und erst wenn dann auf High wieder geschaltet wird eine 
1 zurückgibt. Aber was nun wirklich passiert ist, dass die LED auch bei 
einem dauerhaften Druck angeht nur nicht wieder den Zustand wechselt 
solange ich den Taster gedrückt halte.
Ich benutze das Pollin-Board. Nach meinem Verständnis sind die Taster 
Active-Low.
1
int debounce(const volatile uint8_t* port, uint8_t pin)
2
{
3
if(!(*port & (1 << pin)))
4
{
5
  _delay_ms(50);
6
  _delay_ms(50);
7
  if(*port & (1 <<pin))
8
  {
9
  _delay_ms(50);
10
  _delay_ms(50);
11
  return 1;
12
  }
13
}
14
return 0;
15
}
16
int main(void)
17
{
18
    DDRD |= ((1 << PD5) | (1 << PD6));
19
    PORTD = (1 << PD5);
20
    while(1) {
21
  if(debounce(&PIND,PD4))
22
  {
23
    PORTD ^= (1 << PD6);
24
  }
25
    }
26
    return 0;
27
}

von spess53 (Gast)


Lesenswert?

Hi

>Ich benutze das Pollin-Board. Nach meinem Verständnis sind die Taster
>Active-Low.

Lt. Schaltplan nicht.

MfG Spess

von S.T (Gast)


Lesenswert?

spess53 schrieb:
> Hi
>
>>Ich benutze das Pollin-Board. Nach meinem Verständnis sind die Taster
>>Active-Low.
>
> Lt. Schaltplan nicht.
>
> MfG Spess

Vielleicht hätte ich mal genau auf den Schaltplan schauen sollen :) Ich 
hab irgendwas auf einer Wikiseite hier gelesen gehabt (Thema Entprellen 
von Tastern beim Pollin-Board) und hab das wohl falsch in Erinnerung 
gehabt. Ich frickel mal eben meine debounce-Funktion um :D

von spess53 (Gast)


Lesenswert?

Hi

>Ich frickel mal eben meine debounce-Funktion um :D

'Frickel' lieber die Beschaltung der Taster auf dem Board um. Die ist 
Müll. Such mal hier im Forum.

MfG Spess

von spess53 (Gast)


Lesenswert?


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.