Cytuj:
GIFR &=~ (1<<INT0); // zeruj flagę timera
Do czego służy ta linia?
Kod:
while (1)
{
PORTA |= 0x0f; // wyzerowanie stanu diod
PORTA &=~ i; // wyświetl wartosc na diodach
}
Wie Pan jak to działa? I tak używa Pan timera, nie lepiej to tam umieścić? Zdarzenia są tak rzadko, że nie ma co męczyć uC.
Ogólnie to bym proponował Panu zacząć od metody dużo prostszej. Czyli ustawienie timera w tryb CTC, przerwanie co około 10ms. Co te 10ms porównywać stan klawisza ze stanem poprzednim, jeśli będzie inny, to rozpocząć zliczanie do 50ms i dopiero wtedy sygnalizować zmianę stanu przycisku. Koncepcyjnie dość proste.
Ds3 napisał(a):
A gdzie eliminacja drgań styków klawisza?
Może spróbuj do obsługi klawisza wykorzystać kod z tej strony:
http://mirekk36.blogspot.com/2012/10/ob ... w-cd2.htmlPozdrawiam!
To tam akurat jest zaszyte. Proszę zerknąć w przerwanie timera.