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



Teraz jest 28 mar 2024, o 16:36


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 17 ] 
Autor Wiadomość
PostNapisane: 5 gru 2017, o 22:04 
Offline
Użytkownik

Dołączył(a): 16 lis 2013
Posty: 144
Zbananowany użytkownik

Pomógł: 0

Potrzebuję podłączyć do mikrokontrolera 5x 8 segmentów wyświetlaczy (płytka już gotowa), 49 przekaźników. Miałbym prośbę, żeby ktoś podpowiedział mi w jaki sposób ogarnąć to sprzętowo.
Myślałem żeby zrobić to na 74HC595, ale niby można połączyć maksymalnie 8 sztuk, a mi wychodzi 12. Czytałem coś o zastosowaniu expanderów, które też mają ograniczoną ilość przy łączeniu szeregowym. Może rozdzielić to na dwie grupy i rejestry wyświetlaczy zrobić na I2C (odświeżanie jakie mnie interesuje to 50Hz), a rejestry od przekaźników przez SPI (im szybciej/ dokładniej tym lepiej). A może do rejestrów przekaźników dać osobny AVR i połączyć go z głównym przez np. RS232 - z tym że główny mikrokontroler będzie wykorzystywał osobny przesył danych przez RS485.
Nie wiem jak to rozwiązać, więc prosiłbym o nakierowanie, żebym mógł doczytać i ruszyć dalej z projektem.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 gru 2017, o 07:59 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

kRetman4 napisał(a):
....
Myślałem żeby zrobić to na 74HC595, ale niby można połączyć maksymalnie 8 sztuk, a...


Witam,
Zastanawiam się dlaczego nie można wysłać kilka bajtów a po nich dopiero zatrzasnąć rejestry.
W jednym bajcie bity odpowiadały by za część przekaźników a w kolejnych za następne.
hmmm. ?

Wysłane z mojego Lenovo K33a42 przy użyciu Tapatalka



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 gru 2017, o 19:14 
Offline
Użytkownik

Dołączył(a): 16 lis 2013
Posty: 144
Zbananowany użytkownik

Pomógł: 0

Jeśli dobrze rozumiem pytanie, to chyba odpowiedziałem na nie pytając ;) Przejrzałem datasheet od 74HC595 ale nie znalazłem tam nic, że można szeregowo maksymalnie 8 połączyć. Jeśli można złączyć 12 sztuk to byłoby to dla mnie chyba najprostsze rozwiązanie.

Chodzi o to żeby wysłać np 5 bajtów dla wyświetlaczy, zatrzasnąć rejestry i wysłać bajty 6-12 dla przekaźników i znów zatrzasnąć? Dobrze rozumiem?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 gru 2017, o 21:34 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

To teraz jeżeli dobrze rozumiem ja... :)
to chyba najpierw wysłać to co najdalej ma zostać w rejestrach,
czyli bity od ostatniego w ostatnim bajcie, :) (jeżeli ostatnie są przekaźniki, to wysłać od 12 -> 6, potem od 5 -> 1, i teraz jeżeli wszystko jest już na swoim miejscu - zatrzasnąć. 12 rejestrów. )
Należy pamiętać że bity są 'wsuwane' do rejestrów od ostatniego zaczynając.
Pierwszy podany bit będzie 'przepchnięty' przez kolejne na koniec. :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 gru 2017, o 22:08 
Offline
Użytkownik

Dołączył(a): 16 lis 2013
Posty: 144
Zbananowany użytkownik

Pomógł: 0

Faktycznie! Kompletnie zapomniałem o takiej podstawowej kwestii. Czyli muszę wszystkie rejestry podłączyć 'od końca', żeby wyświetlacze zapalały się od początku :D a przekaźniki będą się załączać jako pierwsze. Rozumiem, że linie SCK i SS łączę równolegle do wszystkich rejestrów?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 gru 2017, o 20:24 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 lip 2017
Posty: 140
Pomógł: 6

Cytuj:
Rozumiem, że linie SCK i SS łączę równolegle do wszystkich rejestrów?


Zgadza się.

Cytuj:
Czyli muszę wszystkie rejestry podłączyć 'od końca', żeby wyświetlacze zapalały się od początku

Chodzi Ci o czas, czy o kolejność wsuwania? Bo nie do końca Cię rozumiem.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 gru 2017, o 21:03 
Offline
Użytkownik

Dołączył(a): 16 lis 2013
Posty: 144
Zbananowany użytkownik

Pomógł: 0

O kolejność. Na początku wyświetlacze przez rejestry miałem podłączone do mikrokontrolera (na schemacie) jako pierwsze, czyli jeśli dobrze zrozumiałem zapalałyby się od końca do początku,tzn od prawej do lewej.
Czy jest możliwość, żeby programowo ustawić dwie częstotliwości odświeżania na jednej lini SPI? Może nie dosłownie, ale np żeby przy 200Hz dla przekaźników sygnał dla wyświetlaczy był podawany co 4 raz, czyli 50Hz. Jest to możliwe?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 gru 2017, o 21:55 
Offline
Użytkownik

Dołączył(a): 03 gru 2014
Posty: 32
Pomógł: 3

Wpisz w AVPlayera 74H595 i obejrzyj film w którym Mirek ładnie tłumaczy rejestry przesuwne bo widzę że coś Ci się tu nie składa. Za każdym razem przesyłasz 12 bajtów i dopiero zatrzaskujesz.

Wysłane z mojego SM-G900F przy użyciu Tapatalka



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 gru 2017, o 22:40 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 lip 2017
Posty: 140
Pomógł: 6

Najpierw wsuwasz 12 bajtów "wewnątrz scalaków", tak że to nie ma wpływu na stany na nóżkach, a potem jednym zboczem, w tym samym momencie, to co rejestr miał w środku wyrzucasz na jego piny. Sprzętowe SPI pozwala na prędkość SCK do połowę kwarca, więc 200Hz i 12 bajtów to żodyn problem.

Poradnik Mirka:
https://www.youtube.com/watch?v=G9Ygmu7LBu4



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 gru 2017, o 22:44 
Offline
Użytkownik

Dołączył(a): 16 lis 2013
Posty: 144
Zbananowany użytkownik

Pomógł: 0

O zatrzaskiwaniu to wspomniał Daro69, ja coś kojarzyłem z tego poradnika, że po wysłaniu całości się zatrzaskuje.
Chodzi mi o podzielenie programowe, żeby na jednej linii SPI było 200Hz dla przekaźników i 50Hz dla wyświetlaczy.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 gru 2017, o 22:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 lip 2017
Posty: 140
Pomógł: 6

Oczywiście, że można, możesz odpalić przerwanie, dzięki któremu co 200 Hz będziesz wsuwał swoje 12 bajtów, po prostu bajty które mają być 50Hercowymi zmieniaj co 4 przerwanie, tak czy tak musisz wsuwać wszystkie 12 bajtów, nawet jeśli chcesz zmienić 1 bit, ale właśnie dzięki zatrzaskowi, podczas wsuwania nic się stać nie może.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 gru 2017, o 22:52 
Offline
Użytkownik

Dołączył(a): 16 lis 2013
Posty: 144
Zbananowany użytkownik

Pomógł: 0

No rozumiem o co chodzi. Po prostu 3 na 4 razy wsuwam 'zera' :)
Dzięki!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 gru 2017, o 22:54 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 lip 2017
Posty: 140
Pomógł: 6

Czemu zera? Poprostu 3 razy wsuwasz to samo, a za 4 zmieniasz :)

Swoją drogą, jeżeli używasz wyświetlaczy to jaki problem je odświeżać 200Hz? No bo skoro i tak przez te 4 wsunięcia będzie to samo, to w niczym nie przeszkadza, a dzięki zatrzaskowi twoje wyświetlacze będą miały gdzieś co tam się w środku scalaków dzieje, bo je interesują tylko stany jakie dostaną na swoje nóżki.



Ostatnio edytowano 14 gru 2017, o 23:00 przez DarkMajster, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 gru 2017, o 22:58 
Offline
Użytkownik

Dołączył(a): 03 gru 2014
Posty: 32
Pomógł: 3

Obejrzyj jeszcze raz na spokojnie poradnik Mirka.
Nie bardzo rozumiem po co Ci jakiś podział częstotliwości.
Jeżeli chcesz zmienić stan jakiegoś przekaźnika lub coś wyświetlić to zmieniasz bity w danym bajcie i wszystkie wysyłasz. Jak już wszystkie będą wysłane tzn. będą w pamięci rejestrów to wystawiasz je na piny rejestrów poprzez zatrzasniecie. Od strony odbiorników tzn. przekaźników lub wyświetlaczy to zatrzasniecie będzie nie widoczne jeżeli stan danego bitu nie uległ zmianie.

Wysłane z mojego SM-G900F przy użyciu Tapatalka



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 gru 2017, o 22:59 
Offline
Użytkownik

Dołączył(a): 16 lis 2013
Posty: 144
Zbananowany użytkownik

Pomógł: 0

O to samo mi chodziło tylko inaczej napisałem :D

Przekaźniki teoretycznie 200Hz (im 'szybciej' tym lepiej), a wyświetlacze 50Hz dlatego, że chcę uzyskać to charakterystyczne migotanie :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 gru 2017, o 23:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 lip 2017
Posty: 140
Pomógł: 6

Jak zamierzasz podłączyć wyświetlacze, masz schemat? Chciałbym rzucić okiem.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 gru 2017, o 20:36 
Offline
Użytkownik

Dołączył(a): 16 lis 2013
Posty: 144
Zbananowany użytkownik

Pomógł: 0

Schemat w skrócie:

Obrazek

Jednak wyjdzie 10 rejestrów do przekaźników i 5 do wyświetlaczy.
Linie multipleksu są także wykorzystywane do klawiatury matrycowej



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


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