Witam,
projektuję układ z mikrokontrolerem ATTINY414 zasilany bateryjnie.
Jego zadaniem jest cykliczne, co 3 s, wykonywanie pomiaru temperatury i obliczanie średniej.
Ponieważ jest zasilany bateryjnie, układ będzie normalnie uśpiony i tylko co 3 s Timer wybudzi uC, aby zmierzył temperaturę i dalej się uśpił.
Teraz mam taki problem: do urządzenia chciałbym dodać przycisk. Jego wciśnięcie spowoduje wyświetlenie bieżącej wartości średniej temperatury.
Myślałem, aby wykorzystać przerwanie zewnętrzne. Wciśnięcie przycisku wywołuje pojawienie się zbocza opadającego na pinie uC i reakcję. Niestety jest problem drgających styków. Nie uwzględniłem tego sprzętowo (już PCB wykonana), dlatego chciałbym dodać programową obsługę. I teraz zastanawiam się nad tym, czy takie podejście jest ok:
W procedurze obsługi przerwania od przycisku czyszczę flagę przerwania, wyłączam przerwania, aby drgające styki kolejnych nie wywoływały, czekam 20 ms, sprawdzam czy stan przycisku się nie zmienił, włączam przerwania, opuszczam procedurę.
A może lepiej zrezygnować z przerwań zewnętrznych i użyć TIMERA, który będzie co np. 400 ms budził procesor i sprawdzał stan przycisków?
projektuję układ z mikrokontrolerem ATTINY414 zasilany bateryjnie.
Jego zadaniem jest cykliczne, co 3 s, wykonywanie pomiaru temperatury i obliczanie średniej.
Ponieważ jest zasilany bateryjnie, układ będzie normalnie uśpiony i tylko co 3 s Timer wybudzi uC, aby zmierzył temperaturę i dalej się uśpił.
Teraz mam taki problem: do urządzenia chciałbym dodać przycisk. Jego wciśnięcie spowoduje wyświetlenie bieżącej wartości średniej temperatury.
Myślałem, aby wykorzystać przerwanie zewnętrzne. Wciśnięcie przycisku wywołuje pojawienie się zbocza opadającego na pinie uC i reakcję. Niestety jest problem drgających styków. Nie uwzględniłem tego sprzętowo (już PCB wykonana), dlatego chciałbym dodać programową obsługę. I teraz zastanawiam się nad tym, czy takie podejście jest ok:
W procedurze obsługi przerwania od przycisku czyszczę flagę przerwania, wyłączam przerwania, aby drgające styki kolejnych nie wywoływały, czekam 20 ms, sprawdzam czy stan przycisku się nie zmienił, włączam przerwania, opuszczam procedurę.
A może lepiej zrezygnować z przerwań zewnętrznych i użyć TIMERA, który będzie co np. 400 ms budził procesor i sprawdzał stan przycisków?
