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