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



Teraz jest 28 mar 2024, o 17:00


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 16 ] 
Autor Wiadomość
PostNapisane: 9 mar 2018, o 18:07 
Offline
Nowy

Dołączył(a): 20 lis 2017
Posty: 6
Pomógł: 0

Witajcie, piszę ponieważ nie potrafię tego sam zrobić, znajdzie się jakaś życzliwa duszyczka która przerobiła by te dwie Mirkowe funkcje w ten sposób aby umożliwiały one odczyt i zapis pojedynczych bajtów? Kompletnie nie mam pojęcia jak to zrobić a moje próby tylko sprawiają że resztkę włosów na głowie zaraz sobie wyrwę :/


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: 9 mar 2018, o 18:22 
Offline
Użytkownik

Dołączył(a): 18 kwi 2013
Posty: 181
Lokalizacja: Kraków
Pomógł: 30

Przecież masz w BB funkcje wysyłającą/odbierającą jeden bajt:
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: 9 mar 2018, o 18:37 
Offline
Moderator
Avatar użytkownika

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

janusz17 napisał(a):
Przecież masz w BB funkcje wysyłającą/odbierającą jeden bajt:


Proszę wybacz mi określenie ale to nonsens ...

te dwie funkcjie TWI_write_buf() oraz TWI_read_buf() - robią WSZYSTKO ! ;) zupełnie wszystko i nie ma potrzeby rozbijać tego super mechanizmu. Gdy widzę jak na forum pomimo posiadania takich extra funkcji niektórzy zamiast dopytać - to wchodzą do biblioteki, wyłuskują bebechy na wierzch i jak wysyłają w sposób liniowy całe dziesiątki bajtów - zamiast użyć Qurczę JEDEN funkcji to aż mi coś w kręgosłupie zgrzyta i włosy jeżą się pod łopatkami

johny5 napisał(a):
znajdzie się jakaś życzliwa duszyczka która przerobiła by te dwie Mirkowe funkcje

dobrze, że chociaż zadajesz pytanie na forum .... zamiast to kroić na kawałki jak inni - zupełnie niepotrzebnie

UWAŻAJ - teraz wyślę JEDEN bajt za pomocą tej funkcji, załóżmy że będzie to 8-bitowa zmienna o nazwie np my_reg:


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


KONIEC! ... koniec ?

przedostatni argument to ilość bajtów które chcesz wysłać - więc skoro chcesz tylko jeden bajt to dlatego jest tam jedynka

ostatni argument to adres zmiennej (wskaźnik) do bufora jednobajtowego - co uzyskujesz operatorem &

wcześniej oczywiście podajesz standardowy adres swojego scalaka na I2C - masz go w nocie PDF

a drugi argument to adres w pamięci scalaka czy też adres rejestru scalaka - zależy co to za scalak

i po jasny gwint coś przerabiać ? albo wyłuskiwać z biblioteki jakieś tam pojedyncze funkcje ? ;)

------------------------ [ Dodano po: 5 minutach ]

jeśli to ma być np zapis godziny do RTC PCF8583 i się uprzesz robić to za pomocą pojedynczych bajtów to proszę

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

(4 - to adres rejestru godzin w scalaku)

i co? można? - można .... trudne ? coś trzeba było przerabiać ? nie trzeba bo po grzyba ? ;)

------------------------ [ Dodano po: 7 minutach ]

ale jakbyś chciał zapisać od razu sekundy, minuty i godziny to po prostu:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


tyle że teraz zapisujemy 3 bajty a że sekundy w PCF są od adresu = 2 to stąd drugi argument = 2

------------------------ [ Dodano po: 10 minutach ]

TO SAMO - DOKŁADNIE to samo dotyczy odczytu

Wiem wiem - zaraz padnie pytanie albo sugestia typu

ale ja mam całkiem inny scalak i nie jest to RTC tylko np przetwornik ADC na i2c ? ... co za Qurczę problem - robimy NADAL DOKŁADNIE TAK samo ... (no chyba że jest jakiś specyficzny scalak, który ma np adresy swoich rejestrów 16-bitowe, albo przesyła się dane 16-bitowe - albo ma jakieś nieco inne adresowanie na i2c to wtedy można sobie lekuchno przerobić te DWIE funkcje - zmieniając chociażby typy dla argumentów i nieco ich ciało i viola! ... nadal używamy tylko tych DWÓCH funkcji

teraz jaśniej ?


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: 9 mar 2018, o 18:59 
Offline
Nowy

Dołączył(a): 20 lis 2017
Posty: 6
Pomógł: 0

kurcze, Mirku, tak próbowałem tylko bez operatora & i chyba dlatego nie chciało działać, już sprawdzam i zaraz daję zna czy zadziałało :D


Edit:
tak, chodzi o inny układ niż rtc, BME280



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 mar 2018, o 20:54 
Offline
Moderator
Avatar użytkownika

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

Cytuj:
kurcze, Mirku, tak próbowałem tylko bez operatora & i chyba dlatego nie chciało działać

ale widzisz - bo ty piszesz - że coś tam próbowałeś ... a wiesz co robi operator & ... mówię ci warto to zrozumieć ... w BB to wyjaśniam, ale zdaję sobie sprawę że gdy ktoś zaczyna to może czasem mnie również nie zrozumieć - wtedy warto dopytywać do upadłego na forum .... jak działa ten eND & ;)


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: 9 mar 2018, o 21:58 
Offline
Nowy

Dołączył(a): 20 lis 2017
Posty: 6
Pomógł: 0

Mirku, tylko nawet nie wiedziałem że tam ma być jakiś operator, działanie znam ;)


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

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

Funkcja chyba jest poprawna, adresy sprawdzone paru krotnie, brak odpowiedzi. Analizator takie rzeczy pokazuje, ewidentnie brak ACK'ów. ręce opadają. Sprawdziłęm na tym samym sprzęcie inny program z BB bez problemu działa, prędkości zgodnie z ustawieniami w programie, adresy sprawdzone. Ten moduł chyba uwaliłem albo potrzebuje jakiegoś "boźdzca" :D

Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 mar 2018, o 22:25 
Offline
Moderator
Avatar użytkownika

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

johny5 napisał(a):
Funkcja chyba jest poprawna, adresy sprawdzone paru krotnie, brak odpowiedzi. Analizator takie rzeczy pokazuje, ewidentnie brak ACK'ów. ręce opadają.

Widzisz - trzeba było od początku od tego zacząć ...

nie znam akurat PDF'a twojego modułu i nie jestem w stanie ze względów czasowych się zapoznać - ale z tego co kojarzę, tam jest mocno inna komunikacja niż 8-bitowa choć może się mylę - więc .... panie kochany tak jak pisałem wyżej ... to nie jest uniwersalna funkcja "na wszystko" .... a książka jest po to aby starać się zrozumieć jak ona działa od podstaw - bo TYLKO TO pozwoli ci dostosować ją do innych układów ...

To tak troszkę jak z tym operatorem AND "&" ... piszesz że wiesz do czego jest ale nie wiedziałeś że trzeba go zastosować

zobacz - operator & to operator pozyskania adresu - czyli podaje on wskaźnik do komórki w pamięci RAM - innymi słowy - taki wskaźnik do zmiennej jedno-bajtowej to wskaźnik na pierwszy element tablicy posiadającej JEDEN element ....

zatem skoro wiesz, że ta funkcja potrzebuje wskaźnika na bufor - to co za problem za pomocą operatora & przekazać tę zmienną jako tablicę jednoelementową ...

.... a tymczasem polecam zajrzeć do noty PDF swojego modułu i ją dokładnie przestudiować

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

aż z ciekawości zajrzałem do noty PDF ... i wydaje się być na pierwszy rzut oka banalna komunikacja i funkcja z BB powinna z marszu działać ;)

Obrazek

natomiast patrząc na twoje fragmenty kodu wydaje mi się, że kompletnie nie zaglądałeś do noty - jak chociażby odnośnie adresu SLAVE swojego modułu ... przyjrzyj się dokładnie temu co w nocie na tym obrazku i na swój zrzut ekranu z analizatora


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: 10 mar 2018, o 07:59 
Offline
Nowy

Dołączył(a): 20 lis 2017
Posty: 6
Pomógł: 0

Hmmm, dalej nie wiem o co chodzi. jeśli chodzi o adresy to korzystam z tego:
Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 mar 2018, o 08:45 
Offline
Użytkownik

Dołączył(a): 02 gru 2015
Posty: 544
Pomógł: 27

Bo pewnie podajesz zły adres na magistrali użyj Mirkowego i2c skanera i będziesz miał prawidłowy adres obejrzyj poradniki o i2c.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 mar 2018, o 09:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

cześć
Adres BMP280 w zależności od podłączonego pinu SDO to 0xEC lub 0xEE i z funkcjami z BB musi działać.


Autor postu otrzymał pochwałę

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 mar 2018, o 09:13 
Offline
Nowy

Dołączył(a): 20 lis 2017
Posty: 6
Pomógł: 0

mczarny napisał(a):
cześć
Adres BMP280 w zależności od podłączonego pinu SDO to 0xEC lub 0xEE i z funkcjami z BB musi działać.


Posiadam BME280



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 mar 2018, o 09:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

Akurat adresy na magistrali dla BMP280 i BME280 są takie same.
P.Mirek pokazał Ci stronę w dokumentacji z adresem do odczytu i zapisu gdzie masz
111011x0 czyli ? EC jeżeli za x podstawisz 0 lub EE jeżeli za x podstawisz 1. Co podstawisz w miejsce x zależy od Ciebie bo możesz za pomocą pinu podłączonego do masy lub Vcc zmienić adres układu.


Autor postu otrzymał pochwałę

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 mar 2018, o 13:05 
Offline
Nowy

Dołączył(a): 20 lis 2017
Posty: 6
Pomógł: 0

Panowie, już głupieję.

mczarny napisał(a):
Akurat adresy na magistrali dla BMP280 i BME280 są takie same.
P.Mirek pokazał Ci stronę w dokumentacji z adresem do odczytu i zapisu gdzie masz
111011x0 czyli ? EC jeżeli za x podstawisz 0 lub EE jeżeli za x podstawisz 1. Co podstawisz w miejsce x zależy od Ciebie bo możesz za pomocą pinu podłączonego do masy lub Vcc zmienić adres układu.


mirekk36 napisał(a):
natomiast patrząc na twoje fragmenty kodu wydaje mi się, że kompletnie nie zaglądałeś do noty - jak chociażby odnośnie adresu SLAVE swojego modułu ... przyjrzyj się dokładnie temu co w nocie na tym obrazku i na swój zrzut ekranu z analizatora


Datasheet BMP280 Digital Pressure Sensor napisał(a):
The last bit is changeable by SDO value and can be changed during operation. Connecting SDO to GND results in slave address 1110110(0x76); connection it to VDDIO results in slaveaddress 1110111(0x77),which is the same as BMP180’s I²C address.


Będzie ktoś miał tyle cierpliwości i mi to wytłumaczy?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 mar 2018, o 13:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 mar 2014
Posty: 150
Lokalizacja: Staszów
Pomógł: 12

Datasheet BMP280 Digital Pressure Sensor napisał(a):
The last bit is changeable by SDO value and can be changed during operation. Connecting SDO to GND results in slave address 1110110(0x76); connection it to VDDIO results in slaveaddress 1110111(0x77),which is the same as BMP180’s I²C address.

To znaczy tyle co:
Ostatni bit jest modyfikowany wartością SDO i wartość ta może być zmieniana w czasie działania (operacji). Połączenie SDO z GND skutkuje tym, że układ ma adres: 1110110 (dziesiętnie) czyli 0x76 (szesnastkowo). Połączenie SDO z VDDIO skutkuje tym, że układ ma adres: 1110111 (dziesiętnie) czyli 0x77 (szesnastkowo). To samo odnosi się do adresowania układu BMP180 na magistrali I²C.

Wynika z tego (przynajmniej dla mnie), że jednocześnie na tej magistrali mogą być dwa takie czujniki. No i aby były rozróżnialne muszą mieć dwa różne adresy.

VDDIO to napięcie na pinach IO, które może się różnić od napięcia, którym napędzany jest sam układ.
Doczytałem to tutaj: https://electronics.stackexchange.com/questions/277648/a-difference-between-vdd-and-vddio-in-datasheet-of-a-sensor

Ja generalnie wiem o tych sprawach bardzo mało i nawet jak ktoś mnie tu zaraz obśmieje, to mi to nie przeszkadza. Przynajmniej dowiem się czegoś.


Autor postu otrzymał pochwałę

_________________
Ad augusta per angusta



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 mar 2018, o 14:16 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

Kolego johny5
Zwykle, kiedy w dokumentacji podawany jest 7-bitowy adres układu I2C, należy przesunąć go o jeden bit w lewo i później najmniej znaczący bit ustawić zgodnie z kierunkiem transmisji R=1/W=0.
Ponieważ funkcja zapisu z BB sama załatwia sprawę z ostatnim bitem więc w adresie będziesz miał "0"
Więc 1110110 po dodaniu bitu "0" dla W przyjmuje postać 11101100 czyli 0xEC i to jest adres układu dla pinu SDO podłączonym do masy.


Autor postu otrzymał pochwałę

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 mar 2018, o 14:59 
Offline
Moderator
Avatar użytkownika

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

tonygryps napisał(a):
Bo pewnie podajesz zły adres na magistrali użyj Mirkowego i2c skanera i będziesz miał prawidłowy adres obejrzyj poradniki o i2c.

Również to polecam


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  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 16 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Google [Bot] i 3 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