ATNEL tech-forum
https://forum.atnel.pl/

12 bajtów do przesłania - jak to ogarnąć
https://forum.atnel.pl/topic19750.html
Strona 1 z 1

Autor:  guest1 [ 5 gru 2017, o 22:04 ]
Tytuł:  12 bajtów do przesłania - jak to ogarnąć

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.

Autor:  Daro69 [ 6 gru 2017, o 07:59 ]
Tytuł:  Re: 12 bajtów do przesłania - jak to ogarnąć

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

Autor:  guest1 [ 6 gru 2017, o 19:14 ]
Tytuł:  Re: 12 bajtów do przesłania - jak to ogarnąć

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?

Autor:  Daro69 [ 6 gru 2017, o 21:34 ]
Tytuł:  Re: 12 bajtów do przesłania - jak to ogarnąć

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. :)

Autor:  guest1 [ 6 gru 2017, o 22:08 ]
Tytuł:  Re: 12 bajtów do przesłania - jak to ogarnąć

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?

Autor:  DarkMajster [ 14 gru 2017, o 20:24 ]
Tytuł:  Re: 12 bajtów do przesłania - jak to ogarnąć

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.

Autor:  guest1 [ 14 gru 2017, o 21:03 ]
Tytuł:  Re: 12 bajtów do przesłania - jak to ogarnąć

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?

Autor:  BitRider [ 14 gru 2017, o 21:55 ]
Tytuł:  Re: 12 bajtów do przesłania - jak to ogarnąć

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

Autor:  DarkMajster [ 14 gru 2017, o 22:40 ]
Tytuł:  Re: 12 bajtów do przesłania - jak to ogarnąć

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

Autor:  guest1 [ 14 gru 2017, o 22:44 ]
Tytuł:  Re: 12 bajtów do przesłania - jak to ogarnąć

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.

Autor:  DarkMajster [ 14 gru 2017, o 22:50 ]
Tytuł:  Re: 12 bajtów do przesłania - jak to ogarnąć

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:  guest1 [ 14 gru 2017, o 22:52 ]
Tytuł:  Re: 12 bajtów do przesłania - jak to ogarnąć

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

Autor:  DarkMajster [ 14 gru 2017, o 22:54 ]
Tytuł:  Re: 12 bajtów do przesłania - jak to ogarnąć

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.

Autor:  BitRider [ 14 gru 2017, o 22:58 ]
Tytuł:  Re: 12 bajtów do przesłania - jak to ogarnąć

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

Autor:  guest1 [ 14 gru 2017, o 22:59 ]
Tytuł:  Re: 12 bajtów do przesłania - jak to ogarnąć

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 :)

Autor:  DarkMajster [ 14 gru 2017, o 23:25 ]
Tytuł:  Re: 12 bajtów do przesłania - jak to ogarnąć

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

Autor:  guest1 [ 15 gru 2017, o 20:36 ]
Tytuł:  Re: 12 bajtów do przesłania - jak to ogarnąć

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

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/