Witam.
Mam problem z połączeniem rejestrów 74HC595 w kaskadę. Niby robie tak jak opisano w książkach i jak podaje się na internecie ale nadal nie wychodzi. Może najpierw kod programu (kod zawiera sprzętową i programową obsługe SPI, korzystam ze sprzętowej) :
Poniżej schemat mojego połączenia (mam nadzieję że jest dość czytelny):
Połączenia G,RCK,SCK,SCLR w dolnym rejestrze są takie same jak w górny tzn. np. RCK dolnego rejestru do RCK górnego rejestru itp. Nie wrysowywałem tych połączeń żeby nie zaciemniać rysunku. Co jest tu istotne to połączenie Qh górnego rejestru z Serial Input (SI) dolnego rejestru. W ten sposób tworzy się kaskadę, tak? Czyli tak mogę uzyskać rejestr 16 bitowy, tak? Bo łącząc SI dolnego rejestru z SI górnego rejestru otrzymałbym dwa rejestry 8 bitowe szeregowe gdzie to instrukcje wysłane do górnego rejestru są identyczne dla dolnego rejestru, tak? Tak to rozumiem...
Do pinów wyjściowych rejestrów QA-QH podłączone sa diody.
Wgrywając do rejestrów wartość cnt=65535 powoduje że wszystkie diody się zapalają, jest ok, fajnie. 16 bitów zapalonych. Ale gdy w następnej instrukcji chce żeby zapaliła się 1 dioda z całego rejestru 16 bit to na dolny rejestrze zapala się ta jedna dioda, a górny w ogole nie gaśnie... cały czas na górnym rejestrze pali się 8 diód. Gdy resetuję mikrokontroler 8 diod z górnego rejestru gaśnie a pali się ta jedna z dolnego rejestru czyli tak jak być powinno dla cnt=1. Ale gdy w następnej turze wgram np wartosć cnt=4 to zapalają się odpowiednie diody dolnego rejestru no i cały górny rejestr i nie gaśnie aż do kolejnego resetu mikrokontrolera. Tak jakby górny rejestr zatrzaskiwał się na amen bez względu na sygnał zatrzaskiwania z mikrokontrolera.Mało tego... Nie pomaga nawet reset samego rejestru poprzez zwarcie pinu SCLR do masy(diody cały czas się palą). Co robię źle? Program jest raczej ok, myslę że to kwestia złego podłączenia...
Dokumentacja rejestrów jakich używam:
http://www.st.com/content/ccc/resource/techni...df/jcr:content/translations/en.CD00000339.pdf
Mam problem z połączeniem rejestrów 74HC595 w kaskadę. Niby robie tak jak opisano w książkach i jak podaje się na internecie ale nadal nie wychodzi. Może najpierw kod programu (kod zawiera sprzętową i programową obsługe SPI, korzystam ze sprzętowej) :
Kod: text
Poniżej schemat mojego połączenia (mam nadzieję że jest dość czytelny):
Połączenia G,RCK,SCK,SCLR w dolnym rejestrze są takie same jak w górny tzn. np. RCK dolnego rejestru do RCK górnego rejestru itp. Nie wrysowywałem tych połączeń żeby nie zaciemniać rysunku. Co jest tu istotne to połączenie Qh górnego rejestru z Serial Input (SI) dolnego rejestru. W ten sposób tworzy się kaskadę, tak? Czyli tak mogę uzyskać rejestr 16 bitowy, tak? Bo łącząc SI dolnego rejestru z SI górnego rejestru otrzymałbym dwa rejestry 8 bitowe szeregowe gdzie to instrukcje wysłane do górnego rejestru są identyczne dla dolnego rejestru, tak? Tak to rozumiem...
Do pinów wyjściowych rejestrów QA-QH podłączone sa diody.
Wgrywając do rejestrów wartość cnt=65535 powoduje że wszystkie diody się zapalają, jest ok, fajnie. 16 bitów zapalonych. Ale gdy w następnej instrukcji chce żeby zapaliła się 1 dioda z całego rejestru 16 bit to na dolny rejestrze zapala się ta jedna dioda, a górny w ogole nie gaśnie... cały czas na górnym rejestrze pali się 8 diód. Gdy resetuję mikrokontroler 8 diod z górnego rejestru gaśnie a pali się ta jedna z dolnego rejestru czyli tak jak być powinno dla cnt=1. Ale gdy w następnej turze wgram np wartosć cnt=4 to zapalają się odpowiednie diody dolnego rejestru no i cały górny rejestr i nie gaśnie aż do kolejnego resetu mikrokontrolera. Tak jakby górny rejestr zatrzaskiwał się na amen bez względu na sygnał zatrzaskiwania z mikrokontrolera.Mało tego... Nie pomaga nawet reset samego rejestru poprzez zwarcie pinu SCLR do masy(diody cały czas się palą). Co robię źle? Program jest raczej ok, myslę że to kwestia złego podłączenia...
Dokumentacja rejestrów jakich używam:
http://www.st.com/content/ccc/resource/techni...df/jcr:content/translations/en.CD00000339.pdf