ATNEL tech-forum
https://forum.atnel.pl/

Biblioteka MK_I2C - mam problem
https://forum.atnel.pl/topic22782.html
Strona 1 z 2

Autor:  RychuER [ 10 sty 2020, o 11:57 ]
Tytuł:  Biblioteka MK_I2C - mam problem

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

Autor:  mirekk36 [ 10 sty 2020, o 12:12 ]
Tytuł:  Re: Biblioteka MK_I2C - nie działa

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

Autor:  RychuER [ 10 sty 2020, o 12:14 ]
Tytuł:  Re: Biblioteka MK_I2C - nie działa

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?

Autor:  mirekk36 [ 10 sty 2020, o 12:32 ]
Tytuł:  Re: Biblioteka MK_I2C - nie działa

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

Autor:  RychuER [ 10 sty 2020, o 12:36 ]
Tytuł:  Re: Biblioteka MK_I2C - nie działa

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

Autor:  mirekk36 [ 10 sty 2020, o 12:55 ]
Tytuł:  Re: Biblioteka MK_I2C - nie działa

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

Autor:  RychuER [ 10 sty 2020, o 12:58 ]
Tytuł:  Re: Biblioteka MK_I2C - nie działa

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

Autor:  mirekk36 [ 10 sty 2020, o 13:05 ]
Tytuł:  Re: Biblioteka MK_I2C - nie działa

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ć

Autor:  RychuER [ 10 sty 2020, o 13:07 ]
Tytuł:  Re: Biblioteka MK_I2C - nie działa

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

Autor:  mirekk36 [ 10 sty 2020, o 13:14 ]
Tytuł:  Re: Biblioteka MK_I2C - nie działa

a no to powodzenia - powinno spokojnie śmigać.

Autor:  RychuER [ 10 sty 2020, o 14:21 ]
Tytuł:  Re: Biblioteka MK_I2C - nie działa

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

Autor:  gumeni [ 10 sty 2020, o 17:09 ]
Tytuł:  Re: Biblioteka MK_I2C - nie działa

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ś.

Autor:  RychuER [ 10 sty 2020, o 17:30 ]
Tytuł:  Re: Biblioteka MK_I2C - nie działa

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.

Autor:  gumeni [ 10 sty 2020, o 17:38 ]
Tytuł:  Re: Biblioteka MK_I2C - nie działa

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.

Autor:  RychuER [ 10 sty 2020, o 17:48 ]
Tytuł:  Re: Biblioteka MK_I2C - nie działa

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

Autor:  gizmo5418 [ 10 sty 2020, o 18:10 ]
Tytuł:  Re: Biblioteka MK_I2C - nie działa

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.

Autor:  RychuER [ 10 sty 2020, o 18:12 ]
Tytuł:  Re: Biblioteka MK_I2C - nie działa

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 :/

Autor:  gumeni [ 10 sty 2020, o 18:19 ]
Tytuł:  Re: Biblioteka MK_I2C - nie działa

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.
:)

Autor:  RychuER [ 10 sty 2020, o 18:34 ]
Tytuł:  Re: Biblioteka MK_I2C - nie działa

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 ]
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.

Autor:  gumeni [ 10 sty 2020, o 18:48 ]
Tytuł:  Re: Biblioteka MK_I2C - nie działa

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

Autor:  RychuER [ 10 sty 2020, o 19:05 ]
Tytuł:  Re: Biblioteka MK_I2C - nie działa

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.

Autor:  gumeni [ 10 sty 2020, o 19:25 ]
Tytuł:  Re: Biblioteka MK_I2C - nie działa

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?

Autor:  gizmo5418 [ 10 sty 2020, o 19:41 ]
Tytuł:  Re: Biblioteka MK_I2C - nie działa

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....

Autor:  gumeni [ 10 sty 2020, o 19:44 ]
Tytuł:  Re: Biblioteka MK_I2C - nie działa

Zgadzam się z gizmo5418

Autor:  RychuER [ 10 sty 2020, o 20:17 ]
Tytuł:  Re: Biblioteka MK_I2C - nie działa

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

Autor:  mirekk36 [ 10 sty 2020, o 22:04 ]
Tytuł:  Re: Biblioteka MK_I2C - nie działa

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ć.

Autor:  tonygryps [ 10 sty 2020, o 22:35 ]
Tytuł:  Re: Biblioteka MK_I2C - nie dział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 .
Autor wątku albo podaje zły adres układu albo odczytuje zły rejestr albo źle zainicjalizował ten scalak.

Autor:  RychuER [ 10 sty 2020, o 23:18 ]
Tytuł:  Re: Biblioteka MK_I2C - nie działa

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

Autor:  mirekk36 [ 11 sty 2020, o 00:20 ]
Tytuł:  Re: Biblioteka MK_I2C - nie działa

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.

Autor:  RychuER [ 11 sty 2020, o 08:09 ]
Tytuł:  Re: Biblioteka MK_I2C - nie działa

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 :)

Strona 1 z 2 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/