Gast
#801544
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!!!