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



Teraz jest 25 kwi 2024, o 14:01


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 29 sty 2019, o 22:31 
Offline
Nowy

Dołączył(a): 17 lip 2013
Posty: 3
Pomógł: 0

Witam
Jak w temacie próbuję odczytać dane z MCP3021A0T używając programowej interpretacji I2C. Napisałem program w oparciu o BlueBook-a i jakoś nie bardzo działa, choć według mnie jest napisany dobrze . Prośba żeby ktoś zerknął.
Obecnie sytuacja wygląda tak że:
- gdy bateria na pin AIN nie podaję zasilania odczyt wygląda następująco:
Obrazek
- natomiast gdy podłączę sygnał na AIN:
Obrazek

Dodam że zasilanie jest 3.27[V] a sygnał na AIN jest 3[V]. Niestety nie mam oscyloskopu żeby podejrzeć co się dzieje na liniach :(
Poniżej kod programu.
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: 30 sty 2019, o 19:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 cze 2013
Posty: 988
Lokalizacja: Byram, MS 39272
Pomógł: 55

Pierwsze pytanie. Gdzie masz inicjalizacje. Drugie pytanie. Dlaczego "if ( 0x91 & i ) I2C_SDA_HI;"?
Tu masz przykład software'owego I2C. Porównaj. Jak dla mnie w programie narobiłeś baboli z tym kiedy ma być stan wysoki, a kiedy niski. Ale to tylko taki rzut okiem przez 5 sekund. Zajrzę do tego po pracy :)
http://extremeelectronics.co.in/avr-tutorials/software-i2c-library-for-avr-mcus/

_________________
Pomysły na podpis - wyślij SMSa +1 769 243 0011



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 sty 2019, o 20:58 
Offline
Nowy

Dołączył(a): 17 lip 2013
Posty: 3
Pomógł: 0

Dziękuję, że się zainteresowałeś tematem.
Wkleiłem tylko część kody bez inicjalizacji. Ogólnie cała napisana biblioteka działa z innymi urządzeniami takimi jak np. akcelerometr. Głównym autorem tego rozwiązania jest Autor Blue Book-a. Nie dodałem, że HDEL jest równe _delay_loop_1(3) przy taktowaniu procesora 11,059200 MHz.

- Dlaczego "if ( 0x91 & i ) I2C_SDA_HI;"? -> 0x91 to adres do odczytu tego urządzenia a i jest maskowaniem kolejnych bitów. Czyli jeśli z maskowania danego bitu otrzymamy 1 to ustawiamy linię SDA w stan wysoki.

- Obawiam się że problem leży w hardware-rze :( Ale nie zaszkodzi się upewnić czy program jest dobry ponieważ tu jest kosmetyczna różnica w komunikacji w porównaniu z innymi urządzeniami działającymi z wykorzystaniem I2C

- Przed napisaniem tego postu włączył lutownicę, żeby sprawdzić jeszcze raz połączenia lutowane pomiędzy płytką a układem. Przed skończeniem pisania poprawiłem luty i WSZYSTKO DZIAŁA!!!!!!!!. Po prostu była jedna z nóżek od komunikacji źle przylutowana.
Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 sty 2019, o 21:03 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 cze 2013
Posty: 988
Lokalizacja: Byram, MS 39272
Pomógł: 55

No i git. Jak widać czasem trzeba komuś/czemuś przylutować żeby zadziałało! :P

_________________
Pomysły na podpis - wyślij SMSa +1 769 243 0011



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

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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO