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



Teraz jest 27 sty 2026, o 07:57


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 18 ] 
Autor Wiadomość
PostNapisane: 16 paź 2016, o 18:27 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

Witam
Nie wiem czy ktoś miał styczność z tym układem (tak na prawdę z modułem) odbiornika FM.
Właśnie wszedłem w posiadanie takowego. Przygotowałem sobie pod niego płytkę testową bo moduł ma wyprowadzenia o rastrze 2mm a nie jestem zwolennikiem robienia pająków :P
Obrazek

Moduł jest zasilany z 3,3 V i sterowany przez I2C.
Oczywiście jest do niego nota aplikacyjna, ale opis komunikacji i2c jest lekko dziwny.
Po pierwsze rejestry są 16 bitowe a nie 8, więc nie jestem pewny jako podejść do ich obsługi.
Czy traktować je jako tablice 2 elementową...
Poza tym w nocie widnieje taki zapis:

"There is no visible register address in I2C interface transfers. The I2C
interface has a fixed start register address (0x02h for write transfer and 0x0Ah for read transfer), and
an internal incremental address counter."

Czy ktoś może miał z tym styczność.
A może ma ktoś jakiś przykładowy kod.

P.S.
Przy okazji dodaję kilka elementów bibliotecznych do Eagla, wiem że kiedyś Jaglarz zbierał :)


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2016, o 20:45 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

Leży ci u mnie taki układzik tylko coś się zabrać za niego nie mogę.
Moduł jest fajny bo ma RDS ;-)
A zapis z noty który cytujesz oznacza, że nie możesz zacząć zapisywać
lub czytać od dowolnego rejestru tylko od tych z góry określonych.
Czyli jak chcesz się dowiedzieć co jest w rejestrze 0x0C to musisz przeczytać
zawartość 3 rejestrów. Z odczytem każdego wewnętrzny układ sam zwiększy
adres kolejnego odczytywanego rejestru.

A dlaczego masz tworzyć 2-elementową tablicę? Czyżby zmienne 16 bitowe
z jakiegoś powodu przestały istnieć?

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2016, o 21:42 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

Właśnie analizuję obsługę tego w bibliotece z Arduino. Jest specjalna funkcja która po prostu przesuwa zmienną 16 bitową o 8 bitów i ten drugi bajt wtedy nadaje.
W ogóle zaczerpnąłem z tej biblioteki całą masę typów i zdefiniowanych wartości do rejestrów. :P

Wracam do dalszego ogarniania :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 paź 2016, o 22:41 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

MirkoT napisał(a):
A zapis z noty który cytujesz oznacza, że nie możesz zacząć zapisywać
lub czytać od dowolnego rejestru tylko od tych z góry określonych.
Czyli jak chcesz się dowiedzieć co jest w rejestrze 0x0C to musisz przeczytać
zawartość 3 rejestrów. Z odczytem każdego wewnętrzny układ sam zwiększy
adres kolejnego odczytywanego rejestru.


Też tak rozumiem ten zapis. Ale po wgryzieniu się w bibliotekę arduino do tego modułu znalazłem tam dwie funkcje:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


oraz

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


Jak widać pierwsza faktycznie zapisuje sekwencyjnie rejestry rozpoczynając od 0x02
Natomiast druga zapisuje wybrany rejestr, przy czym operuje innym adresem
I2C_SEQ - 0x10
I2C_INDX - 0x11

W Arduino to działa.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 paź 2016, o 23:34 
Offline
Moderator
Avatar użytkownika

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

Szkoda, że mi się już nie zmieścił ten moduł w YB ;)
Obrazek

_________________
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: 17 paź 2016, o 23:39 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

O proszę jak miło :)
W ogóle jeśli chodzi o ten moduł, to jestem zaskoczony jego przyzwoitą czułością. Dałem symboliczną antenę a całkiem ładnie odbiera.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 paź 2016, o 06:03 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

sq8dsr napisał(a):
MirkoT napisał(a):
A zapis z noty który cytujesz oznacza, że nie możesz zacząć zapisywać
lub czytać od dowolnego rejestru tylko od tych z góry określonych.
Czyli jak chcesz się dowiedzieć co jest w rejestrze 0x0C to musisz przeczytać
zawartość 3 rejestrów. Z odczytem każdego wewnętrzny układ sam zwiększy
adres kolejnego odczytywanego rejestru.


Też tak rozumiem ten zapis. Ale po wgryzieniu się w bibliotekę arduino do tego modułu znalazłem tam dwie funkcje:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


oraz

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


Jak widać pierwsza faktycznie zapisuje sekwencyjnie rejestry rozpoczynając od 0x02
Natomiast druga zapisuje wybrany rejestr, przy czym operuje innym adresem
I2C_SEQ - 0x10
I2C_INDX - 0x11

W Arduino to działa.

To ciekawe bo w PDF nie ma na ten temat ani słowa.
Może to jest jakaś funkcja nieudokumentowana? Albo z jakiegoś innego
nie całkiem powszechnie dostępnego PDF :?:

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

mirekk36 napisał(a):
Szkoda, że mi się już nie zmieścił ten moduł w YB ;)
Obrazek

A ja słyszałem plotki, że rozpoczęły się już prace nad OB :lol:
Może tam uda się go upchnąć?

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 paź 2016, o 17:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

MirkoT napisał(a):
To ciekawe bo w PDF nie ma na ten temat ani słowa.
Może to jest jakaś funkcja nieudokumentowana? Albo z jakiegoś innego
nie całkiem powszechnie dostępnego PDF :?:


To jest ten projekt:
https://github.com/mathertel/Radio

Coś tam jest innego w tej transmisji, jakaś specyfika.
Kod w Arduino działa, ale jak przeniosłem go do C to zapis poza rejestr 0x02 już nie działa.
Niby wszystko jest taka samo, ale program w tym miejscu się wiesza, zapewne czeka na ACK który nie przychodzi.
Nie wiem jak działa funkcja Wire w Arduino, bo może jakiś inny start transmisji jest wymagana w tym module.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 paź 2016, o 21:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

Podłączyłem do I2C analizator Saleae :)
No i teraz już kompletnie coś dziwnego jest.
Master nadaje adres układy SLAVE nie 0x11 nie 0x10 ale 0x22 przy zapisie i 0x21 przy odczycie.

Mirku Ty się bawiłeś tym układem z tego co widzę. Masz jakieś wytyczne co do komunikacji I2C ? ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 paź 2016, o 21:35 
Offline
Moderator
Avatar użytkownika

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

sq8dsr napisał(a):
Mirku Ty się bawiłeś tym układem z tego co widzę.

Bawiłem się ale już prawie albo ponad rok temu .... powstał już nawet wstępny projekt jak widać do książki ;) tyle, że ani nie zdążyłem go dokończyć do końca że tak powiem, ani zmieścić już w YB jak wspominałem. Na dzisiaj to już nawet praktycznie nic nie pamiętam z tamtego czasu ... ale nawet gdybym pamiętał to...
... Nie jestem w stanie omawiać z wyprzedzeniem tego co będzie w książce czy w książkach przykro mi i liczę na zrozumienie.

ale ...

to mnie NAJBARDZIEJ zadziwia ;) ...
sq8dsr napisał(a):
Podłączyłem do I2C analizator Saleae


Na prawdę - bo hmm kolega robi reverseengennering od .... no mega od tyłu .... a po co ?

Proponuję zabawić się w doktora, kubę rozpruwacza MIS(i)O ;)



czyli zamiast bawić się w andruino to je ... hmmm :lol: rozpruć .... zapewniam, że tędy bliżej .... niż przez "od tyłu" czyli analizator ;)

To jest moja wskazówka i podpowiedź - zamiast zastanawiać się nad pruciem i2c za pomocą salae ;) ... poważnie

Po to robiłem ten cykl poradników na temat OLED i operacji MIS(i)O ... nie tak sobie, tylko żeby pokazać jak korzystać z andruino. Bo z tego co widzę, to mnóstwo osób korzysta z andruino ale żeby mu zajrzeć do brzucha - to już nie ... po co ? ;) ... I tu popełniają największy błąd, bo te flaczki w środku bywają o wiele cenniejsze niż gotowce w postaci tych tzw skeczów, na podstawie których wielu użytkowników nadruino - owszem odpali jakieś pojedyncze projekty z netu, nawet coś sobie pozmienia w nich na własne potrzeby. Ale gdy przychodzi połączyć ze sobą dwa a nie daj Boże trzy albo więcej projektów (skeczów) andruno w jeden projekt to wtedy biada i nie wiadomo jak.

Podsumowując - czasem warto jednak zejść o krok niżej i zacząć powoli i coraz częściej patrzeć przez pryzmat C ;)

A więc - pędem po strój chirurga ;) i do operacji! :lol:

_________________
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: 19 paź 2016, o 22:10 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

mirekk36 napisał(a):
zyli zamiast bawić się w andruino to je ... hmmm :lol: rozpruć .... zapewniam, że tędy bliżej .... niż przez "od tyłu" czyli analizator ;)

Ale ja Mirku dokładnie to właśnie robię. Rozpruwam Misia :P Tzn bibliotekę do Arduino. Chcę to oprogramować sobie w czystym C.
Niestety pierwsze próby nie przyniosły rezultatu....
Nie bardzo rozumiem samą transmisję I2C w tym przypadku. Przeniosłem funkcje z biblioteki Arduino do C. Ale niestety nie działa.
Oczywiście muszę robić jakiś błąd. Dlatego podłączyłem moduł do Aurduino i odpaliłem go na źródłowej bibliotece. Choćby po to, żeby sprawdzić czy on w ogóle działa.
No i oczywiście działa. Dlatego teraz porównuję co ja wysyłam ze swojego programu w C a co wysyła pierwotna biblioteka.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 paź 2016, o 22:44 
Offline
Moderator
Avatar użytkownika

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

sq8dsr napisał(a):
Przeniosłem funkcje z biblioteki Arduino do C.

Ok, tylko mi chodziło o to, że z tego co pamiętam to w tej bibliotece było zdaje się wszystko widać ... czyli zarówno jakie adresy na i2c miały być i jakie komendy wysyłane - no wszystko ....

i to miałem na myśli, bo uwierz mi, że na prawdę szczegółów nie pamiętam ale też jak pierwszy raz do tego się przymierzałem to właśnie zacząłem od poprucia jakiejś andruinowej biblioteki

zmyliło mnie to, że pisałeś - że badasz salae adresy i2c a jak mówię - adresowanie powinno być wprost widoczne w bibliotece

_________________
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: 19 paź 2016, o 23:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

Cytuj:
zmyliło mnie to, że pisałeś - że badasz salae adresy i2c a jak mówię - adresowanie powinno być wprost widoczne w bibliotece

I jest widoczne. Są dwa adresy 0x10 i 0x11 pierwszy jest używany do transmisji sekwencyjnej (zgodnej z notą) gdzie wskaźnik sam się inkrementuje od adresu 0x02, adrigi (0x11) jest używany do dostępu do wybranego rejestru (co jest nieopisane w nocie).
Natomiast nie wiem czemu, ale ja ta biblioteka działa na Arduino to używa adresu 0x22 i 0x21.
Arduino używa jako najniższych funkcji do I2C funkcji dostępnych w klasie Wire i też do końca nie wiem jak one podchodzą do transmisji. Tzn jak zrobić podwójny start itd.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lis 2016, o 23:35 
Offline
Użytkownik

Dołączył(a): 05 gru 2012
Posty: 67
Lokalizacja: Warszawa
Pomógł: 4

Też zacząłem bawić się tym modulikiem i trafiłem na artykuł w EP 5/2016 (AVT5540).
Wyjaśniło się odnośnie adresów.

pozdrawiam
wojtek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 lis 2016, o 18:54 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

A zrobiłeś i Ci działa?

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 lis 2016, o 19:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

Mam ten moduł już ogarnięty. Bazowałem na bibliotece z EP. Trochę ją rozbebeszyłem, bo pewne rzeczy mi się nie podobają. Ale jako że projekt cały czas się rozwija to jeszcze jej nie optymalizowałem. Może to nie ma większego znaczenia, ale uważam że w wielu miejscach można zmienić typy danych z 16 bitowych na 8 bitowe. Poza "potknąłem się" o problem zawieszania się modułu co skutkowało zawieszaniem się programu (oczekiwanie w pętli while na zmianę flagi TWINT). Mam też pewne problemy z RDSem. Tzn RDS działa, ale często są problemy z jego odbiorem, albo gubienie ramek. Tak jakby transmisja była nieczytelna.
Nie przejmuje się tym specjalnie na razie, bo faktycznie może być duże tło zakłóceń. W docelowym projekcie będzie ekranowanie itd więc dopiero wtedy będę mógł powiedzieć coś więcej.

Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 lis 2017, o 11:17 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 sie 2013
Posty: 33
Pomógł: 1

mirekk36 napisał(a):
Szkoda, że mi się już nie zmieścił ten moduł w YB ;)
Obrazek


Kiedy te radyjko pojawi się w sprzedaży bądź w sklepie?
Niemoge się doczekać.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 lis 2017, o 11:31 
Offline
Moderator
Avatar użytkownika

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

niestety na razie czeka w kolejce ...

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