avr-gcc ,hazudik az if:-)

Papp Zoltán zombi at c2.hu
Sun Sep 10 04:13:52 CEST 2006


>  Osszesen 6 nyomogombom van.Gondoltam csak az INTeken levokre rakok  
> pergesmebtesitest ,LS00-val.
>  De igy mar maskepp gondolkodom errol..
>  Meglehet csinalni softbol?Mert 6 gombra nem akarok IC -ket rakni,40xx  
> bol is ketto kell 6 gombra ha jol emlekszem..azmar csunya nekem.

Hali!

Én általában szoftveresen prell-mentesítek.
Ímhol-e:
Tapasztalataim alapján egy nyomógomb max-max-max. 4-5msec-ig prellez (de  
általában <1-2msec)
A legtöbb esetben olyan az alkalmazás, ahol egyszerre egy nyomógombot kell  
értelmezni. Általában van egy általános 1msec-es (vagy e körüli) timerem  
(ami egyéb dolgokra is jó: timeout-ok, stb.), itt nézem, hogy le lett-e  
nyomva valamelyik gomb. Ha igen, akkor átadom a főprogramnak egy flag-gel  
(sok gomb esetén plusz egy "scan-kód"-dal) (ezt ott lekezelem, majd  
törlöm).
Beállítok egy számlálót (kb. 10msec), eddig nem nézem a bill.-változást  
(hadd prell-jen!). Ezután addig, míg ezt a gombot el nem engedték, nem  
nézek újabb bill-t. Itt szóba jöhet, hogy ha X ideig (KEY_DELAY) nyomva  
van tartva, akkor újra beállítom a flaget, majd innentől kezdve, amíg  
nyomva van, Y időnként (1/KEY_RATE) újra beállítom.
Ha felengedték a bill-t, akkor újfent nem nézem kb. 10msec-ig  
(anti-prell). Ezzel még mindig akár 50Hz-es gomb-nyomkodás is elérhető :-)  
.
Ha egyszerre kell több gombot érzékelni, akkor vagy az összes gombra kell  
prell-timer (ami azért már erőforrás), vagy itt már tényleg érdemes  
elgondolkodni hw-es megoldáson. Ha pl csak módosító gombra van szükség  
(Shift, Alt, Ctrl, Alma, Körte, Kisablak, stb.) akkor ezek státuszát elég  
akkor figyelni, ha gomb is érkezik mellé.

Ha jó a nyomógomb, akkor a fenti 10msec-eket lehet csökkenteni (bár nem  
nagyon érdemes), ki kell tapasztalni.

Üdv
-- 
Papp Zoltán
OneWay Electronics



More information about the Elektro mailing list