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



Teraz jest 15 lut 2025, o 22:22


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
Autor Wiadomość
PostNapisane: 5 cze 2016, o 15:41 
Offline
Nowy

Dołączył(a): 23 maja 2016
Posty: 8
Pomógł: 0

Jest to mój pierwszy post, chciałbym zatem powitać "atnelowską" brać ;)

Napotkałem na problem podczas komunikacji MCP3424 z Atmegą32.

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.


W czym problem?

Powyższy program odczytuje wartość temp z wewnętrznego ADC atmegi, do którego podłączony jest LM35, po czym wysyła go na LCD oraz przez UART. Ta część działa poprawnie, chciałbym jednocześnie odczytywać ADC z MCP3424 po I2C i tu jest problem, zakomentowałem 4 linijki kodu, gdyż wtedy działa on poprawnie. Po usunięciu komentarzy nic nie pojawia się na LCD oraz na terminalu, program się zawiesza.

MCP3424 jest bardzo podobny do MCP3421, różnią się ilością kanałów i mozliwością zmiany adresu, mam BB, oglądałem poradniki ADC, wg nich pisałem program. Użyłem też programu pana Mirka z poradnika ADC odc5 (zmieniając oczywiście wejście wewn ADC na PA5) i ten sam problem, program nic nie wyświetla w terminalu oraz LCD.

W tym ADC mogę ustawiać adres przełącznikami:

[ a kolega to nie wie jak się zamieszcza fotki wg instrukcji topic44.html na naszym forum? proszę poprawić - mirekk36 ]

W moim przypadku jest ustawiony na "00, czyli adres powinien być: 0b11010000, jednak nie działa.

Pewnie popełniam błąd, proszę o "oświecenie" :D



Ostatnio edytowano 5 cze 2016, o 16:57 przez bytnar_04, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 cze 2016, o 15:54 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

0b11010000 to 0xD0
Pozycja A-1 i B-1 to 0x6E lub jak wolisz 0b01101110
Pozycja A-0 i B-0 to 0x68 lub jak wolisz 0b01101000



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 cze 2016, o 16:11 
Offline
Nowy

Dołączył(a): 23 maja 2016
Posty: 8
Pomógł: 0

Przypisanie MCP_ADR 0b01101000 i ustawienie suwaków w pozycji "00" nie pomaga, próbowałem tego też już wcześniej...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 cze 2016, o 16:16 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 mar 2016
Posty: 85
Pomógł: 5

a jak wyglada MCP_read_buf ,MCP_write_buf

_________________
I'M



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 cze 2016, o 16:18 
Offline
Nowy

Dołączył(a): 23 maja 2016
Posty: 8
Pomógł: 0

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: 5 cze 2016, o 17:08 
Offline
Użytkownik

Dołączył(a): 20 mar 2012
Posty: 159
Pomógł: 6

A na czym testujesz ten program ATB czy jakaś stykówka, masz na niej podłączone rezystory podciągające na magistrali I2C ?
Czy w eclipsie poprawnie masz zadeklarowaną wartość dla kwarca, czy nie masz czasem włączonego dzielenia częstotliwości przez 8 w fuse bitach?
Kod wygląda na poprawny sam uruchamiałem ten układ bez najmniejszych problemów



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 cze 2016, o 17:36 
Offline
Nowy

Dołączył(a): 23 maja 2016
Posty: 8
Pomógł: 0

Program testuję na takiej oto płytce:

[ a kolega to nie wie jak się zamieszcza fotki wg instrukcji topic44.html na naszym forum? proszę poprawić - mirekk36 ]

dołożony LCD i stukówka, a na niej jedynie płytka z zewnętrznym ADC jak na zdjęciu powyżej.

Procek to Atmega32A SCL podłączone do PC0, SDA do PC1.

Rezystory podciągające są zamontowane na tej płytce z MCP3424 i mają wartość 1k, wiem że powinny być 4,7k, ale to chyba nie stanowi problemu, pan Mirek wspominał w poradniku, że przy większych prędkościach komunikacji takie są właśnie wymagane.

W mkAVR Calcukatorze wewnętrzny oscylator ustawiony na 8MHz, tak samo w eclipse 8000000 i Atmega32. Wydaje się, że ustawione poprawnie gdyż sam UART oraz wewnętrzny ADC działają.

Co ciekawe by zaprogramować układ za każdym razem muszę wyjąć i włożyć ATB USBASB 4.1, ale to osobny temat.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 cze 2016, o 18:17 
Offline
Użytkownik

Dołączył(a): 20 mar 2012
Posty: 159
Pomógł: 6

Jeśli adresy są poprawnie ustawione tak samo jak na pinach układu (dla pewności sprawdzić miernikiem) i w kodzie to ja niestety nie widzę przyczyny nie działania układu przejrzałem swój kod wszystko jest identycznie.
W swoim układzie obydwa piny adresowe do masy (Adres na magistrali #define MCP_ADR 0b11010000)
Odczytanie danych z układu mam identycznie rozwiązane.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Jeśli nadal nie uda się rozwiązać problemu to sprawdź czy nie masz jakiegoś błędu w bibliotekach od I2C przepisywałeś je z książki czy skopiowałeś z płyty, poprawiłeś błąd zgodnie z eratą:
http://atnel.pl/i2c_twi_lib_stop_error.html



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 cze 2016, o 22:01 
Offline
Nowy

Dołączył(a): 23 maja 2016
Posty: 8
Pomógł: 0

Oba suwaki są ustawione w pozycję "przewodzenia", a więc piny są podłączone do masy, sprawdziłem miernikiem.

schemat:
Obrazek

Biblioteki skopiowane z książki, z tej z twardą okładką, rozszerzone oczywiście o MCP_read_buf, MCP_write_buf.

Ten wykrzyknik wg erraty usunięty został już wcześniej.

Będę wdzięczny za dalsze sugestie forumowiczów... :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 cze 2016, o 23:43 
Offline
Nowy

Dołączył(a): 23 maja 2016
Posty: 8
Pomógł: 0

Jak się okazało dołożenie dwóch dodatkowych rezystorów podciągających o wartości 4,7k załatwiło sprawę, program "ruszył" :D



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

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