Tastenentprellzeit

Gast #801544
Lesenswert?
• ▲
▼
Hi Leute, ich weiss, vieles wurde schon erklaert und gefragt, aber ich 
braeuchte eure Hilfe. Und zwar habe ich ein kleines LCD Display mit 4 
Tasten und einem 4Mhz getakteten Mega32. Bei jedem Overflowinterrupt 
mache ich eine Tastenabfrage. Ich verwende diese Delayroutine:

inline uint8_t debounce(volatile uint8_t *port, uint8_t pin)
{
    if ( ! (*port & (1 << pin)) )
    {
        /* Pin wurde auf Masse gezogen, 100ms warten   */
        _delay_ms(30);  // max. 262.1 ms / F_CPU in MHz
        _delay_ms(30);
        if ( *port & (1 << pin) )
        {
            /* Anwender Zeit zum Loslassen des Tasters geben */
            _delay_ms(60);
            _delay_ms(60);
            return 1;
        }
    }
    return 0;
}

Leider muss ich ziemlich lange auf meine Tasten druecken um eine 
Reaktion zu sehen. Ich habe auch die Zeiten schon verkuerzt nur wird es 
damit irgendwie auch nicht besser. Koennte jemand mir vielleicht sagen, 
ob ich die Zeiten noch laenger machen soll, oder eher viel kuerzer. Denn 
ich habe keine Ahnung wie lange ein Schalter ungefaer braucht, oder was 
denn so ueblich ist. Oder sind die Zeiten ok und das Problem liegt wo 
anders.
Danke schon mal!!!
#801559
Lesenswert?
• ▲
▼
Daniel wrote:

> damit irgendwie auch nicht besser. Koennte jemand mir vielleicht sagen,
> ob ich die Zeiten noch laenger machen soll, oder eher viel kuerzer.

Was du machen sollst.
Nimm diese Tasten-Abfrage-und-Entprellroutine
http://www.mikrocontroller.net/articles/Entprellung#Komfortroutine_.28C_f.C3.BCr_AVR.29
und erfreue dich wunderbar entprellter Tasten ohne dass der Prozessor
da irgendwo auf irgendwas gross warten muss.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren