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



Teraz jest 29 mar 2024, o 02:20


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 18 maja 2020, o 20:25 
Offline
Nowy

Dołączył(a): 06 cze 2014
Posty: 8
Pomógł: 0

Witam!
Walczę z problemem od ładnych paru godzin.
Nie mogę odczytać wartości ID czujnika. W ogóle jest problem z komunikacją.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


W taki sposób staram się odczytać do zmiennej temp wartość tego rejestru. Niestety ciągle jest 0.
Przed uruchomieniem komunikacji linia SCL ma 5V natomiast po uruchomieniu spada do 0V i tak już zostaje, ale sprawdzałem zwykłym miernikiem.
po debugowaniu kodu diodą doszedłem do wniosku że coś nie tak jest w linii
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Procesor atmega 8A (16Mhz) po tej linijce jest już zawieszony i nic nie da się zrobić.
I2C na 400kHz
Obrazek
Komunikacja wg bibliotek Pana Mirka.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Co robię nie tak ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 maja 2020, o 23:24 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 lis 2019
Posty: 147
Pomógł: 37

ahmed10 napisał(a):
#define TCS34725_ADDRESS (0x29)


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


albo

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


Autor postu otrzymał pochwałę

_________________
Think for yourself and question authority.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 maja 2020, o 16:28 
Offline
Nowy

Dołączył(a): 06 cze 2014
Posty: 8
Pomógł: 0

Działa, dziękuję bardzo !:)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 maja 2020, o 08:53 
Offline
Nowy

Dołączył(a): 06 cze 2014
Posty: 8
Pomógł: 0

Rozwiązany jeden problem, a pojawił się drugi.
Nie wiedzieć dlaczego mam problem z odczytem wartości poszczególnych kolorów.
Problem występuje tylko w przypadku odczytu wartości z rejestrów górnych tzn:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

W tym przypadku wyświetla mi się w konsoli non stop jedna i ta sama wartość np 168 albo 80
Natomiast jeśli dam tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

to wyniki są adekwatne i liniowe. To tak jakby ADC było tylko 8-mio bitowe.
Przeglądnąłem całą note katalogową i nie znalazłem satysfakcjonujących informacji.
Co dziwne przerabiam kod biblioteki .cpp od adafruit i w gruncie rzeczy nie zmieniałem nic istotnego.

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

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


Wartość rejestru odczytywana w pętli co 300ms. Czas integracji ustawiony na 2,4ms



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 maja 2020, o 12:53 
Offline
Nowy

Dołączył(a): 06 cze 2014
Posty: 8
Pomógł: 0

I taka ciekawostka jeszcze... nie wiem totalnie co o tym sądzić bo mam dwa czujniki i reagują dokładnie tak samo a mianowicie po odczycie wszystkich 20 rejestrów z czujnika takie coś dostaję:
3
0
255
255
0
0
0
0
0
0
0
0
0
0
0
2
0
1
68
17


3 - wartość pierwszego rejestru z ustawionym 0 i 1 bitem czyli ok bo powinny być ustawione.
0 - mam wątpliwości czy aby na pewno to jest poprawna wartość w tym miejscu
255- wartość domyślna czyli ok
255- wartość domyślna czyli ok
Później te zera to ja nie wiem skąd się wzięły... :/
i na końcu jeszcze rozpoznaję liczbę
68 - to jest ID czujnika ale dlaczego znajduje się aż na przedostatnim miejscu ??

Całość odczytuję funkcją do odczytu do bufora Pana Mirka, tylko lekko zmodyfikowaną na potrzeby układu.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Również ciekawe jest to, że nie ma różnicy czy wysyłam bajt w taki sposób jak zakomentowany czy w taki sposób jak by sugerowała nota aplikacyjna do odczytu sekwencyjnego.
Połączenia sprawdzone 100x i są poprawne, filtracja napięcia również.
Ktoś ma jakieś pomysły ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 maja 2020, o 16:11 
Offline
Nowy

Dołączył(a): 06 cze 2014
Posty: 8
Pomógł: 0

Problem rozwiązany i w sumie nie do końca wiem w jaki sposób :D
Po pierwsze to zauważyłem że adresacja rejestrów nie idzie po kolei jak do tej pory myślałem natomiast dlaczego teraz odczytuję poprawne wartości z rejestrów koloru to ja nie wiem. układ był odłączony od prądu przez noc i może się namyślał ? :D kto wie...
Temat do zamknięcia.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 9 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