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



Teraz jest 25 kwi 2024, o 11:33


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 25 ] 
Autor Wiadomość
PostNapisane: 18 lip 2022, o 17:12 
Offline
Użytkownik

Dołączył(a): 05 sie 2019
Posty: 92
Pomógł: 0

Witam,
chciałem stworzyć sobie matrycę na układach 74HC595.
Wiersze oraz kolumny mają mieć osobne, niezależne układy 74HC595.
Czy jest możliwość aby za pomocą jednego SPI ale dwóch różnych SS tym sterować?
MOSI i SCK pozostaje dla obu takie samo, natomiast inne jest SS.
Program który chciałem stworzyć poniżej:

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


Niestety jak wgrywam taki program, to na wyjściach z 74HC595 mam stan 0. Nie mam kontroli nad zmianami stanów.
Czy jest możliwe zrobić to tak jak sobie wymyśliłem czy za bardzo kombinuję i jest to nie do przeskoczenia?
Z góry dziękuję za wszelką pomoc.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lip 2022, o 21:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1021
Lokalizacja: Trójmiasto
Pomógł: 189

Johnnny94 napisał(a):
Czy jest możliwe zrobić to tak jak sobie wymyśliłem czy za bardzo kombinuję i jest to nie do przeskoczenia?
Tak, można to tak rozwiązać. Natomiast ciężko powiedzieć co robisz źle. Nawet nie podałeś jaki masz uC, nie wspominając już o jakimś schemacie połączeń, być może źle obsługujesz rejestry (nie wiadomo co i gdzie masz do rejestrów podpięte). Jedyny być może błąd jaki widzę to w kodzie w funkcjach wysyłających dane po SPI na koniec banglujesz jednym pinem, tylko że z makrodefinicji wynika że jeden jest na PD6, a drugi na PC5 natomiast w obu przypadkach operujesz na porcie D!? Natomiast bez schematu nie wiadomo czy to błąd, czy literówka w kodzie...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lip 2022, o 22:28 
Offline
Użytkownik

Dołączył(a): 05 sie 2019
Posty: 92
Pomógł: 0

To fakt, tam jest literówka.
Procesor to ATmega168. Schematu nie mam natomiast mogę powiedzieć jak to jest podłączone.
Do QA-QH mam podłączone tranzystory którymi mam sterować.
10 nóżka 74HC595 podłączona do 5V.
SCK z procesora do SCK 74HC595 (nóżka 11).
RCK (12 nóżka) 74HC595 podłączona do PC5 mikroprocesora, natomiast drugiego układu 74HC595 do PD6 mikroprocesora.
13 nóżka 74HC595 podłączona do GND.
Nóżki 8 i16 to zasilanie i zastosowany tam kondensator 100n.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lip 2022, o 23:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1960
Lokalizacja: Lipsko
Pomógł: 125

A mnie bardziej zastanawia jaki cel przyświeca takiemu sterowaniu? Dlaczego nie na wspólnych wszystkich liniach tylko rozdzielasz SS?

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lip 2022, o 22:17 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1021
Lokalizacja: Trójmiasto
Pomógł: 189

Sam kod wydaje się być ok (pomijając literówkę) ale w inicie SPI ustawiłbym jeszcze bit CPHA w rejestrze SPCR na "1"
Rejestr 74HC595 reaguje na opadające zbocze zegara, a przy domyślnych ustawieniach tego bitu jakie miałeś dla SPI powodują że w procku na zboczu opadającym ustawiane są dane do wysyłki, a sama wysyłka powinna być na zboczu narastającym czyli z punktu widzenia 74HC595 mogą być stany nieustalone więc może to jest problemem. Jeśli to nie pomoże, sprawdziłbym dokładnie połączenia elektryczne...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lip 2022, o 08:29 
Offline
Użytkownik

Dołączył(a): 25 lut 2022
Posty: 39
Pomógł: 6

Johnnny94 napisał(a):
jak wgrywam taki program, to na wyjściach z 74HC595 mam stan 0.

Obrazek
Johnnny94 napisał(a):
Czy jest możliwość aby za pomocą jednego SPI ale dwóch różnych SS tym sterować?

Można tylko po co? Połączenie kaskadowe 595 będzie prostsze i lepsze.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lip 2022, o 10:34 
Offline
Użytkownik

Dołączył(a): 05 sie 2019
Posty: 92
Pomógł: 0

Docelowo będzie to matryca 16x64 dlatego takie kombinowanie.
Dodałem do kodu CPHA w rejestrze SPCR na 1, kod poniżej:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


niestety nic to nie zmienia. Połączenia na płytce są tak jak powinny. Prototyp płytki wykonany na laminacie w firmie, która się tym zajmuje.
Do tej pory korzystałem z pinu SS i nie było problemów. Czy gdzieś jeszcze muszę zmienić adres pinu SS jak w moim przypadku "KOLUMNA" "WIERSZ"?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lip 2022, o 10:52 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1960
Lokalizacja: Lipsko
Pomógł: 125

Cytuj:
Docelowo będzie to matryca 16x64 dlatego takie kombinowanie.

Przecież to kompletnie nie ma znaczenia, aby utrudniać sobie robotę i komplikować program. W mojej ostatniej zabawce jest 9 rejestrów 595 w jednym sznurku i odpowoadają za wyświetlacz 7seg, sterowanie led (zwykłe wyjścia) jak i czytanie przycisków (wejścia), a żeby było śmieszniej wszystko jest pomieszane, bo tak mi było wygodniej płytkę projektować. Kluczem do łatwego zarządzania jest zdefiniowanie sobie wirtualnych rejestrów dla poszczególnych bloków wej/wyj, a cała wysyłka paczki sterującej odbywa się cyklicznie w pętli głównej przypisując lub uzupełniając (dla wej) wspomniane wirtualne rejestry.

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lip 2022, o 13:10 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27225
Lokalizacja: Szczecin
Pomógł: 1041

SylwekK napisał(a):
Przecież to kompletnie nie ma znaczenia,

ale się człowiek uparł i chce sobie robić pod górkę - no to co poczniesz panie ;) widać że żadnych argumentów nie słucha.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lip 2022, o 13:18 
Offline
Użytkownik

Dołączył(a): 05 sie 2019
Posty: 92
Pomógł: 0

Dokładnie, uparł się, ma taką płytkę i chce to ogarnąć. Projekty z jedną linią SS już robiłem i mi działają więc dlatego chce coś takiego zrobić.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lip 2022, o 13:24 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27225
Lokalizacja: Szczecin
Pomógł: 1041

no to zrób z wieloma liniami CS w czym problem - to się dokładnie tak samo steruje - kolejne linie CS

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lip 2022, o 09:26 
Offline
Użytkownik

Dołączył(a): 05 sie 2019
Posty: 92
Pomógł: 0

Właśnie próbuję zrobić z dwoma liniami CS. Problem w tym, że wgrywam program jak powyżej pisałem i nic mi nie działa. Czy jest coś na co jeszcze muszę zwrócić uwagę?
74HC595 mam podłączony w następujący sposób:
QA-QH - wyjścia na ledy
SCL (10 nóżka) - 5V
SCK (11 nóżka) - SCK procesora (PB5)
RCK(12 nóżka) - PD6,PC5 (PD6 dla WIERSZ, PC5 dla KOLUMNA)
G (13 nóżka) - GND
8 nóżka - GND
16 nóżka - 5V
przy zasilaniu zasilanie 74HC595 (8,16 nóżka) dodatkowo kondensator 100n.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lip 2022, o 12:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1021
Lokalizacja: Trójmiasto
Pomógł: 189

A co z liniami SER(14 noga) rejestrów? Wiszą w powietrzu czy jak?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lip 2022, o 12:40 
Offline
Użytkownik

Dołączył(a): 05 sie 2019
Posty: 92
Pomógł: 0

To fakt 14 nóżka jest podłączona do MOSI w procesorze.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lip 2022, o 15:29 
Offline
Użytkownik

Dołączył(a): 05 sie 2019
Posty: 92
Pomógł: 0

Podłączyłem oscyloskop i na linii SCK mam ciągle ok 3,3V tak samo jak na MOSI. Przy działającym SPI nie powinno tak być.
Czy jest możliwe, że przy tym programie który mam nie włącza się SPI?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lip 2022, o 15:40 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27225
Lokalizacja: Szczecin
Pomógł: 1041

przy tym z pierwszego posta? Pwnie że nie zadziała jeśli nigdzie nie ustawiasz pinu SS jako wyjście ze stanem wysokim


Autor postu otrzymał pochwałę

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lip 2022, o 15:57 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1021
Lokalizacja: Trójmiasto
Pomógł: 189

Johnnny94 napisał(a):
Czy jest możliwe, że przy tym programie który mam nie włącza się SPI?
Kilka postów wyżej kolega ord wrzucił pewna sugestię, próbowałeś iść tą drogą. W przetoczonym fragmencie noty jest napisane że przy trybie master gdy pin SS jest w procku ustawiony jako wejście, to wejście to musi być w stanie wysokim, inaczej moduł SPI będzie w trybie nasłuchu (sygnał niski na tym wejściu jest dla modułu informacją iż inny master próbuje coś nadawać). Jeśli tego pinu wogule nie konfigurujesz to po starcie domyślnie jest on pinem wejściowym w dodatku bez podciągnięcia więc jest wysoce prawdopodobne iż może tam panować stan który jest interpretowany jako "0" logiczne. Spróbuj włączyć programowe podciąganie tego pinu do vcc albo podłącz zewnętrzny rezystor 10k do vcc...


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lip 2022, o 16:31 
Offline
Użytkownik

Dołączył(a): 05 sie 2019
Posty: 92
Pomógł: 0

Działa, programowe podciągnięcie do VCC pomogło. Dzięki za pomoc :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lip 2022, o 11:49 
Offline
Użytkownik

Dołączył(a): 05 sie 2019
Posty: 92
Pomógł: 0

Mam następny problem z wyświetlaniem na mojej matrycy. Przy takim programie jak jest poniżej powstaje przesunięcie czasowe pomiędzy SendSpiRzad i SendSpiKolumna, dlatego powstaje mi "widmo" podczas wyświetlania.

Chcę dodatkowo regulować jasność wyświetlania dlatego wykorzystuje timer2 do sterowania PWM.

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


Czy jest możliwość aby zrobić to w taki sposób, żeby wyświetlenie za pomocą 74HC595 nie połączonych ze sobą odbyło się w tym samym czasie? Czy muszę kombinować w inny sposób?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lip 2022, o 15:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1960
Lokalizacja: Lipsko
Pomógł: 125

Może przesłać najpierw jeden string potem drugi i dopiero zatrzasnąć oba...

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lip 2022, o 20:22 
Offline
Użytkownik

Dołączył(a): 25 lut 2022
Posty: 39
Pomógł: 6

Na czas zmian na wyświetlaczach trzeba dezaktywować wyjścia wszystkich rejestrów sygnałem OE.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sie 2022, o 10:58 
Offline
Użytkownik

Dołączył(a): 05 sie 2019
Posty: 92
Pomógł: 0

Mogę prosić o podpowiedź jak w programie zrobić wysłanie pierwszego stringu, potem drugiego i je zatrzasnąć?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sie 2022, o 11:52 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1960
Lokalizacja: Lipsko
Pomógł: 125

Zmodyfikuj nieco procedirę wysyłania bitów ma string - przenieś fragment odpowiedzialny za zatrzask. Dokładnie nie powiem, bo korzystam ze swoich rozwiązań, a nie wiem z czego ty korzystasz.

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sie 2022, o 12:19 
Offline
Użytkownik

Dołączył(a): 05 sie 2019
Posty: 92
Pomógł: 0

Korzystam z tego co podawałem w kodzie powyżej. Kod pochodzi z dokumentacji procesora oraz bluebooka.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sie 2022, o 14:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1960
Lokalizacja: Lipsko
Pomógł: 125

To
PORTD |= (1<<ROWSTB);
PORTD &=~ (1<<ROWSTB);

Umieść za tym

PORTC |= (1<<KOLUMNA);
PORTC &=~ (1<<KOLUMNA);

Nie analizowałem całości, ale to chyba właśnie zatrzaski

_________________
http://www.sylwekkuna.com



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 9 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