Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

problem z klawiatura matrycowa

raven000
-
-
Posty:15
Rejestracja:23 paź 2006, o 11:52
Lokalizacja:warszawa
Kontaktowanie:
problem z klawiatura matrycowa

Postautor: raven000 » 28 mar 2007, o 10:45

może wy mi powiecie co robie nie tak
mam klawiaturke x-y i próbuję z niej z czytywać stan wszystko wygląda nawet ok z jednym małym szkopułem klawisze 2 i 3 dają ta sama wartość

Kod: Zaznacz cały

$regfile = "m32def.dat" $crystal = 3686400 $hwstack = 128 $swstack = 128 $framesize = 64 Dim Klawisz As Byte , A As Byte Czerwona Alias Portc.7 Masa Alias Portc.5 Elektromagnes Alias Portc.4 Kolumna3 Alias Portd.7 Kolumna1 Alias Portd.5 Kolumna2 Alias Portd.2 Wiersz1 Alias Pind.1 Wiersz2 Alias Pind.3 Wiersz3 Alias Pind.4 Wiersz4 Alias Pind.6 Config Pind.7 = Output Config Pind.5 = Output Config Pind.2 = Output Config Pind.1 = Input Config Pind.3 = Input Config Pind.4 = Input Config Pind.6 = Input Config Pinc.5 = Output Config Pinc.7 = Output Portd = &B11111110 Set Masa Wait 1 Reset Masa Do Klawisz = 16 Set Kolumna1 If Wiersz1 = 1 Then Klawisz = 1 Elseif Wiersz2 = 1 Then Klawisz = 4 Elseif Wiersz3 = 1 Then Klawisz = 7 Elseif Wiersz4 = 1 Then Klawisz = 10 Else End If Reset Kolumna1 Set Kolumna2 If Wiersz1 = 1 Then Klawisz = 2 Elseif Wiersz2 = 1 Then Klawisz = 5 Elseif Wiersz3 = 1 Then Klawisz = 8 Elseif Wiersz4 = 1 Then Klawisz = 0 Else End If Reset Kolumna2 Set Kolumna3 If Wiersz1 = 1 Then Klawisz = 3 Elseif Wiersz2 = 1 Then Klawisz = 6 Elseif Wiersz3 = 1 Then Klawisz = 9 Elseif Wiersz4 = 1 Then Klawisz = 11 Else End If Reset Kolumna3 If Klawisz <> 16 Then For A = 1 To Klawisz Set Masa Waitms 500 Reset Masa Waitms 500 Next A End If Loop
kombinuje 2 dzień i jak na razie z marnym skutkiem

na PCB linie podpięte do "wierszy" są podciągnięte 10k do masy

dodam tylko ze jak sprawdzam każdą kolumnę z osobna wszystko jest ok

Awatar użytkownika
Pantera33
-
-
Posty:62
Rejestracja:25 sie 2004, o 15:23
Kontaktowanie:

Postautor: Pantera33 » 28 mar 2007, o 15:34

A nie próbowałeś getkbd ?

raven000
-
-
Posty:15
Rejestracja:23 paź 2006, o 11:52
Lokalizacja:warszawa
Kontaktowanie:

Postautor: raven000 » 28 mar 2007, o 16:05

jak mi powiesz jak skonfigurować wiersze/kolumny dla dowolnych linii portu to bardzo chetnie skorzystam z takiej mozliwosci

Awatar użytkownika
Pantera33
-
-
Posty:62
Rejestracja:25 sie 2004, o 15:23
Kontaktowanie:

Postautor: Pantera33 » 28 mar 2007, o 17:55

Niestety z tego co wiem to muszą być kolejne linie portu. Ale u Ciebie coś nie bardzo mi się podoba podciąganie do masy. Zresztą w helpie dla getkbd jest schemacik jak powinna być zrobiona taka klawiatura.

szymel
-
-
Posty:212
Rejestracja:16 sty 2005, o 16:42
Lokalizacja:Włocławek

Postautor: szymel » 28 mar 2007, o 18:11

... Ale u Ciebie coś nie bardzo mi się podoba podciąganie do masy...
Mnie również ten sposób się nie podoba , ale też powinien działać.Natomiast miałbym zastrzeżenia co do samego kodu , który jest "niebezpieczny" dla życia mikroprocka :D
To niebezpieczeństwo , to możliwość zwarcia dwóch pinów , które są ustawione jako wyjście , a mogą mieć różne stany wyjściowe.Poza tym , skoro są na zewnątrz rezystory pull-down , to po kie licho włączać wewnętrzne pull-up.
I na koniec .
...z jednym małym szkopułem klawisze 2 i 3 dają ta sama wartość ...
Ale jaką wartość :?:

Piotrek

raven000
-
-
Posty:15
Rejestracja:23 paź 2006, o 11:52
Lokalizacja:warszawa
Kontaktowanie:

Postautor: raven000 » 28 mar 2007, o 18:11

klawiatura mniej wiecej jest tak podpieta z tym ze wiersze/kolumny nie sa podpiete w tej kolejnosci
projektujac plytke nie znalem rozkladu wyprowadzen klawiatury wiec podpiete byly jak leci
w szereg sa wsadzone rezystory 1k i dlawiki 10uH i linie odpowiadajace za wiersze sa sciagniete 10k do masy

do tej pory taka konfiguracja nie sprawiala problemu tylko ze klawiaturka byla podpinana do pcf'ki

szymel
-
-
Posty:212
Rejestracja:16 sty 2005, o 16:42
Lokalizacja:Włocławek

Postautor: szymel » 28 mar 2007, o 18:17

...w szereg sa wsadzone rezystory 1k i dlawiki 10uH ...
W szerg wierszy , czy kolumn :?:

Piotrek

raven000
-
-
Posty:15
Rejestracja:23 paź 2006, o 11:52
Lokalizacja:warszawa
Kontaktowanie:

Postautor: raven000 » 28 mar 2007, o 18:17

co do wartosci to chodzi o to ze 2 i 3 na klawiaturze odczytuje jako ten sam klawisz

a co macie do tego podciagania chetnie sie dowiem??

[ Dodano: 28-03-2007, 18:19 ]
W szerg wierszy , czy kolumn :?:

Piotrek

i tu i tu
nie znalem przy projektowaniu rozkladu wyprowadzen z klawiatury

szymel
-
-
Posty:212
Rejestracja:16 sty 2005, o 16:42
Lokalizacja:Włocławek

Postautor: szymel » 28 mar 2007, o 18:40

co do wartosci to chodzi o to ze 2 i 3 na klawiaturze odczytuje jako ten sam klawisz
No toś mi wyjaśnił ;) Pytałem , czy klawisze 2 i 3 odczytuje jako 2 , czy jako 3 :?:
a co macie do tego podciagania chetnie sie dowiem??
W zasadzie nic , poza tym że nie byłoby potrzebne to całe otoczenie w postaci rezystorów , jeśli przewody łączące nie są zbyt długaśne ;)

Piotrek

raven000
-
-
Posty:15
Rejestracja:23 paź 2006, o 11:52
Lokalizacja:warszawa
Kontaktowanie:

Postautor: raven000 » 28 mar 2007, o 18:45

odczytuje jako 3


a co tego otoczenia to powiem to tak :601: ma wytrzymac ciezkie warunki :601: i nie chce zeby mi avr resetowalo bo juz to kiedys przerabialem to teraz dmucham na zimne :622:

Awatar użytkownika
Piotr Hnatiuk
-
-
Posty:21
Rejestracja:12 wrz 2005, o 20:52
Lokalizacja:Warszawa

Postautor: Piotr Hnatiuk » 2 kwie 2007, o 16:55

Jeżeli dobrze rozumiem masz gotową klawiaturę, która w szyny szeregów kolumn ma elementy RI, szeregi wierszy są połączone przez 10k do masy.
Twój algorytm całkowicie pomija przypadek naciśnięcia więcej niż jednego klawisza! W takiej sytuacji elektronika powinna separować linie wyjściowe procesora, a program zwracać kod błędu lub brak klawisza. AVR'ki na liniach wejściowych są odporniejsze na zakłócenia po włączeniu wewnętrznych rezystorów podciągających, błędem jest więc 10k do masy. BASCOM nie generuje bardzo "szybkiego" kodu, jednak rozważ opóźnienie pomiędzy odczytami kolejnych kolumn, szczególnie przy dłuższych przewodach klawiatury.
Warto jeszcze pomyśleć o "iskrzeniu" klawiszy i minimum sprawdzać ich stan dwukrotnie z opóźnieniem kilkunastu ms.

Wróć do „Projektowanie PCB, programy EDA, CAD, narzędziowe”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 26 gości