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



Teraz jest 6 lut 2025, o 13:12


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 9 kwi 2014, o 20:07 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 09 kwi 2014
Posty: 5
Pomógł: 0

Witam, jest to mój pierwszy post na tym forum więc proszę o wyrozumiałość :)

Piszę bo mam taki problem, chcę zrobić mini moduł do sterowania matrycą led 8x8 oparty o ATmegę 8 i 2 rejestry przesówne 74HC595 obsługiwany pięcioma przyciskami,
rejestry oczywiście połączone są przez SPI posiadają tą samą linię Latch i 2 oddzielne linie Chip Select(X,Y)... (tak jak na schemacie)

Obrazek

I w tym miejscu pojawia się problem ponieważ chcę mieć dostęp do przycisków przez cały czas trwania programu, wiadomo - trzeba wykorzystać przerwania lecz ATmega ma dwa wejścia int0 a przycisków jest 5. Ponieważ wybrałem ATmegę8 (bo innej pod ręką nie mam) rozwiązałem to tak jak przedstawia to schemat:

Obrazek

Interesuje mnie ta część z diodami, czy to jest poprawne wyjście?
Czy schemat obsługi matrycy jest poprawny?
(Podciągnięcie jest tak zrobione po to aby nie dusić mikro klocka).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 kwi 2014, o 20:14 
Offline
Użytkownik
Avatar użytkownika

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

Przerwanie INT wywoływane pięcioma przyciskami topic5307.html#p62802


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 kwi 2014, o 20:44 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 09 kwi 2014
Posty: 5
Pomógł: 0

Dzięki, kod będzie w prawdzie minimalnie dłuższy ale przy okazji można zaoszczędzić parę elementów.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 kwi 2014, o 21:32 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 lut 2013
Posty: 223
Zbananowany użytkownik

Pomógł: 21

Kminek napisał(a):
Interesuje mnie ta część z diodami, czy to jest poprawne wyjście?
Jeżeli oprogramujesz to tak, że będzie działać, to tak ;)

Nie prościej jest to realizować jako "wątek" ? Odpalasz sobie podstawę czasu i wrzucasz kawałek kodu robiący przebieg co np. 1ms (debounce prosto jest zrobić - 5 przebiegów stan niski i wiadomo, że wciśnięto przycisk) obsługujący te przyciski - nie potrzebujesz żadnych dodatkowych elementów.
A jeżeli piszesz nieblokująco to to, czy umieścisz ten kod w przerwaniu lub pętli głównej, użyjesz bufora FIFO, itp. to już zależy tylko od twojego stylu, skilla i wizji artystycznej ;)

_________________
Nie pisz komentarzy - dobry kod komentuje się sam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 kwi 2014, o 22:59 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 09 kwi 2014
Posty: 5
Pomógł: 0

Zauważ, że steruję matrycą i puste przebiegi sprawdzania stanu przycisku są tu zbędne. Co więcej i tak musiał bym użyć timera który jest mi potrzebny do czego innego (oprócz scrollowania tekstu chcę napisać jakąś prostą grę). Twój sposób fajnie "wygładził" by proces zczytywania stanu przycisku i debouncingu.
Musiał bym to sprawdzić w praktyce. Narazie matura i te sprawy nie pozwalają mi usiąść do pisania kodu :) Części będę miał do następnego piątku, zobaczymy co z tego wyjdzie.

Wysłane z mojego HTC EVO 3D X515m przy użyciu Tapatalka



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: 5 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO