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 7 kwi 2025, o 07:26


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 18 ] 
    Autor Wiadomość
    PostNapisane: 16 sty 2015, o 10:46 
    Offline
    Nowy

    Dołączył(a): 15 sty 2015
    Posty: 10
    Pomógł: 0

    Witam. Proszę o pomoc w zakresie sterowania układem PCA9685. Potrzebuję fragment kodu w Bascomie, który umożliwi sterowanie tym scalakiem. Wykorzystuję do tego ATmegę32 i po I2C jest podłączony z PCA9685.
    Z góry dziękuję za pomoc.

    Dim D(10) As Word
    Dim H(10) As Byte
    Dim L(10) As Byte

    Const I2crd = 225
    Const I2cwr = 224

    Zi2c(4) = 224
    Oi2c(4) = 225

    D(1) = 2000
    D(2) = 3000

    L(1) = Low(d(1))
    H(1) = High(d(1))

    L(2) = Low(d(2))
    H(2) = High(d(2))

    I2cstart
    I2cwbyte Zi2c(4)
    I2cwbyte H(1)
    I2cwbyte L(1)

    I2cwbyte H(2)
    I2cwbyte L(2)

    I2cwbyte 11111010

    I2cstop



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 16 sty 2015, o 21:08 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 27 gru 2011
    Posty: 186
    Lokalizacja: Dublin
    Pomógł: 8

    PDF-a masz ??
    Tam jest wszytko idealnie banalnie rozpisane wystarczy skopiować jak małpa.
    Jak pisałem suba dla PCA9551 nie było tam takiej "idiot proof" tabelki.

    Tu masz wersie dla PCA9551 jako suby i funkcje:

    Tu jest wybór leda i trybu pracy:
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język basic4gl
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Tu jest ustawienie jednego z dwóch PWM-ów
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język basic4gl
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Tu funkcja odczytu aktualnej wartości wypełnienia:
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język basic4gl
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



    Tu funkcja odczytu częstotliwości:
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język basic4gl
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.




    Dla PCA9685 Jest sporo pisania, żeby to miało ręce i nogi trzeba napisać stałe z tego co widzę az 63 stałe i najlepiej nazwać je jak w pdf-e.
    Później trzeba zrobić select case dla wszystkich 63 możliwości plus dodatkowe funkcje odczytu kolejnych rejestrów.

    Jeśli nie masz scalaka najpierw go kup a potem pisz bo inaczej szkoda czasu na pisanie.
    Polecam zainwestować w oryginalną płytę testowa NXP z tym scalakiem na pokładzie będzie Ci łatwiej.



    Ostatnio edytowano 17 sty 2015, o 23:29 przez pikczu, łącznie edytowano 2 razy

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 16 sty 2015, o 21:56 
    Offline
    Nowy

    Dołączył(a): 15 sty 2015
    Posty: 10
    Pomógł: 0

    Dziękuję za odpowiedź.
    PDF-a posiadam
    https://www.adafruit.com/datasheets/PCA9685.pdf
    Tak jak pisałem potrzebuję sterować układem PCA9685, ATmegą po I2C część kodu:

    'Adres
    Zi2c(4) = 224
    Oi2c(4) = 225

    'Zmienne dane
    D(1) = 2000
    D(2) = 3000

    'Podział liczby na 2 * po byte czyli 00000000 00000000
    L(1) = Low(d(1))
    H(1) = High(d(1))


    L(2) = Low(d(2))
    H(2) = High(d(2))

    I2cstart
    I2cwbyte Zi2c(4) 'Adres


    'LED0_ON_L read/write LED0 output and brightness control byte 0

    I2cwbyte 00000110

    ' LED0_ON_H read/write LED0 output and brightness control byte 1

    I2cwbyte 00000111


    'Wartość podzielona 1
    I2cwbyte H(1)
    I2cwbyte L(1)

    'Wartość podzielona 2
    I2cwbyte H(2)
    I2cwbyte L(2)

    I2cstop

    Proszę o poprawienie tego kodu, dziękuję.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 16 sty 2015, o 22:03 
    Offline
    Moderator zasłużony dla forum.atnel.pl
    Avatar użytkownika

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

    topic7402.html

    _________________
    http://www.jaglarz.info



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 16 sty 2015, o 22:12 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 27 gru 2011
    Posty: 186
    Lokalizacja: Dublin
    Pomógł: 8

    :lol: Sorry ale nie będę poprawiał twojego "kodu".
    Żeby go "poprawić" trzeba dopisać z 300 linijek i mieć ten układ na stole.
    Zobacz jak ja napisałem dla PCA9551 który ma tylko 8 ledów i dwa PWM-y a nie 16 ledów i tyle samo PWM kanałów.
    Powalcz sam a jak już coś konkretnego napiszesz to Ci pomogę.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 16 sty 2015, o 22:20 
    Offline
    Nowy

    Dołączył(a): 15 sty 2015
    Posty: 10
    Pomógł: 0

    Dziękuję.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 sty 2015, o 09:54 
    Offline
    Nowy

    Dołączył(a): 15 sty 2015
    Posty: 10
    Pomógł: 0

    Kontynuując temat

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



    Idzie sterować poszczególnymi diodami LED. Nie jest to jeszcze rozwiązana sprawa i stąd moje pytanie:

    Na wykresie przebiegu sygnału co oznacza "A" i jaką wartość powinien mieć ?

    Dziękuję.


    Obrazek



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 sty 2015, o 10:17 
    Offline
    Nowy

    Dołączył(a): 15 sty 2015
    Posty: 10
    Pomógł: 0

    ACK lub NACK to parametry stosowane przy odczycie. A mi chodzi o zapis ustawień do układu PCA 9685. Tak naprawdę jak powinna prawidłowo wyglądać składnie w Bascomie do np. zapalenia diody LED 5.

    Ja to tak zrobiłem (jest to fragment kodu):

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


    Kod działa, jednak nie jestem przekonany, że to dobrze robię. Ponieważ nie mogę w ten sposób zapalić ostatniej diody LED (16).

    Dziękuję za pomoc.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 sty 2015, o 16:14 
    Offline
    Nowy

    Dołączył(a): 15 sty 2015
    Posty: 10
    Pomógł: 0

    Witam ponownie i dziękuję za wskazówki, proszę o weryfikację kodu.

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



    Tak zapisany kod pozwala zapalać diodę nr 1, kolejne włączanie przycisku powoduje rozjaśnianie diody1 ponieważ zmienia się wartość zmiennej D(1).
    Z pewnością jest błąd i proszę o poprawienie jego.
    Blok 1 i 2 to przypadek i bez niego nie działa, natomiast blok 3 to jest czytelny i wydaje się być poprawny.

    Dziękuję za pomoc, pozdrawiam.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 sty 2015, o 20:28 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 27 gru 2011
    Posty: 186
    Lokalizacja: Dublin
    Pomógł: 8

    Witam proponuej przepisać stałe jednak z wartoscami bitowymi a nie dziesiętnymi kod zaraz sie rozrośnie a to od poczatku jets bardzo słabo czytelne.
    Co by nie mówic jednak jestesmy zwrokowcami :lol: szybciej mozna to porównac z PDf-em.
    Zaraz romantv pogubisz sie w tym a tym bardziej my.
    Tak że kolejnt raz zwracam uwagę na czytelność.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 sty 2015, o 21:16 
    Offline
    Nowy

    Dołączył(a): 15 sty 2015
    Posty: 10
    Pomógł: 0

    Oczywiście mogę to poprawić i to uczynię. Kod, który pisałem miał mi służyć tylko do przetestowania i opracowania składni. Program miałem dopiero pisać i stąd te problemy. Już wiem, że powinienem jasno i czytelnie pisać i dopasowywać się do PDF-a. Bardzo dziękuję za każdą radę, jutro zabieram się za kolejne testy.

    Jeszcze raz dziękuję Wam za pomoc.


    PS

    Obrazek

    Rozumiem, że w tabeli "A" jest to parametr ACK, lub Nack-ostatni parametr do odczytu.
    Mogę go pominąć w składni?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 sty 2015, o 21:46 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 27 gru 2011
    Posty: 186
    Lokalizacja: Dublin
    Pomógł: 8

    ACK i NACK dodajesz przy odczycie jak obierasz tylko jeden bajt to dajesz NACK bo już kończysz czyli NOT ACKNOWLEDGE ale jak odbierasz więcej niż jeden musisz dać przy każdym NIE ostatnim odczycie ACK



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 sty 2015, o 21:53 
    Offline
    Nowy

    Dołączył(a): 15 sty 2015
    Posty: 10
    Pomógł: 0

    Jak się przyglądam czytam posty to staje się to coraz prostsze. Oczywiście procedury będą bo muszę one być i wykorzystam do tego wyświetlacz graficzny 240x128.

    Pozdrawiam.

    PS. Nigdy mnie nie interesowały gotowe programy innych autorów, jedynie zawsze korzystam z porad czy podpowiedzi :). Kiedy nie znam odpowiedzi czy mam problem ze zrozumieniem dokumentacji. Projekt, który robię jest oparty wyłącznie o mój pomysł i schemat.

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

    pikczu napisał(a):
    ACK i NACK dodajesz przy odczycie jak obierasz tylko jeden bajt to dajesz NACK bo już kończysz czyli NOT ACKNOWLEDGE ale jak odbierasz więcej niż jeden musisz dać przy każdym NIE ostatnim odczycie ACK


    To wiem tylko zastanawiałem się nad "A". dziękuję.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 sty 2015, o 22:03 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 27 gru 2011
    Posty: 186
    Lokalizacja: Dublin
    Pomógł: 8

    Bartek masz oczywiście racje ale jak na razie to większość w tym dziale troli bo jak już coś naskrobią to zmienia to rangę na tajne łamane przez poufne.

    Na tego PCA9551 pisałem wieczorami po pracy i chyba zajęło mi to 5 wieczorów plus chyba ze 2 godziny w weekend włosy z głowy rwałem bo nie mogłem nic odczytać a mogłem ustawiać.
    Okazało się że nie doczytałem w PDFie że jest tam "repeat start" a ja dawałem ponownie I2Cstart.

    Dodam tylko ze suby które dodałem nie działają z biblioteka $LIB "I2CV2.LIB" sprawdzone w wersji 2.0.7.7

    to A to skrót od Acknowledge



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 sty 2015, o 22:24 
    Offline
    Nowy

    Dołączył(a): 15 sty 2015
    Posty: 10
    Pomógł: 0

    Tak masz rację, jednak na forach coraz częściej spotykam się z brakiem wyrozumiałości a nawet chamstwem i docinkami. Nie były one skierowane pod moim adresem ale czytając posty widzę co inni piszą. Jeszcze raz dziękuję i jutro zapieram się do testów.
    Pozdrawiam.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 sty 2015, o 23:18 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 27 gru 2011
    Posty: 186
    Lokalizacja: Dublin
    Pomógł: 8

    Romantv bez scalaka na stole nasza pomoc mocno sie zaweza zrob cos na podobienstwo tych subow jak do 9551 do odczytu uzyj funkcji.
    Ja ide spac dobranoc



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 sty 2015, o 16:13 
    Offline
    Nowy

    Dołączył(a): 15 sty 2015
    Posty: 10
    Pomógł: 0

    Witam ponownie.

    Przesyłam kod poprawnie pracujący, który umożliwia sterowanie układem PCA 9685

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



    Pozdrawiam i wszystkim dziękuję za pomoc.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 sty 2015, o 21:05 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 27 gru 2011
    Posty: 186
    Lokalizacja: Dublin
    Pomógł: 8

    Bartek spadłem z krzesła http://youtu.be/UKv9Up_4v-E?t=16m15s jak usłyszałem o feministce :lol:



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

    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