Re: "Cleara" InterruptOnChange flagga på en PIC 12F629
Postat: 16 oktober 2011, 14:30:51
Jag har en enkel avstutsning som jag har märkt fungerar ypperligt:
Anta att det rör sig om en enda port (för enklare exempel) som knapparna är kopplade till.
Steg 1: starta en timer-interrupt på kanske 20-50Hz. Kan vara högre också.
Steg 2: I timer-ISR'n läsas porten en gång! Detta värde jämförs med förra avläsningen som har sparats och är de två avläsningar identiska är det bra, annars hopp till steg 4.
Steg 3: Behandla knapptryckningen som det ska göras.
Steg 4: Kopiera avläsningen till "Förra Avläsningen"-variabeln.
Klart! Jag brukar använda en n-key-rollover rutin till knapptryckningar men det kan vara överkurs.
Fördelen med detta sätt är att det inte finns någon vänttid i ISR'n och är knapptryckningen inte "stabil" sker det inget, programmet fladdrar bara förbi som hastigast.
Anta att det rör sig om en enda port (för enklare exempel) som knapparna är kopplade till.
Steg 1: starta en timer-interrupt på kanske 20-50Hz. Kan vara högre också.
Steg 2: I timer-ISR'n läsas porten en gång! Detta värde jämförs med förra avläsningen som har sparats och är de två avläsningar identiska är det bra, annars hopp till steg 4.
Steg 3: Behandla knapptryckningen som det ska göras.
Steg 4: Kopiera avläsningen till "Förra Avläsningen"-variabeln.
Klart! Jag brukar använda en n-key-rollover rutin till knapptryckningar men det kan vara överkurs.
Fördelen med detta sätt är att det inte finns någon vänttid i ISR'n och är knapptryckningen inte "stabil" sker det inget, programmet fladdrar bara förbi som hastigast.