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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 19 maja 2025, o 08:28


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 31 ]  Przejdź na stronę 1, 2  Następna strona
    Autor Wiadomość
    PostNapisane: 7 lut 2014, o 15:32 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sty 2013
    Posty: 106
    Pomógł: 0

    Witam wszystkich !
    Tak jak w temacie chodzi o często wspominany scalak WS2803.
    Z tego co przeczytałem w przyszłości planowany jest również poradnik odnośnie tych scalaków, jednakże chciałem spróbować swoich sił jeszcze przed premierą :lol:.

    Pierwsza rzecz to różnica pomiędzy notami scalaków WS2801 i WS2803:
    http://www.world-semi.com/en/Driver/Lig ... ip/WS2803/

    W nocie pierwszego mamy dużo więcej informacji i przykładów połączeń kilku diod pod jedno wyjście natomiast w przypadku 18 kanałowego WS2803 nie znalazłem pomocnych schematów, jak np. te poniżej:
    Obrazek


    Chciałbym was prosić o pomoc ze zrozumieniem kilku spraw odnośnie zasilania różnych diod, których prąd to 20 mA i 50 mA.

    Czy poniższy schemat jest poprawny ?


    Obrazek

    Zakładając spadek na każdej diodzie 2.5 V powyliczałem przykładowe wartości dla rezystorów.

    Chodzi mi głównie o zasilanie diod LED1- LED9, których prąd powinien być ustalony na 20mA przy zasilaniu 5V.

    Wyliczając to z noty scalaka:
    Iref= (Vrext/Rext)*22=(1.25/20mA)*22=~1250 Ohm.
    W tym wypadku na każdym wyjściu OUT 0-17 prąd płynący przez diodę powinien być ograniczony do 20mA.

    Czy w takim wypadku zasilając diody (LED14 i LED15) 12 Voltami potrzebuje rezystor R4 (330 OHM) w celu ich zabezpieczenia ?
    A możne dzięki podłączeniu rezystora R2 do pinu IREF można pominąć rezystor R4, oczywiście do pewnych napiec ?


    Dodatkowo zastanawia mnie fakt, iż maksymalny prąd na wyjściu to 5-30 mA, wiec przy zasilaniu kaskady diod o większym prądzie jak np diody LED10-LED13 zasilane zasilaniem np.12V potrzebować będą np. tranzystora NPN, a prąd z wyjścia (OUT17) ograniczony rezystorem R1 2.4K Ohm będzie załączał układ.
    Czy przy takim rozwiązaniu nie potrzeba tutaj żadnych dodatkowych modyfikacji tak jak w pierwszym dołączonym rysunku ?
    Napięcie na bazie to 5V a na kolektorze 12V-4*2,5V wiec 2 V. Chyba powinno wszystko grać ?

    A co jeśli miałbym tam tylko jedną diodę LED10 i napięcie na kolektorze byłoby znacznie większe aniżeli na bazie ? Czy musiałbym tam dodać w szereg z LED10 dodatkową diodę Zenera, aby odłożyć 4,5V i wyrównać do 5V ?

    Z góry przepraszam za błędy w schemacie i proste pytania. Wiem, że kombinuje jak tylko się da i pewnie są łatwiejsze i szybsze rozwiązania :mrgreen:

    A tak przy okazji, przez pewien czas szukałem bibliotek do Eagle, dla scalakow WS2801 WS2803 w obudowach DIP oraz magic RGB diodę smd. Niestety albo stety bibliotekę musiałem zrobić sam przy pomocy filmików Mirka, za które jeszcze raz dziękuje !
    Jak ktoś da znać jak mogą się nią podzielić na forum to bardzo chętnie załączę tutaj link dla przyszłych widzów poradnika o WS280##.
    Może akurat się komuś przyda :roll: .

    Dzięki !



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 7 lut 2014, o 15:49 
    Offline
    Moderator zasłużony dla forum.atnel.pl
    Avatar użytkownika

    Dołączył(a): 18 lip 2012
    Posty: 3228
    Lokalizacja: Kraków - obok FAB5 ATMEL'a
    Pomógł: 91

    Zawsze możesz podesłać mnie do kolekcji :lol: https://dl.dropboxusercontent.com/u/64842703/eagle/biblioteki.htm

    _________________
    http://www.jaglarz.info



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 7 lut 2014, o 20:59 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 27 maja 2013
    Posty: 562
    Lokalizacja: Bydgoszcz
    Pomógł: 23

    Ale Bajer!!!

    Jaglarz napisał(a):
    Zawsze możesz podesłać mnie do kolekcji :lol: http://www.jaglarz.com/ja/elektronika/eagle/biblioteki.php


    Jagi wow z nieba mi spadłeś z tą swoją kolekcja nie wiedziałem :)

    Czemu nikt mi nie powiedział że Jagi ma taka mega kolekcje, ktoś ma jeszcze coś takiego ukrytego?

    Biblioteką do drivera WS jestem również zainteresowany.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 9 lut 2014, o 12:03 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sty 2013
    Posty: 106
    Pomógł: 0

    Dobrze, podeślę Ci te biblioteki to je wstawisz...

    Panowie, może jakaś podpowiedź co do układu i użytego zasilania do sterowania diodami ?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 15 lut 2014, o 06:23 
    Offline
    Nowy
    Avatar użytkownika

    Dołączył(a): 27 lut 2012
    Posty: 19
    Lokalizacja: Czarnowo, wpj. Kijawsko Pomorskie
    Pomógł: 1

    Witam

    Cytuj:
    Wyliczając to z noty scalaka:
    Iref= (Vrext/Rext)*22=(1.25/20mA)*22=~1250 Ohm.
    W tym wypadku na każdym wyjściu OUT 0-17 prąd płynący przez diodę powinien być ograniczony do 20mA.

    Przy podanych w nocie parametrach prąd będzie ograniczany do 22mA (20mA przy obliczonej wartości Rext 1375Ohm )

    Cytuj:
    Czy w takim wypadku zasilając diody (LED14 i LED15) 12 Voltami potrzebuje rezystor R4 (330 OHM) w celu ich zabezpieczenia ?

    Dla VDS (patrz nota katalogowa) = 0.4V zgadza się

    Dodatkowo użyłbym tez rezystorów dla diod D1-D9 (w twoim przypadku masz przekroczone VDS na wyjściach do których są podłączone ww. LED) - wartość obliczona 95Ohm dla VDS 0.4V lub 75R dla VDS = 1V (czyli wybierz rezystor z szeregu pomiędzy tymi wartościami aby VDS znajdowało się w zalecanych przez producenta granicach)

    Cytuj:
    A możne dzięki podłączeniu rezystora R2 do pinu IREF można pominąć rezystor R4, oczywiście do pewnych napiec ?

    Jeżeli zapewnisz warunek :
    0.4V >=VDS <=1V
    VDS=(VLED-VF)-VDROP. To jest możliwe pozbycie się rezystora R4 dobierając odpowiednią liczbę LED w stringu. W twoim przypadku zakładając VF dla pojedynczego LED na poziomie 2.5V będzie ciężko spełnić ten warunek – przy 4xLED VDS = 2V co przekracza podany przez producenta zakres napięć (wbudowane klucze mogą się przegrzać co nieuchronnie doprowadzi do uszkodzenia danego wyjścia)

    Cytuj:
    Dodatkowo zastanawia mnie fakt, iż maksymalny prąd na wyjściu to 5-30 mA, wiec przy zasilaniu kaskady diod o większym prądzie jak np diody LED10-LED13 zasilane zasilaniem np.12V potrzebować będą np. tranzystora NPN, a prąd z wyjścia (OUT17) ograniczony rezystorem R1 2.4K Ohm będzie załączał układ.
    Czy przy takim rozwiązaniu nie potrzeba tutaj żadnych dodatkowych modyfikacji tak jak w pierwszym dołączonym rysunku ?
    Napięcie na bazie to 5V a na kolektorze 12V-4*2,5V wiec 2 V. Chyba powinno wszystko grać ?

    Możliwość zastosowania zewnętrznych kluczy może wiązać się z różnicami jakie występują pomiędzy WS2801 i WS2803 . Sprawdź dokładnie oba sposoby połączeń (constant current i constant voltage mode dla WS2801). Podane są tam dokładnie metody obliczenia rezystorów RB i RL. W WS2803 ten patent może się nie udać ale niestety nie miałem do czynienia z tymi układzikami i nie sprawdzałem tego.

    Cytuj:
    A co jeśli miałbym tam tylko jedną diodę LED10 i napięcie na kolektorze byłoby znacznie większe aniżeli na bazie ? Czy musiałbym tam dodać w szereg z LED10 dodatkową diodę Zenera, aby odłożyć 4,5V i wyrównać do 5V ?


    Dalej gdybając - zwiększenie wartości R3 zgodnie z zależnością R3 = (VLED – VF – VCE)/IF


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 lut 2014, o 21:42 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sty 2013
    Posty: 106
    Pomógł: 0

    metallmaniac dzieki za podpowiedzi !...
    Przez jakis czas mnie nie było, gdyż zajęty byłem wykonywaniem płytek próbnych do wspomnianych scalaków.
    Schematy i wykonanie poniżej:
    Obrazek

    Obrazek

    Zajęło mi to sporo czasu, ale jak na jedne z pierwszych płytek jestem zadowolony :)

    Pobawię się troszkę i zobaczę w praktyce jak nasz układzik poradzi sobie z wysterowaniem kilku diod w serii sterowanymi większym prądem...

    ------------------------ [ Dodano po: 2 minutach ]

    aaa..bym zapomniał co to biblioteki scalaka i magic LEDa sprawdzę czy obie są poprawne w praktyce a następnie podrzucę tu do nich link...układzik testowy do magic LEDa poniżej wg schematu w nocie katalogowej:

    Obrazek



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 lut 2014, o 11:52 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sty 2013
    Posty: 106
    Pomógł: 0

    powoli zaczynam zabawę z programowaniem scalaków WS280xx. Na samym początku przebrnąłem przez zasadę działania rejestrów i SPI, więcej informacji tutaj: http://forum.atnel.pl/topic4751.html

    Z noty katalogowej WS2803 widzę opis jakiegoś pinu MS, czy wie ktoś o co tutaj chodzi ?

    Obrazek

    Dodatkowo, wspomniano, że do LATCH'owania wszystkich wrzuconych bajtów na wyjście układu muszę ustawić sygnał LOW na pinie CKI, w przypadku sprzętowego SPI będzie to pin PB7 (SCK).

    Czy w przypadku sprzętowego SPI mogę w jakiś sposób utrzymać stan niski na PB7, aby po pewnym czasie ponownie uzyskać sygnał zegarowy ?

    Dla programowego SPI w tym wypadku wystarczy ustawienie 0 i np. delay'a, ale jeśli chodzi o przebiegi czasowe z noty katalogowej, nie mam pojęcia jaki czas powinien występować dla jednego taktu CLK.

    Obrazek

    W internecie znalazłem przykładową bibliotekę dla scalaka WS2801, gdzie autor ustawił CLK dla okresu 20 us.
    Czy ma ktoś z tym jakieś doświadczenie ?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 lut 2014, o 13:01 
    Offline
    Moderator
    Avatar użytkownika

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

    barszczz napisał(a):
    Dla programowego SPI w tym wypadku wystarczy ustawienie 0 i np. delay'a, ale jeśli chodzi o przebiegi czasowe z noty katalogowej, nie mam pojęcia jaki czas powinien występować dla jednego taktu CLK


    żadnych delayów, coś kolega kombinuje pod górę ;) i to na maxa

    przy programowym SPI zapomnij o delayach albo o jakichkolwiek czasach z noty że np MUSI być 20 ns. ;) W nocie masz podane MINIMALNE czasy i nawet się do nich nie zbliżysz programowym SPI. Za to przy komunikacji SPI możesz sobie te czasy wydłużać ile wlezie a i tak wszystko będzie działać ...

    Poczytaj jeszcze raz w Bluebooku o komunikacji SPI. To nie ma NIC WSPÓLNEGO z protokołem NZR w scalakach WS2811/WS2812 - gdzie trzeba drastycznie dbać o czasówkę.

    Przy SPI - to nawet sprzętowo nie dojdziesz do CLK 20 ns ;) Musiałbyś mieć procka taktowanego kwarcem 100 MHz i wtedy z dzielnikiem :2 osiągnąłbyś może 20 ns

    _________________
    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: 25 lut 2014, o 13:17 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sty 2013
    Posty: 106
    Pomógł: 0

    Tak rozumiem, że przy sprzętowym SPI czekamy na falge i wówczas procesor robi wszystko za nas (nie martwimy się o przebiegi czasowe).

    Jedyny problem jaki istnieje z braku mojego wcześniejszego doświadczenia to te nieszczęśliwe LATCH'owanie, gdzie musimy wymusić niski sygnał na SCK przez więcej niż 600 us (LATCH DELAY).

    Nie mam pojęcia jak to zrobić bo przecież na pinie PB7 tyka nam zegar no i jak w jakiejś funkcji ustawie PORTB &= ~(1<<PB7); _delay_us(610) a następnie ponownie inicjalizacje SPI to nie będzie to najciekawsze rozwiązanie :oops:
    Moze jakaś podpowiedz tutaj 8-) ?

    Co do programowego SPI to we wspomnianej bibliotece widziałem w użyciu SCK o okresie 20us a Latch Delay = 2000us.

    Z wcześniejszych postów pamiętam, że i odnośnie scalaków WS280xx planujesz jakieś poradniki, a czy uchylisz rąbka tajemnicy i powiesz na kiedy jest planowana jakaś premiera :) ?
    Pozdrawiam



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 lut 2014, o 13:34 
    Offline
    Moderator
    Avatar użytkownika

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

    Cytuj:
    Nie mam pojęcia jak to zrobić bo przecież na pinie PB7 tyka nam zegar no i jak w jakiejś funkcji ustawie PORTB &= ~(1<<PB7); _delay_us(610) a następnie ponownie inicjalizacje SPI to nie będzie to najciekawsze rozwiązanie
    Moze jakaś podpowiedz tutaj


    eeeeś ;) przecież już wyżej pisałeś że zaskoczyłeś jak to jest z tym LATCH'owaniem ;)

    DOPIERO PO WYSŁANIU CAŁOŚCI - raz machniesz stanem na wyjśiu LATCH i po zawodach - nie do końca rozumiem w czym tu masz jakby problem - zrozum mnie. Przecież ty nie masz laczować pomiędzy taktami zegara - a pomiędzy wysyłanymi bajtami czy tam paczkami bajtów itp więc nie wplataj w to CLK bo to KOMPLETNIE nie ma nic wspólnego.

    za pomocą MOSI i CLK pompujesz dane do rejestrów - ile wlezie, ile chcesz - a jak je wpompowałeś to odkręcasz kurek (LATCH) żeby woda mogła z kraników (bitów) wytrysnąć (diody się zaświecić)

    ----------------------------

    co do terminów poradników - oj przykro mi ale to strasznie trudno mi przewidzieć na dzień dzisiejszy, nie że nie chcę czy coś - tylko po prostu .... no krótko mówiąc gdyby moja praca polegała TYLKO na robieniu poradników i z tego mógłbym się utrzymywać to zapewniam cię że chyba codziennie przez co najmniej dwa lata mogłyby się ukazywać- tyle mam pomysłów sam na poradniki, a potem jeszcze przez 6 lat realizowałbym pomysły nadsyłane przez widzów ;)

    _________________
    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: 25 lut 2014, o 13:43 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sty 2013
    Posty: 106
    Pomógł: 0

    ...coś jakby żaróweczka mi się zapaliła, po powrocie do domu skrobnę podstawowy kod, który lata mi po głowie i wynik końcowy zamieszczę tutaj.

    mirekk36 napisał(a):
    co do terminów poradników - oj przykro mi ale to strasznie trudno mi przewidzieć na dzień dzisiejszy, nie że nie chcę czy coś - tylko po prostu .... no krótko mówiąc gdyby moja praca polegała TYLKO na robieniu poradników i z tego mógłbym się utrzymywać to zapewniam cię że chyba codziennie przez co najmniej dwa lata mogłyby się ukazywać- tyle mam pomysłów sam na poradniki, a potem jeszcze przez 6 lat realizowałbym pomysły nadsyłane przez widzów ;)


    Jakbym miał możliwość to chętnie dałbym Ci te 6 lat w prezencie a nawet 7 :) !



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 lut 2014, o 22:59 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sty 2013
    Posty: 106
    Pomógł: 0

    barszczz napisał(a):
    za pomocą MOSI i CLK pompujesz dane do rejestrów - ile wlezie, ile chcesz - a jak je wpompowałeś to odkręcasz kurek (LATCH) żeby woda mogła z kraników (bitów) wytrysnąć (diody się zaświecić)


    No nie wiem panowie, niby wtłaczam wszystkie dane do jednego scalaka WS2803, czyli 18 bajtów, na końcu próbowałem ustawić stan niski na CLK i nie działa tak jak powinno. Czasem się załącza czasem nie.

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



    No nie mam pojęcia jak ustawić te LATCHowanie po wysłaniu całego bufera.
    Sprawa wydaje się łatwa, ale próbowałem z delay z timerami, aby utrzymać stan niski na tym SCK i nic.

    Dane w buferze są - jest ich dokładnie 18 bajtów, gdzie każdy określa PWM pojedynczej diody. Następnie wysyłamy ją do SendBufer, który po kolei wysyła każdy bajt sprzętowo. No i ten nieszczęsny LATCH po wysłaniu wszystkich 18 bajtów. Siedzę główkuję i brak jakiegoś rezultatu :oops: Może jakieś podpowiedzi jak ten kurek odkręcić ? Jak to rozgryźć :mrgreen: ?

    W nocie pisze, że ma być stan niski na CLK powyżej 600us, eh... :roll:



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 lut 2014, o 10:09 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sty 2013
    Posty: 106
    Pomógł: 0

    Ledwo co się człowiek obudził i od razu dalsze bitwy z uruchomieniem WS2803 :ugeek:

    niestety poniższy kod także nie zadziałał:

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


    Próbowałem dla różnych wartości sygnały i nadal nic.

    Wczoraj wieczorem dostałem taśmę z magic LED, ale nie zacznę oglądać poradników dopóki nie ruszy mi ten scalaczek - taki mam plan :twisted:.

    Pomóżcie panowie bo konkretnie utknąłem :?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 lut 2014, o 10:11 
    Offline
    Moderator
    Avatar użytkownika

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

    używasz sprzętowego SPI ... i takie rzeczy robisz w kodzie ???

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


    :(

    ------------------------ [ Dodano po: 1 minucie ]

    to musisz jednak najpierw poczytać jeszcze raz o SPI, i poćwiczyć SPI na przykładzie jakiegoś ZWYKŁEGO rejestru przesuwnego np 74HC595 - zarówno w wersji sprzętowej jak i programowej z Bluebooka - żeby zaskoczyć o co chodzi

    _________________
    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: 27 lut 2014, o 10:13 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sty 2013
    Posty: 106
    Pomógł: 0

    próbowałem już wszystkiego bo zwykłe zarzucenie:

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


    po wysłaniu całej paczki 18 bajtów nic nie daje. Nie mam zielonego pojęcia jak do tego podejść.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 lut 2014, o 10:14 
    Offline
    Moderator
    Avatar użytkownika

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

    jeszcze raz pytam - jeśli używasz sprzętowego SPI ... .to powiedz mi co to za wynalazek z jakimś ręcznym sterowaniem pinem SCK ??? :(

    ------------------------ [ Dodano po: kilkunastu sekundach ]

    wygląda na to że działasz na razie mocno po omacku .... a jednak SPI trzeba zrozumieć

    zabierz się za czytanie o tym i ew dopytaj co sprawia ci kłopot - wtedy łatwiej będzie coś pomóc

    _________________
    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: 27 lut 2014, o 10:17 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sty 2013
    Posty: 106
    Pomógł: 0

    mirekk36 napisał(a):
    to musisz jednak najpierw poczytać jeszcze raz o SPI, i poćwiczyć SPI na przykładzie jakiegoś ZWYKŁEGO rejestru przesuwnego np 74HC595 - zarówno w wersji sprzętowej jak i programowej z Bluebooka - żeby zaskoczyć o co chodzi


    Zrobiłem przed podejściem do tych scalaków przykład z 3ma rejestrami przesuwnymi, ale tam nasz LATCH był na zupełnie innym pinie, wystarczyło zapuścić stan wysoki i niski (bo LATCH'owanie było przy narastającym zboczu) i wszystko pięknie śmigało. Tutaj nie rozumiem sposobu utrzymania tego niskiego sygnały na SCK ...

    ------------------------ [ Dodano po: 11 minutach ]

    mirekk36 napisał(a):
    jeszcze raz pytam - jeśli używasz sprzętowego SPI ... .to powiedz mi co to za wynalazek z jakimś ręcznym sterowaniem pinem SCK ???


    ok...tak po chwili zastanowienia, zamiast ingerować w sygnał SCK ręcznie i próbach wyzwalaniu niskiego sygnału na tym pinie po wysłaniu paczki powinienem ustawić odpowiedni preskaler w rejestrze SPCR tak aby okres zegara SCK wynosił np. T=2*610 us

    Czy już zaczynam dobrze kombinować ?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 lut 2014, o 10:32 
    Offline
    Moderator
    Avatar użytkownika

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

    barszczz napisał(a):
    Tutaj nie rozumiem sposobu utrzymania tego niskiego sygnały na SCK


    Tzn ale co tu rozumieć - nic nie trzeba robić - trzeba przestać przesyłać na MINIMUM 500 us i to wszystko a skoro minimum to może to trwać nawet jedną minutę

    po prostu wysyłasz wszystkie dane do rejestru lub ciągu rejestrów i przerwa (min 500us) potem znowu wysyłasz i przerwa ... nic tu nie trzeba LATCH'ować

    _________________
    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: 27 lut 2014, o 16:27 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sty 2013
    Posty: 106
    Pomógł: 0

    Sprawy poszły trochę naprzód 8-) Tym razem wziąłem się za programowe SPI - zrobiłem wszystko identycznie jak wcześniej, tyle że wszystkie stany ustawiane są 'ręcznie'.

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


    W tym przypadku wszystko działa i pierwszy efekt można zobaczyć tutaj:


    Jedyną poprawką była zmiana wielkości bufera 'lengthPlus' no i ustawianie wszystkich stanów z ręki.

    Po przeczytaniu działu z niebieskiej księgi nadal nie wiem jak przestać wysyłać sygnał na SCK po wysłaniu wszystkich bajtów przez sprzętowe SPI - wcześniej wspomniana przerwa (min 500us).
    Czuję się jak ułomne dziecko, ale tyle różnych podejść co już przetestowałem (a wiadomo tonący brzydko się chwyta więc i najróżniejsze głupie próby :oops: ) i nadal nic.
    Po prostu nie wiem jak zatrzymać zegar tykający na SCK PB7 po wysłaniu wszystkich bajtów. Niby rozumiem schemat, zasadę działania ale tego chyba nie ogarnę :roll:



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 lut 2014, o 16:36 
    Offline
    Moderator
    Avatar użytkownika

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

    barszczz napisał(a):
    Po przeczytaniu działu z niebieskiej księgi nadal nie wiem jak przestać wysyłać sygnał na SCK po wysłaniu wszystkich bajtów przez sprzętowe SPI - wcześniej wspomniana przerwa (min 500us).
    Czuję się jak ułomne dziecko, ale tyle różnych podejść co już przetestowałem (a wiadomo tonący brzydko się chwyta więc i najróżniejsze głupie próby ) i nadal nic.
    Po prostu nie wiem jak zatrzymać zegar tykający na SCK PB7 po wysłaniu wszystkich bajtów. Niby rozumiem schemat, zasadę działania ale tego chyba nie ogarnę


    ale zaraz zaraz - to niby z opisu SPI wynika dla ciebie że sygnał SCK cały czas sobie ..... pędzi jak motorek i nigdy go nie można zatrzymać ?

    _________________
    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: 27 lut 2014, o 16:40 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sty 2013
    Posty: 106
    Pomógł: 0

    mirekk36 napisał(a):
    ale zaraz zaraz - to niby z opisu SPI wynika dla ciebie że sygnał SCK cały czas sobie ..... pędzi jak motorek i nigdy go nie można zatrzymać ?


    Po inicjalizacji z tego co rozumiem to tak, ale ustawie SPI na disable za pomocą: SPCR &= ~(1<<SPE) to nasz motorek powinien stanąć na czerwonym :?: oczywiście do czasu kolejnej inicjalizacji. Pewnie znowu coś bredzę :?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 lut 2014, o 16:45 
    Offline
    Moderator
    Avatar użytkownika

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

    barszczz napisał(a):
    Pewnie znowu coś bredzę


    No nie użyłbym takiego słowa - ale na pewno opowiadasz kosmiczne fantasmagorie ;)

    Panie kolego ZROZUM - sygnał CLOCK jest potrzebny TYLKO i wyłącznie do "wysziftowania" bajtu. I pojawia się na linii SCK przebieg prostokątny TYLKO w momencie gdy wysuwany/odbierany jest bajt. Nie ma to NIC a NIC wspólnego z inicjalizacją SPI i wręcz niedorzecznością jest jakby wyłączanie SPI - rzekomo po to aby zatrzymać SCK ;) .... Najbardziej ciekawi mnie skąd wytrzasnąłeś pan taką iście ciekawą teorię ? ;)

    ------------------------ [ Dodano po: 1 minucie ]

    reasumując SCK w sprzętowym SPI działa TAK SAMO jak w twoim programowym SPI ;) .... zastanów się - banglujesz zboczami SCK tylko po to żeby wysłać bajt - zgadza się ? ....

    _________________
    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: 27 lut 2014, o 16:52 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sty 2013
    Posty: 106
    Pomógł: 0

    mirekk36 napisał(a):
    Najbardziej ciekawi mnie skąd wytrzasnąłeś pan taką iście ciekawą teorię ? ;)


    Jeśli trzeba jakiejś nowej fantasmagorii i nowych pokręconych teorii o AVRach to proszę śmiało się odzywać ;)
    Jakoś takie działanie SCK wydawało się być dla mnie dość logiczne :roll: no ale teraz znowu przeczytam wcześniejsze podpowiedzi, przelecę poradnik i może tym razem zaświeci się żarówka :idea:
    spać nie pójdę dopóty tego nie przełknę 8-)
    Dzięki wielkie za użeranie się z moimi fantasmagoriami ;)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 lut 2014, o 16:56 
    Offline
    Moderator
    Avatar użytkownika

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

    Spokojnie kto pyta nie błądzi...

    Skoro już wiesz że SCK w sprzętowym SPI zachowuje się tak samo jak w programowym SPI czyli sam się zatrzymuje ....

    to teraz możesz zajrzeć sobie jeszcze do noty PDF do rejestrów SPI i zobaczyć że można dowolnie zmieniać stan początkowy SCK czy ma być to 0 czy 1. Czy dane z MOSI mają być zatrzaskiwane zboczem narastającym czy opadającym itp itd ;)

    ale i tak domyślne ustawienia po resecie są w większości wypadków od razu odpowiednie do takich celów


    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: 28 lut 2014, o 08:32 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sty 2013
    Posty: 106
    Pomógł: 0

    Teraz już zapamiętam, że sprzętowe SCK wysuwa jedynie bity do wsunięcia a po zakończonej brudnej robocie ustawiane jest na stan wysoki bądź to niski. Niby, już wszystko przemaglowane, nic nie powinno mnie w sprzętowej obsłudze SPI zaskoczyć, lecz nadal program nie rusza.
    Analizując przebiegi scalaka WS2803 i SPI dla Atmega32A:
    Obrazek

    Na czerwono i zielono zaznaczyłem stan SCK przed jak i po wysłaniu paczki bitów. Wszystko powinno się zgadzać, po wysłaniu mamy stan niski, bity wsuwane są zboczem narastającym. Przebiegi są identyczne. Z tego tez wynika, że bity CPOL i CPHA powinny byc ustawione na 0 - tak jak to jest w ustawieniach rejestru SPCR automatycznie po resecie.

    Do programu podchodzę identycznie jak w przypadku programowego SPI:
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Przestudiowałem każdą linijkę kilka razy, zmieniałem ilości bajtów w buferach, zmieniałem długości delaya po wysłaniu buferu i nadal kicha ! :evil:
    Jestem jakimś ewenementem bo sprzętowe SPI powinno ułatwić mi obsługę a nie ... 8-)



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

    Dołączył(a): 17 sty 2013
    Posty: 106
    Pomógł: 0

    Sterownikow LED ciag dalszy 8-)

    Ostatnio znalazlem w internecie schemat podlaczania wspomnianego scalaka :
    Obrazek

    Zastosowano tutaj podciagniecie wyjsc sygnalow SDO i CKO do zasilania VCC poprzez rezystor 50 Ohm.

    Podczas moich prob nie uzywalem tych rezystorow, wiec chcialem sie was podpytac czy przy polaczeniu 3 sterownikow jest sens je tam dodawac ?

    Co daje takie podciagniecie ? Rozumiem, ze dzieki tym 50 Ohm wysoki poziom sygnalu jest "czytelniejszy" dla kolejnego sterownika ? Pewnie w przypadku dluzszych szeregow sterownikow LED takie podciaganie jest potrzebne, ale czy dla kilku daje to jakis efekt ?


    Dodatkowo w poprzednim kodzie uzywalem zmiennej WS2803_Latch_Delay, ustawione na 600 us -w notach producent wspominal ze sygnal niski o takiej dlugosci "zatrzaskuje" dane. Zmienialem te wartosci z 600 us do 1 us i nadal wszystko dzialalo, tylko czemu :ugeek: ?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 lip 2014, o 14:27 
    Offline
    Moderator
    Avatar użytkownika

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

    barszczz napisał(a):
    Ostatnio znalazlem w internecie schemat podlaczania wspomnianego scalaka


    Boże ;) kolego skąd ty znajdujesz takie dziwolągi (mówię o tych rezystorach 50R) ? ... uważasz że jest sens rozpatrywać wszystko co znajdziesz w internecie ? i to jeszcze bez podania źródeł ? .... pomyśl nad tym ;) Tym bardziej, że jak nie podajesz źródła to istnieje duża możliwość że sam popełniłeś błąd bo tam wcale nie było takich wartości rezystorów....

    barszczz napisał(a):
    Dodatkowo w poprzednim kodzie uzywalem zmiennej WS2803_Latch_Delay, ustawione na 600 us -w notach producent wspominal ze sygnal niski o takiej dlugosci "zatrzaskuje" dane. Zmienialem te wartosci z 600 us do 1 us i nadal wszystko dzialalo, tylko czemu


    czy dla ciebie nie jest zrozumiały parametr czas minimalny ? ... Panie kochany ;) możesz sobie czas 600us zmienić nawet na 1 godzinę i też ci zadziała i będziesz dziwił się dlaczego ? .... To chyba oczywiste że producent ci podaje że ten czas MUSI trwać MINIMUM 600 us a to że dasz więcej nawet godzinę albo i cały dzień - to już bez różnicy i tak się zresetuje ;) teraz jaśniej ?

    _________________
    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: 14 lip 2014, o 14:51 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sty 2013
    Posty: 106
    Pomógł: 0

    mirekk36 napisał(a):
    czy dla ciebie nie jest zrozumiały parametr czas minimalny ? ... Panie kochany możesz sobie czas 600us zmienić nawet na 1 godzinę i też ci zadziała i będziesz dziwił się dlaczego ? .... To chyba oczywiste że producent ci podaje że ten czas MUSI trwać MINIMUM 600 us a to że dasz więcej nawet godzinę albo i cały dzień - to już bez różnicy i tak się zresetuje teraz jaśniej ?


    Ale ja zmniejszylem czas z 600 us na 1 us i dalej chodzilo...skrocilem go o 600 razy a kilka ukladow polaczonych kaskadowo nadal szalalo jak poprzednio :) w tym sek



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 lip 2014, o 14:58 
    Offline
    Moderator
    Avatar użytkownika

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

    barszczz napisał(a):
    Ale ja zmniejszylem czas z 600 us na 1 us


    Dajesz sobie głowę obciąć że zmniejszyłeś ten czas do 1 us ? ;) ... oooj to uważaj bo możesz ją stracić ....

    1. sprawdzałeś ten czas na oscyloskopie ?
    2. obliczałeś ten czas na podstawie kodu wygenerowanego w asemblerze przez kompilator w C ?

    czy może wydaje ci się że jeśli napiszesz

    _delay_us( 600 );
    _delay_us( 1 );

    to wielka różnica jeśli np twój kod do obsługi transmisji SPI posiada spory narzut czasowy na końcu ... np 800us .... a wtedy twój delay może trwać nawet i w drugą stronę 0,5us i nadal będzie dobrze ;)

    ------------------------ [ Dodano po: 1 minucie ]

    przecież ty wyżej w kodzie bawisz się programowym SPI ;) ... więc tam pewnie tracisz KUPĘ czasu gdzie 600us to mały nieznaczący pikuś

    _________________
    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: 14 lip 2014, o 15:09 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sty 2013
    Posty: 106
    Pomógł: 0

    mirekk36 napisał(a):
    Boże kolego skąd ty znajdujesz takie dziwolągi (mówię o tych rezystorach 50R) ? ... uważasz że jest sens rozpatrywać wszystko co znajdziesz w internecie ? i to jeszcze bez podania źródeł ? .... pomyśl nad tym Tym bardziej, że jak nie podajesz źródła to istnieje duża możliwość że sam popełniłeś błąd bo tam wcale nie było takich wartości rezystorów....


    wlasnie znalazlem zrodlo: http://forum.arduino.cc/index.php?topic=140308.0

    Z tego co widze, to napisane jest ze te 50 Ohmowe rezystory mialy byc dolaczone do ostatniego scalaka w kaskadzie...

    Dzieki wielkie za wybicie mi tych dziwolagow, zawsze to uklad mniejszy :)

    ------------------------ [ Dodano po: 3 minutach ]

    mirekk36 napisał(a):
    Dajesz sobie głowę obciąć że zmniejszyłeś ten czas do 1 us ?

    no i wlasnie glowa poleciala :)
    Nie sadzilem ze przy programowym SPI tak mi sie wszystko rozlazi czasowo

    Cytuj:
    przecież ty wyżej w kodzie bawisz się programowym SPI


    Nie udalo mi sie ruszyc tego poprzez sprzetowy SPI, dostalem kilka prywatnych wiadomosci i inni mieli ten sam problem...ale lada dzien moze znowu przysiade i od nowa postaram sie przez to przebrnac....

    Jak uda mi sie dostac do oscyloskopu to sam z ciekawosci zobacze jakie czasy mi tam powylazily :)



    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: 31 ]  Przejdź na stronę 1, 2  Następna strona

    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