Jag har nyligen börjat pilla med switches till min AVR-P28/ATmega88 (nybörjare).
Jag har precis provat ett program där jag försöker komma underfund med kontaktstuds mha delay-funktioner. Detta verkar fungera bra.
Jag blev dock lite nyfiken på att prova hur länge studsarna varar på min MCU, så jag provade att göra en kod som testar detta. Eventuellt kan man inte koda fram det som jag har gjort, eller så har jag inga kontaktstudsar som ger utslag - kan det vara så?
Koden ser ut så här:
Kod: Markera allt
int button_is_pressed()
{ //koden från "while(1)" är min "provkod".
if(bit_is_clear(PIND, PD1)) // Vid intryck blir switch-pinnen LOW (pull-up resistor).
{
while(1)
{
//_delay_ms(2);
if(bit_is_set(PIND, PD1)) //Om det finns studsar så blir pinnen HIGH igen , även om jag inte släpper knappen. Då ska LED:en tändas (det gör den ej).
{
PORTC ^= _BV(PC5);
while(1){}
}
} //Koden här nedan är inte relevant i frågan.
_delay_ms(DEBOUNCE_TIME); //Let bounce clear for 25 ms
if(bit_is_clear(PIND, PD1))
return 1;
}
return 0;
}