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



Teraz jest 16 sty 2025, o 19:52


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
Autor Wiadomość
PostNapisane: 10 maja 2013, o 17:47 
Offline
Nowy

Dołączył(a): 25 mar 2013
Posty: 7
Pomógł: 0

Witam.

Od jakiegoś czasu próbuję zastosować ten przetwornik, niestety bez rezultatu. Po wysyłaniu bitów odpowiada on bitem ACK na adres oraz na kolejne bajty, niestety podczas odczytu widać, że nie wszystkie bity są poprawnie zapisane. Przykładem jest komenda ustawienia Configuration Bits (strona 53 w datasheet). Wysłanie bajtu 10000000 sprawi, że odczytany bit będzie miał wartość 11000000, co daje poprawy wynik. Również dla wartości 10000001 otrzymamy bit 11000001, również dobrą wartość. Niestety, dla wysłania na przykład wartości 10000011, otrzymamy zły wynik (11001011). Układ lutowany był dwukrotnie, więc nie wydaje mi się żeby była to wina złego podłączenia. Piny SCL i SDA podpinam na PC0 i PC1 ( na zestawie uruchomieniowym ATB) i używam programowej wersji I2C z książki Pana Mirka. Nie wiem też czy możliwe jest, że jakiś wpływ na to ma podłączony na tych portach standardowo RTC i EEPROM. Dodam także, że zapisywanie za pomocą TWI zmienia wartość tak samo jak zapis za pomocą programowej implementacji, jednak odczyt przez TWI sprawia, że procesor się zawiesza ( czyli tak, jakby układ nie był nawet podłączony). Układ taktowany jest 1 MHz. Proszę bardzo o pomoc i porady, ewentualnie, jeśli ktoś używał tego przetwornika o działający kod lub porady. Poniżej przedstawiam swój kod:

Kod:
   i2c_init();
   lcd_init();

   sei();

   uint8_t tmp=0, test=0, b1=0, b2=0;
   
   I2C_START();
   tmp = i2cPutbyte(11000000);
   if (tmp==0) test++;
   tmp = i2cPutbyte(10000111);
   if (tmp==0) test++;
   I2C_STOP();
   
   I2C_START();
   i2cPutbyte(11000000);
   I2C_REP_START();
   i2cPutbyte(11000001);
   b1=i2cGetbyte(1);
   I2C_STOP();
   
   lcd_int(b1);


Z góry dziękuję za pomoc.

Pozdrawiam,
Witnes



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 maja 2013, o 20:03 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

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

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

Podobnie w innych przypadkach, bo tak jak wyżej to liczba dziesiętna 11000000 = 0b101001111101100011000000 co po niejawnej konwersji daje 0b11000000, czyli przypadkiem poprawną wartość :roll:


Autor postu otrzymał pochwałę

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 maja 2013, o 15:00 
Offline
Nowy

Dołączył(a): 25 mar 2013
Posty: 7
Pomógł: 0

Dziękuję bardzo za radę, faktycznie okropny i oczywisty błąd którego nie zauważyłem przez tyle dni prób. Chociaż nie ma tego złego co by na dobre nie wyszło, w przyszłości na pewno nie popełnię już podobnego błędu. Jeszcze raz wielkie dzięki.

Pozdrawiam
Witnes



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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