Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 3 kwi 2026, o 23:54


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
PostNapisane: 21 lut 2016, o 13:52 
Offline
Użytkownik

Dołączył(a): 28 lis 2014
Posty: 79
Pomógł: 0

Witam. Z pomocą kolegów z forum powstał krótki kod do obsługi klawiatury matrycowej 3x3. O to cały kod:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Zdefiniowanie połączeń klawiatury
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Kod działa ale nie do końca, mianowicie. W tej wersji jak wyżej, nie działa pierwszy wiersz. Dlaczego ?? No właśnie nie wiem. . . :/

Zaczołem kombinować i zauważyłem pewną zależność. Jeżeli za komentowałem sprawdzanie pierwszego wiersza o tak:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


To wiersz drugi przestał działać :/ No to doszedłem do wniosku że powinno coś być przed wierszem pierwszym. Wpadłem na głupi pomysł, wstawiłem przed wierszem pierwszym sprawdzenie jakby innego wiersza (nie istniejącego, nie podłączonego w rzeczywistości).

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


No i ku mojemu zdziwieniu, pierwszy wiersz zaczoł działać. Dla mnie jest to nie zrozumiałe dlaczego, coś jest źle zrobione tylko co :O

Proszę Was o pomoc i pomysły. Dzięki :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 lut 2016, o 15:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Zrób tak i zobacz czy działa prawidłowo:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


------------------------ [ Dodano po: 13 minutach ]

Spróbuj też dodać linijkę:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

po linijce:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 lut 2016, o 16:11 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

Przed każdym pierwszym ifem wstaw małe opóźnienie w formie jednego lub dwóch asemblerowych poleceń nop
Składnia: [ Pobierz ] [ Ukryj ]
język asm
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

W zasadzie jedna instrukcja powinna wystarczyć.

Opóźnienie jest potrzebne, bo po wpisaniu odpowiedniego stanu do rejestru wyjściowego, ten stan fizycznie na porcie pojawi się z małym opóźnieniem.

Czyli od wpisania zera w tym miejscu
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

do faktycznego wystawienia stanu niskiego na pinie PA3 mija jeden takt zegara.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 lut 2016, o 17:52 
Offline
Użytkownik

Dołączył(a): 28 lis 2014
Posty: 79
Pomógł: 0

Niestety Panowie nic się nie zmieniło :( Dalej to samo :(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 lut 2016, o 20:46 
Offline
Użytkownik

Dołączył(a): 26 lip 2015
Posty: 269
Pomógł: 34

A spróbuj po każdej instrukcji if nawet jeśli jest jedna instrukcja dać nawiasy klamrowe. Jak mi się uda i będę miał czas to zrobię taką klawiaturkę(projekt już jest myślę, że jutro wytrawię) i podłącze i będę kombinował co jest nie tak.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 lut 2016, o 21:05 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

Czy nie działa Ci zawsze pierwszy wiersz dla każdej kolumny?
Czy jak dodasz mały delay (np. _delay_us(5);) pomiędzy każdym wystawieniem zera na kolumnie (PORTC &= ~(1<<PCx);) a sprawdzeniem stanu też masz ten sam problem?

Na jakich pinach masz podpięty wyświetlacz LCD?

--
Pozdrawiam,
Robert


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 lut 2016, o 21:32 
Offline
Użytkownik

Dołączył(a): 28 lis 2014
Posty: 79
Pomógł: 0

Zaczołem kombinować i oto efekty:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



No i wszystko działa :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 lut 2016, o 22:37 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
to czekanie wieczności :) Nawet jak masz jakieś duże pojemności na tej tych kolumnach, to wystarczy dać znacznie mniejszy czas. Czy jak dajesz tylko mikrosekundowe opóźnienia, to także miałeś problem (zamień w delay ms na us :))?
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


--
Pozdrawiam,
Robert



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Baidu [Spider] i 2 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO