Scanning af 4x4 matrix med AVR

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Danish to

Threaded View
Hejsa

Jeg skal igang med et projekt, hvor jeg anvender en AVR controller.
Denne skal bl.a. kunne scanne to 4x4 matrix keypads. Koden hertil
laves i C.
Jeg mangler dog en application note til scanning af disse keypads. Det
er ikke noget problem at finde en med et kodeeksempel i assembler, men
er der nogen, der kan henvise til en i C, eller selv har lavet noget
tilsvarende, jeg må have lov til at se, vil det glæde mig meget.

--
Mvh.

Tomas


Re: Scanning af 4x4 matrix med AVR
Tomas . skrev:
Quoted text here. Click to load it

Scanning af keypad? Du kan enten lave polling eller interrupt drevet.
Ved du hvordan et keypad virker?

--
Hilsen Mikkel Lund
"Sund fornuft, har aldrig stoppet en tosse"
We've slightly trimmed the long signature. Click to see the full one.
Re: Scanning af 4x4 matrix med AVR
Quoted text here. Click to load it

Tja, det virker vel ved, at nogle porte er sat til output og
andre til input - så sendes der på skift til 1 output af gangen,
og derefter checkes, alle input, for at se, hvilket der er
ændret...

--
Mvh.

Tomas


Re: Scanning af 4x4 matrix med AVR
Tomas . skrev:
Quoted text here. Click to load it

Nej sådan virker det ikke som standart. Normalt er er en linje per række
og per kolonne. Så sampler man på alle linjer, finde de to linjer der
noget andet end de andre. De passer så med række og kolonne til den knap
der er trykket.
Så hvis du har nok input ben kan du bruge 8 til at dekode et 4x4 keypad,
og hvis du har processor kraft til overs kan du polle på linjerne, så
behøves du ikke noget ekstra hardware.

--
Hilsen Mikkel Lund
"Sund fornuft, har aldrig stoppet en tosse"
We've slightly trimmed the long signature. Click to see the full one.
Re: Scanning af 4x4 matrix med AVR
Quoted text here. Click to load it

Man har vel aldrig pinne nok :-)
Jeg har lavet det, så jeg bruger en 8-bit port til at scanne et
4x4 keypad. Dette skal jeg så have 2 gange.

--
Mvh.

Tomas


Re: Scanning af 4x4 matrix med AVR
Tomas . skrev:
Quoted text here. Click to load it

Okay. Så ville jeg bruge en 16 kanals MUX, dvs man kommer til at bruge 4
pins til adresse og en til at læse med.

--
Hilsen Mikkel Lund
"Sund fornuft, har aldrig stoppet en tosse"
We've slightly trimmed the long signature. Click to see the full one.
Re: Scanning af 4x4 matrix med AVR

Quoted text here. Click to load it

En 16 kanals MUX? Den har da kun 1 input/output i forhold til de
16...
Det må du hellere beskrive nærmere.
Jeg benytter ellers en ATmega8515 til jobbet, så jeg har 2 porte
ledig til de to 4x4 keypads.

--
Mvh.

Tomas


Re: Scanning af 4x4 matrix med AVR
Tomas . skrev:
Quoted text here. Click to load it

Undskyld det skulle være en demux.

Quoted text here. Click to load it

Hvad er problemet så? En pad per port!


--
Hilsen Mikkel Lund
"Sund fornuft, har aldrig stoppet en tosse"
We've slightly trimmed the long signature. Click to see the full one.
Re: Scanning af 4x4 matrix med AVR
Quoted text here. Click to load it
de

Det giver mere mening.
Quoted text here. Click to load it
porte

Desværre nej. Jeg skal stadig have to stk. 4x4 keypads som
input - altså i alt 32 knapper.

--
Mvh.

Tomas


Re: Scanning af 4x4 matrix med AVR
Tomas . skrev:
Quoted text here. Click to load it

Jamen Tomas du har jo lige skrevet:
"Jeg har lavet det, så jeg bruger en 8-bit port til at scanne et
4x4 keypad. Dette skal jeg så have 2 gange."

Du kan altså koble to 4x4 keypads til 2 porte (2x8bit).

--
Hilsen Mikkel Lund
"Sund fornuft, har aldrig stoppet en tosse"
We've slightly trimmed the long signature. Click to see the full one.
Re: Scanning af 4x4 matrix med AVR
Quoted text here. Click to load it

Ja, det er også det, jeg gør, men det giver jo omregnet også to
knapper pr. bit.

--
Mvh.

Tomas


Re: Scanning af 4x4 matrix med AVR
Tomas . skrev:
Quoted text here. Click to load it

JA, hvad er det du vil???


--
Hilsen Mikkel Lund
"Sund fornuft, har aldrig stoppet en tosse"
We've slightly trimmed the long signature. Click to see the full one.
Re: Scanning af 4x4 matrix med AVR
Quoted text here. Click to load it
også to
Quoted text here. Click to load it

Sorry - Jeg prøver lidt tydeligere så...

På PORTA sidder 16 knapper.
De 16 knapper er reelt 16 positionsmicroswitche.

På PORTD sidder et 4x4 keypad.
Når en tast på PORTD påvirkes, skal en DC motor aktiveres.
Denne vil gennem en gearing få en slæde til at bevæge sig.
Under denne bevægelse, påvirkes en positionsswitch een af
gangen. Motoren fortsætter med at køre indtil den
positionsswitch med det samme nummer, som den tast, der
tidligere blev trykket på, påvirkes.

Håber denne beskrivelse, hjælper på forståelsen af mit problem.

--
Mvh.

Tomas


Re: Scanning af 4x4 matrix med AVR
Tomas . skrev:
Quoted text here. Click to load it

Okay, hvad er problemet så?

--
Hilsen Mikkel Lund
"Sund fornuft, har aldrig stoppet en tosse"
We've slightly trimmed the long signature. Click to see the full one.
Re: Scanning af 4x4 matrix med AVR
Quoted text here. Click to load it
problem.

Tja, mangel på kode i C, der kan håndtere dette :-)

--
Mvh.

Tomas


Re: Scanning af 4x4 matrix med AVR
Tomas . skrev:
 >
Quoted text here. Click to load it

Okay, I get it now :-)

Du skal vel bare starte fra en ende af:
En routine der kan læse et keypad.
En routine der kan styrer en motor.
En routine der kan læse knapper.


Lide slamkode:

while(1){
    if(keypad() != no_push){
        run_motor();
        while(switch() != key){}
        stop_motor();
    }
}
--
Hilsen Mikkel Lund
"Sund fornuft, har aldrig stoppet en tosse"
We've slightly trimmed the long signature. Click to see the full one.
Re: Scanning af 4x4 matrix med AVR
Tomas . skrev:
 >
Quoted text here. Click to load it

Okay, I get it now :-)

Du skal vel bare starte fra en ende af:
En routine der kan læse et keypad.
En routine der kan styrer en motor.
En routine der kan læse knapper.


Lide slamkode:

while(1){
    if(keypad() != no_push){
        motor(run);
        while(switch() != key){}
        stop_motor(stop);
    }
}
--
Hilsen Mikkel Lund
"Sund fornuft, har aldrig stoppet en tosse"
We've slightly trimmed the long signature. Click to see the full one.
Re: Scanning af 4x4 matrix med AVR
Quoted text here. Click to load it

Denne application note beskriver nogenlunde det, jeg ønsker,
skønt jeg ikke kører det interruptstyret (der nok var det
smarteste) - jeg har ikke porte fri til interruptbrug, alle
porte er i brug.
http://www.atmel.com/dyn/resources/prod_documents/doc1232.pdf

Denne applikationnote er endnu smartere, og sparer samtidigt en
port:
http://www.atmel.com/dyn/resources/prod_documents/doc1231.pdf
Men kodemængden er dog rimelig stor, samt i assempler, jeg
lykkeligt har glemt alt om, hvordan virker, så en simpel C-kode
til håndtering af den første applikationkode - bare uden
interruptfunktionen beskriver nok meget det jeg gerne vil. Så er
det jo nærmest blot at gentage denne kode for den anden port.>--


Quoted text here. Click to load it

Det er ikke helt skævt :-)

--
Mvh.

Tomas


Re: Scanning af 4x4 matrix med AVR
Tomas . skrev:
Quoted text here. Click to load it

Så er det bare på med kode kasketten, og komme i gang.

--
Hilsen Mikkel Lund
"Sund fornuft, har aldrig stoppet en tosse"
We've slightly trimmed the long signature. Click to see the full one.
Re: Scanning af 4x4 matrix med AVR
Quoted text here. Click to load it
en
kode
er
port.>--
Quoted text here. Click to load it

Hvilket jo desværre fører os tilbage til mit oprindelige
spørgsmål nemlig, om der er en, der ligger inde med et
kodeeksempel i C, der kan afkode et tastetryk i en matrice... :-)

--
Mvh.

Tomas


Site Timeline