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? 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 8 paź 2025, o 23:32


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 41 ]  Przejdź na stronę 1, 2  Następna strona
    Autor Wiadomość
    PostNapisane: 10 sty 2020, o 11:57 
    Offline
    Użytkownik

    Dołączył(a): 14 kwi 2018
    Posty: 35
    Pomógł: 0

    Witam,

    mam pewien problem z biblioteką MK_I2C, przy próbie uruchomienia jej w trybie Master dla ATtiny4313 dla wartości 100kHz przy taktowaniu 14745600 Hz dostaje wartość -1.

    Co robię nie tak?

    Oto moje ustawienia biblioteki:
    #define I2C_MODE 0

    #define USE_SOFT_I2C 1 // soft I2C only for MODE = 0 (Master)

    #define iSCL PB7
    #define iSDA PB5

    #define SCL_PORT PORTB
    #define SCL_DIR DDRB
    #define SCL_PIN PINB

    #define SDA_PORT PORTB
    #define SDA_DIR DDRB
    #define SDA_PIN PINB



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 sty 2020, o 12:12 
    Offline
    Moderator
    Avatar użytkownika

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

    Może najpierw warto sprawdzić w nocie PDF swojego procka czy masz w ogóle TWI(I2C) ? czy tylko USI ?

    _________________
    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: 10 sty 2020, o 12:14 
    Offline
    Użytkownik

    Dołączył(a): 14 kwi 2018
    Posty: 35
    Pomógł: 0

    Liczyłem, że może uda się mi uruchomić bibliotekę w trybie Master ale softwarowym. Teraz zauważyłem że jednak to się nie uda. Nie ma możliwości modyfikacji kodu w celu dostosowania go do trybu master dla małych mikrokontrolerów?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 sty 2020, o 12:32 
    Offline
    Moderator
    Avatar użytkownika

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

    A co za problem żeby to działało w trybie I2C Software ? Żaden problem. Co więcej procek ma USI a więc też da się to pewnie wykorzystać

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

    Przy okazji jak robisz I2C Soft to po co sprawdzasz ustawienia Bitrate ? to jest tylko dla trybu sprzętowego

    _________________
    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: 10 sty 2020, o 12:36 
    Offline
    Użytkownik

    Dołączył(a): 14 kwi 2018
    Posty: 35
    Pomógł: 0

    Można prosić o jakieś wskazówki jak uruchomić to w trybie Master dla tego ATtiny? Chodzi oczywiście o tryb soft.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 sty 2020, o 12:55 
    Offline
    Moderator
    Avatar użytkownika

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

    ustawić tryb software I2C i to wszystko ;) nic więcej nie trzeba robić. Tylko nie zaglądaj tam do tej funkcji która pokazuje ci -1 bo ona nie jest do soft i2c

    _________________
    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: 10 sty 2020, o 12:58 
    Offline
    Użytkownik

    Dołączył(a): 14 kwi 2018
    Posty: 35
    Pomógł: 0

    #define USE_SOFT_I2C 1
    I to tyle? Żadnej dodatkowej inicjalizacji?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 sty 2020, o 13:05 
    Offline
    Moderator
    Avatar użytkownika

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

    Ja nie za bardzo rozumiem o czym kolega pisze? Pomijam już że w otrzymanym pliku ZIP jest przykładowy kod. I nie wiem też skąd pytanie o to czy nie trzeba inicjalizować ? Jak to nie - skoro jest funkcja do inicjalizaji ... Oczywiście że trzeba inicjalizować

    _________________
    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: 10 sty 2020, o 13:07 
    Offline
    Użytkownik

    Dołączył(a): 14 kwi 2018
    Posty: 35
    Pomógł: 0

    Trochę się nie zrozumieliśmy, ale już wiem wszystko ;) Dzięki za pomoc :D



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 sty 2020, o 13:14 
    Offline
    Moderator
    Avatar użytkownika

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

    a no to powodzenia - powinno spokojnie śmigać.

    _________________
    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: 10 sty 2020, o 14:21 
    Offline
    Użytkownik

    Dołączył(a): 14 kwi 2018
    Posty: 35
    Pomógł: 0

    A więc jednak nie musiałem nie zrozumieć wszystkiego...
    Bibliotekę uruchamiam w ten sposób:

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


    Następnie w main.c definiuje sobie adresy urządzeń slave oraz uruchamiam I2C dla 100kHz:

    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.


    Chciałbym móc odczytać dane z czujników INA219A, jednak jak widać w terminalu powyżej zawsze wartość wynosi 255 bez znaczenia czy kanał wyjściowy pobiera prąd czy też nie. Czy jest ktoś w stanie wytłumaczyć mi mocno łopatologicznie jak powinienem wykorzystać ten czujnik? :cry:

    Obrazek

    Oraz link do dokumentacji czujnika:
    http://www.ti.com/lit/ds/symlink/ina219.pdf



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 sty 2020, o 17:09 
    Offline
    Użytkownik

    Dołączył(a): 22 lut 2014
    Posty: 205
    Lokalizacja: Poznań
    Pomógł: 22

    Wygląda na to, że nie przesyłasz adresu rejestru, z którego chcesz odczytać wartość. Podajesz jedynie adres układu INA219. W define widzę, że zdefiniowałeś adres rejestru ale z niego nie skorzystałeś.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 sty 2020, o 17:30 
    Offline
    Użytkownik

    Dołączył(a): 14 kwi 2018
    Posty: 35
    Pomógł: 0

    Adres z którego chciałbym odczytać dane do zmienna o nazwie registerPointer, a w #define dodałem sobie polecenia read oraz write, wartość tych definicji to adres urządzenia + 1 lub 0 w zależności od tego czy chce coś czytać czy zapisywać jednak wciąż dostaje tylko maksymalne wartości dla danego typu zmiennej np 255 jeśli czytam tylko bajt.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 sty 2020, o 17:38 
    Offline
    Użytkownik

    Dołączył(a): 22 lut 2014
    Posty: 205
    Lokalizacja: Poznań
    Pomógł: 22

    Okej faktycznie nie zauważyłem, wydaje mi się, że kod powinien wyglądać tak:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    A wartość INA1_read = INA1_ADRESS + 1

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


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



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 sty 2020, o 17:48 
    Offline
    Użytkownik

    Dołączył(a): 14 kwi 2018
    Posty: 35
    Pomógł: 0

    Zastosowałem się do Twoich rad, jednak wartość wciąż wynosi 255. Nie potrafię znaleźć nigdzie dobrego przykładu uruchomienia tego czujnika :/



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 sty 2020, o 18:10 
    Offline
    Użytkownik

    Dołączył(a): 01 lis 2013
    Posty: 301
    Pomógł: 32

    Układ czujnika jak ma podpięte nogi adresowe A0 i A1 ?

    Poczytaj po tym linkiem. Masz ładnie wszystko opisane.
    http://www.jarzebski.pl/arduino/czujniki-i-sensory/cyfrowy-czujnik-pradu-mocy-ina219.html
    Musisz sobie zaglądnąć do biblioteki. Co prawda jest to arduinowa biblioteka, ale wyciągniesz z niej sposób obsługi układu.

    _________________
    Pozdrawiam,
    sq8mvy, Paweł



    Ostatnio edytowano 10 sty 2020, o 18:13 przez gizmo5418, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 sty 2020, o 18:12 
    Offline
    Użytkownik

    Dołączył(a): 14 kwi 2018
    Posty: 35
    Pomógł: 0

    Jeśli chodzi o podłączenie układu to wykorzystuję pierwsze 4 adresy dostępne w nocie katalogowej (chodzi mi o sposób podłączenia ich w układzie), korzystałem już z tej strony niestety opisany tam kod dotyczy Arduino :/



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 sty 2020, o 18:19 
    Offline
    Użytkownik

    Dołączył(a): 22 lut 2014
    Posty: 205
    Lokalizacja: Poznań
    Pomógł: 22

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

    powinno być uint16_t

    Tak jak kolega wyżej napisał, musisz nam teraz dostarczyć informacji na temat hardware.
    Wrzuć jakiś schemat, zdjęcia itp.
    Korzystasz z własnego projektu płytki, czy kupiłeś jakieś gotowce?

    Najlepiej odłączyć pozostałe 3 INA219 i zająć się najpierw obsługą jednego. Wykomentuj także obsługę ich w kodzie.

    Wrzuć obecny kod.
    :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 sty 2020, o 18:34 
    Offline
    Użytkownik

    Dołączył(a): 14 kwi 2018
    Posty: 35
    Pomógł: 0

    Korzystam z własnego projektu oto schemat układu (należy pozbyć się jednego MAX485 fizycznie go już nie ma).
    Obrazek

    A oto cały kod main (korzystam z biblioteki MK_I2C):

    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.


    Niestety nie mam fizycznej możliwości odłączenia czujników dlatego też tylko zakomentowałem pozostałą część kodu.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 sty 2020, o 18:48 
    Offline
    Użytkownik

    Dołączył(a): 22 lut 2014
    Posty: 205
    Lokalizacja: Poznań
    Pomógł: 22

    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.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 sty 2020, o 19:05 
    Offline
    Użytkownik

    Dołączył(a): 14 kwi 2018
    Posty: 35
    Pomógł: 0

    Niestety, ale wartość odczytywana z urządzenia wciąż jest niezrozumiała.
    Efekt w terminalu:

    Obrazek

    Wartość przed ACK to wartość pochodząca od czujnika INA.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 sty 2020, o 19:25 
    Offline
    Użytkownik

    Dołączył(a): 22 lut 2014
    Posty: 205
    Lokalizacja: Poznań
    Pomógł: 22

    Niestety nie mam dostępu do biblioteki Mirka :(
    Zobacz czy w funkcji i2c_read_word jest dodawane 1 do adresu.

    ------------------------ [ Dodano po: 15 minutach ]

    Jaki masz spadek napięcia na R13?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 sty 2020, o 19:41 
    Offline
    Użytkownik

    Dołączył(a): 01 lis 2013
    Posty: 301
    Pomógł: 32

    W takim wypadku, czyli pisząc obsługę układu, bardzo przydatny jest analizator stanów logicznych lub oscyloskop. Jak na dłoni by było widać, co wysyłasz do układu - adres, nr. rejestru i co jest zwracane.

    Jak jesteś w posiadaniu choć jednej z tych rzeczy, to podpinaj i szukaj błędu....

    _________________
    Pozdrawiam,
    sq8mvy, Paweł



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 sty 2020, o 19:44 
    Offline
    Użytkownik

    Dołączył(a): 22 lut 2014
    Posty: 205
    Lokalizacja: Poznań
    Pomógł: 22

    Zgadzam się z gizmo5418



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 sty 2020, o 20:17 
    Offline
    Użytkownik

    Dołączył(a): 14 kwi 2018
    Posty: 35
    Pomógł: 0

    Właśnie zabieram się za sprawdzenie linii SDA i SCL.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 sty 2020, o 22:04 
    Offline
    Moderator
    Avatar użytkownika

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

    Przede wszystkim ... przede wszystkim to trzeba zrozumieć i piszę o tym już w Bluebooku, że nie ma na świecie jednej UNIWERSALNEJ biblioteki i2c do wszystkich scalaków/urządzeń świata. Ja nie mam czasu na wnikanie w PDF'a tych scalaków INA ale od przestudiowania noty bym zaczął. Następnie sprawdził gotowe funkcje w bibiotece do przesyłania danych i ew dopasował je do scalaka jeśli zajdzie taka potrzeba. Jedyne co mogę powiedzieć to w tej bibliotece nie podaje się żadnych oddzielnych adresów do zapisu i do odczytu tylko jeden bazowy adres a biblioteka sama dba o najmłodszy bit mówiący o operacji read/write.

    Jeszcze raz powiem w Bluebooku opisuję dokładnie o co chodzi i pokazuję właśnie DWA różne przykłady scalaków oraz wyjaśniam różnice komunikacji między nimi, na co zwracać uwagę i jak postępować ... Trzeba tylko poczytać.

    _________________
    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: 10 sty 2020, o 22:35 
    Offline
    Użytkownik

    Dołączył(a): 02 gru 2015
    Posty: 555
    Pomógł: 28

    Mirku ten scalak spokojnie da się odczytać twoimi funkcjami i2c_read_buf i i2c_write_buf wiem bo napisałem sobie bibliotekę do niego i działa bez problemu .
    Autor wątku albo podaje zły adres układu albo odczytuje zły rejestr albo źle zainicjalizował ten scalak.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 sty 2020, o 23:18 
    Offline
    Użytkownik

    Dołączył(a): 14 kwi 2018
    Posty: 35
    Pomógł: 0

    Jest szansa abyś mógł podzielić się jakimiś wskazówkami lub kodem?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 sty 2020, o 00:20 
    Offline
    Moderator
    Avatar użytkownika

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

    tonygryps napisał(a):
    Mirku ten scalak spokojnie da się odczytać twoimi funkcjami i2c_read_buf i i2c_write_buf wiem bo napisałem sobie bibliotekę do niego i działa bez problemu .

    No proszę ;)

    Ale to też pokazuje jednak, że warto najpierw poćwiczyć dobrze i2c na prostszych układach ... poczuć to , nawet wprost ćwiczenia z książki przejść - to daje praktykę, nie zaś od razu zrobić własną płytkę PCB gdzie można jeszcze w projekcie elektronicznym babole porobić. A tu na schemacie widać babole - może nie duże no ale kto podciąga każdy pin SDA i SCL oddzielnym rezystorem 10k ??? To przy 4 scalakach - mamy połączone 4 rezystory równolegle i jaką mamy rezystancję podciągającą na każdej linii ? 10K ?

    Wprawdzie to akurat nie powoduje jeszcze tutaj takiego problemu - ale jakby człowiek najpierw potestował sobie na jakimś zestawie uruchomieniowym, np ATB ;) Podejrzał schemat takiego zestawu - jak się podłącza scalaki na magistralę i2c itp ... zrobił prototypa. To później i własne PCB by się całkiem inaczej zaprojektowało.

    _________________
    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: 11 sty 2020, o 08:09 
    Offline
    Użytkownik

    Dołączył(a): 14 kwi 2018
    Posty: 35
    Pomógł: 0

    Nawet najlepszym zdarzają się błędy, a ja się za takiego nie uznaje. „Wiem, że nic nie wiem.” Będę dalej walczył z tym układem może uda się coś zdziałać z funkcjami operującymi buforami :)



    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: 41 ]  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 2 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