Nyomógob lekérdezése

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Avatar
poeri
DrótVégénSzéndarab
Hozzászólások: 16
Csatlakozott: 2006. október 20. péntek, 6:00
Tartózkodási hely: Budapest
Kapcsolat:

Nyomógob lekérdezése

Hozzászólás Szerző: poeri »

Kedves gyakorlott kollégák!

Port állapotának beolvasásával van problémám:

Kód: Egész kijelölése

Config Portf = Input     'port F iránya bemenet
Portf = 255                           'felhúzó ellenállás bekapcs
Bitwait Pinf.0 , Reset              ' Idulás!
Print "elindultunk"
Do
   For I = 0 To 7
      If Portf.i = 0 Then            'ha nyomtak gombot...
         Print "PortF " ; I            ' akkor kiírjuk
      End If
   Next I
   Waitms 500
Loop
Nagy naívan azt hittem, hogy ennek így mennie kéne, de nem megyen.
A gomb működik, mert az idulás gombra reagál...

Bezzeg a többi esetben nem vesz tudomást a gobról. Mié?

Másik!
Ha Getkbd()-t használnék az egyirányban (polaritásban) olvassa a sorokat és oszlopokat, vagy oda-vissza. Azaz ha optoval akarom a 4x4-es mátrixot kapcsolgat mennifog, vagy pici reed-ek kellenek?
poeri
Avatar
tibi
DrótVégénSzéndarab
Hozzászólások: 33
Csatlakozott: 2006. augusztus 26. szombat, 6:00

Hozzászólás Szerző: tibi »

Szia!

"If Portf.i = 0 Then" helyett "If Pinf.i = 0 Then"
Avatar
poeri
DrótVégénSzéndarab
Hozzászólások: 16
Csatlakozott: 2006. október 20. péntek, 6:00
Tartózkodási hely: Budapest
Kapcsolat:

Hozzászólás Szerző: poeri »

Köszi Tibi!

:oops: Mit tesz a lámaság és a figyelmetlenség! :evil:

Azt még mindig nem értem, hogy B=PortF után B miért 255? (természetesen bármely gombnyomáskor mindamellett, hogy amit írtál PinF.x működik... :?:
poeri
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10115
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Hozzászólás Szerző: Robert »

mert a portx a portra kiírás eredményt adja vissza és az elején 255-t írsz ki rá...
Avatar
herc1234
Bitfaragó
Hozzászólások: 459
Csatlakozott: 2007. február 9. péntek, 7:00
Tartózkodási hely: Törökbálint

Hozzászólás Szerző: herc1234 »

üdv mindenkinek

nekem úgy dereng bár csontkezdő vagyok
hogy a helpben a bill.lekérdezésre ajánlás is van a matrix megépítésre
és magyarázat hogy akkor mit fog visszadobni
bár kezdő vagyok de nekem ez a funkció jobban tetszik főleg mikor
a lekérdezést sürrün is meg kell csinálni
(állandó figyelés)
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10115
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Hozzászólás Szerző: Robert »

A port és pin változók:
PIN: láb állapota (Pin ang: ICláb)
Port: Adott _belső_ adatportra mi van kiírva!

A 4x4 gombot miért akarod optoval leválasztani? A 4 sor/4 oszlop ki/bemenetállapota változik: ld. a Keyboard fejezetet.
A billentyűzet _önállóan_ van a chipen, nem kell külön táp.

A Billkezelést megírhatod magad, vagy használhatod a getkkbd parancsot is.

Megfontolandó amúgy a GetATKBD esete is. Azaz 2 láb, és PC billentyűzetet (PS2/AT) raksz rá. Ebből létezik önálló numerikus is (USB-PS2 hibridet NE!)

Ha állandó (azonnali beavatkozással) figyelés van, akkor érdemes INT alapon kezelni. M x8 chip esetén a INTCxx metódus, egyéb chipeknél a diódás vagy kapuval az egyik INT lábra.


Billmátrix kezelés:
http://avr.tavir.hu/modules.php?name=Co ... age&pid=20
Avatar
nobody_hun
Bitfaragó
Hozzászólások: 425
Csatlakozott: 2005. november 14. hétfő, 7:00

Hozzászólás Szerző: nobody_hun »

Talán a témába vág, ha sok gomb kell kis helyen, akkor érdemes az Ericsson Chatboard-dal próbálkozni. 8051 klón van benne, soros átvitellel.

myplace.nu/avr/avrchatboard/index.htm

Amit pedig "kiköhög":
ipsec.info/~www/agenda/chatboard.txt

Tudom, hogy így el kell lőni egy soros portot, de valamit valamiért.
Az ára:
Legutóbb 500 HUF-ért vettem 10 darabot a helyi mobilüzlet akciójában (vadi újonnan)... :lol:
Avatar
Dago
Újonc
Újonc
Hozzászólások: 3
Csatlakozott: 2006. április 26. szerda, 6:00

Hozzászólás Szerző: Dago »

Sziasztok!

Tanácsot szeretnék kérni mert már teljesen összezavarodtam a programomban. Hogy tudom legegyszerübben megcsinálni, hogy egy nem megszakításos lábon lévő nyomógomb kapcsolóként működjön(ha egyszer megnyomom bekapcsol valamit ha mégegyszer megnyomom kikapcsol)? Az lcd kezelés +hőmérsékletmérés + páratartalom mérés már megy egy ilyen alap dolog meg kifog rajtam. :oops:

Előre is köszönöm a segítséget.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10115
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Hozzászólás Szerző: Robert »

Egy valtozoerteket leptetsz....
Pollinggal nezed hogy hogy all a gomb....
Avatar
Dago
Újonc
Újonc
Hozzászólások: 3
Csatlakozott: 2006. április 26. szerda, 6:00

Hozzászólás Szerző: Dago »

Robert írta:Egy valtozoerteket leptetsz....
Pollinggal nezed hogy hogy all a gomb....
Egy picit részletesebben is tudnál segíteni...
Mi az a polling?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10115
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Hozzászólás Szerző: Robert »

http://avr.tavir.hu/modules.php?name=Co ... age&pid=18
Itt a polling leírása.


Kiegészítve a programot:

Kód: Egész kijelölése

dim a as word
if gombnyomva then 
    shift A, left
    a.0=1
    else
    shift A, right
    'a.15=0
end if

if A=0 then gosub gomb elengedve
if A=&HFFFF then gosub gombmegnyomva
 
Igy a prell-t is kikuszobolod... Azza 15x rafutva az ellenorzesre nyomva kell lennie a gombnak. Ha a főrutin lassú, akkor az A lehet byte is. Ekkor 8 azonos állapot esetén van megnyomva. Viszont a gombmegnyova rutinban ne felejtsd el nullázni a számlálót, és kis várakozást belerakni (főleg ha gyors a programmag (~0.3...0,5 sec))
Avatar
Dago
Újonc
Újonc
Hozzászólások: 3
Csatlakozott: 2006. április 26. szerda, 6:00

Hozzászólás Szerző: Dago »

Köszi szépen!
Este kipróbálom.

Robert írta:http://avr.tavir.hu/modules.php?name=Co ... age&pid=18
Itt a polling leírása.


Kiegészítve a programot:

Kód: Egész kijelölése

dim a as word
if gombnyomva then 
    shift A, left
    a.0=1
    else
    shift A, right
    'a.15=0
end if

if A=0 then gosub gomb elengedve
if A=&HFFFF then gosub gombmegnyomva
 
Igy a prell-t is kikuszobolod... Azza 15x rafutva az ellenorzesre nyomva kell lennie a gombnak. Ha a főrutin lassú, akkor az A lehet byte is. Ekkor 8 azonos állapot esetén van megnyomva. Viszont a gombmegnyova rutinban ne felejtsd el nullázni a számlálót, és kis várakozást belerakni (főleg ha gyors a programmag (~0.3...0,5 sec))
Avatar
herc1234
Bitfaragó
Hozzászólások: 459
Csatlakozott: 2007. február 9. péntek, 7:00
Tartózkodási hely: Törökbálint

Hozzászólás Szerző: herc1234 »

Üdv

Kicsit elakadtam kéne egy kis help
ha a bill mártixon egyszerre két vagy több gomb van benyomva
(sajnos az én esetemben ez szükségszerű)
akkor a helyiértékek összeadódnak
pl ha egy gomb 6 egy másik 10 akkor a getkbd parancs
16 ot fog visszadni
nem lehet ezt valahogy kiküszöbölni software-esen?
hogy mindig az utolsó lenyomott gombot adja csak vissza?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10115
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Hozzászólás Szerző: Robert »

A, Kézzel írod meg a rutint...
B, Azaz pont 1xre nem tudok nyomógombot megnyomni.
Így ha a előző érték 16 volt (nem volt gomb nyomva), a következő megnyomást beolvasom 4-6x (prell miatt). Ha ez 3 féle érték (16, gombnyomás és a véletlen nyomott gomb), akkor nem veszem figyelembe...

C,A beolvasási mátrixot TE hozod létre (4x4-es gomb), ahol:

Kód: Egész kijelölése

O  1 2 3 4 
S1 + + + +
S2 + + + +
S3 + + + +
S4 + + + +
Az oszlopra kiadod, hogy: 1000
Beolvasod a sorokat. Ha csak 1 1-es van, akkor 1 gomb van csak nyomva. Ha nem, akkor tudod, h melyik 2.

Oszlopra kiadod, hogy 0100
Beolvasod a sorokat. Ha csak 1 1-es van, akkor 1 gomb van csak nyomva. Ha nem, akkor tudod, h melyik 2.

Oszlopra kiadod, hogy 0010
Beolvasod a sorokat. Ha csak 1 1-es van, akkor 1 gomb van csak nyomva. Ha nem, akkor tudod, h melyik 2.

Oszlopra kiadod, hogy 0001
Beolvasod a sorokat. Ha csak 1 1-es van, akkor 1 gomb van csak nyomva. Ha nem, akkor tudod, h melyik 2.

És kész is vagy:)
Avatar
herc1234
Bitfaragó
Hozzászólások: 459
Csatlakozott: 2007. február 9. péntek, 7:00
Tartózkodási hely: Törökbálint

Hozzászólás Szerző: herc1234 »

dehát egymás után sorba be lesz nyomva a gomb és úgy is marad
de jó volna rugalmasnak maradni ugyanis nincs sorrend a gombbenyomások között lehet véletlenszerű
azon gondolkodtam hogy:
két változó
egyik változó mindig az elöző értéket tárolja
a másikal pedig mindig csak beolvasok
a kettő között pedig megvizsgálom hogy van e külömbség
de engem speciel érdekel az is hogy melyik volt benyomva
de ehez igy sok feltételt kéne irni

de aztán rájöttem hogy technikailag ez azért nem lehetséges
mert ha már egy gomb low ba nyomja azt a (sor vagy oszlopot)
akkor onnantól kezdve hiába nyomok meg másik gombot azon a (soron/oszlopon) már nem lesz érzékelve
francba marad a direkt kapcsoló egy pin megoldás
(meghogy költözhetek mega8 ról 16 ra)
grrr
A hozzászólást 1 alkalommal szerkesztették, utoljára herc1234 2007. november 2. péntek, 22:05-kor.
Válasz küldése