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



Teraz jest 18 mar 2026, o 13:56


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
PostNapisane: 5 mar 2014, o 21:48 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2012
Posty: 97
Lokalizacja: Tarnów
Pomógł: 2

Witam

Pisałem już w innym temacie o moim problemie z MAX3378, ale doszedłem do wniosku że problem tak naprawdę leży gdzie indziej, stąd ten nowy temat. Do rzeczy: chodzi o komunikację ATmega32 pracująca przy napięciu 3,3V z komputerem za pomoca prostej taniej przejściówki RS232(TTL) - USB z popularnego serwisu aukcyjnego np. takie coś
Obrazek
Po przyglądnięciu się temu stworkowi zauważam że nie ma tam żadnego bufora więc obsługuje tylko komunikację z poziomami TTL bo z USB dostarczane jest 5V. Jest co prawda niby wyprowadzone 3,3V ale to mi się wydaje że jest chyba zrobione przez jakiś dzielnik. W każdym bądź razie zrobiłem sobie najpierw konwerter dwukierunkowy na MAX3378 (temat o nim tutaj topic5189.html). Testowa komunikacja polegała na wysłaniu stringa z atmegi do komputera "Przycisk 1" lub "Przycisk 2" z użyciem takiej funkcji:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


(przy poziomach TTL wszystko ładnie się wysyłało). Tutaj niestety wystąpił problem w postaci niekompletnie odebranych danych. Ten sam test wykonałem z buforem 74LVC125 (zasilony napięciem 5V, na wejście wchodzi sygnał TX z Atmegi o poziomie 3,3V, na wyjściu do RX konwertera wchodzi już 5V). Dalej otrzymałem niekompletne dane.

Podpiąłem oscyloskop aby obejrzeć dokładnie co tam się wysyła i proszę co otrzymałem, zarówno w pierwszym jak i drugim przypadku:
(dla MAX3378)
Obrazek

(dla 74LVC125)
Obrazek

Więc wygląda na to że bufory w obydwu przypadkach pracują poprawnie. Tam na wykresach jest co prawda dla jednego kanału podziałka ustawiona na 2V dla drugiego 5V (cholerny autoset :D) więc wysokość wychodzi na odwrót ale poziomy są poprawne i czasy narastania przyzwoite więc raczej nie powinno być żadnych błędów z interpretacją danych. W pierwszym co prawda to zbocze trochę długo narasta ale kompinowałem z kondensatorami przy zasilaniu i puszczaniem lini przez rezystory, wcześniej otrzymałem przebieg który lepiej wyglądał ale go nie zapisałem. W każdym bądź razie, zakładam że konwertery są okey. W takim razie co jest nie tak że nie odbieram poprawnie danych tylko przeplatane litery jakimiś prostokątami ? Wrzucam jeszcze funkcję do transmisji (pisana na podstawie dokumentacji i przy 5V wszystko działa więc nie wiem w czym może być problem).
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Nie żeby mi jakoś strasznie zależało na tej komunikacji ale w tym przypadku zżera mnie ciekawość co tutaj jest nie tak do tego stopnia że nie dam za wygraną dopóki nie rozwiążę tego problemu, chyba że wcześniej mi nerwy puszczą i wywalę to wszystko do kosza. Może ktoś coś podpowie, bo narazie skończyły mi się pomysły.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 mar 2014, o 12:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lut 2014
Posty: 293
Lokalizacja: Jaskółowo k. Warszawy
Pomógł: 9

Hey.
Próbowałeś tą przejściówkę łączyć z jakimś innym urządzeniem?
Może masz zamienione linie TX z RX?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 mar 2014, o 13:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2012
Posty: 97
Lokalizacja: Tarnów
Pomógł: 2

Linie TX i RX są połączone prawidłowo. Komunikacja przy 5V działa prawidłowo, z 3,3V jest problem bo nie wszystko dochodzi. Próbuje właśnie teraz połączyć dwie atmegi pracujące przy różnych napięciach i zobaczymy co wyjdzie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 mar 2014, o 16:34 
Offline
Użytkownik

Dołączył(a): 19 lut 2013
Posty: 26
Pomógł: 2

spróbuj może na jakiś małych prędkościach bo może bufory nie wyrabiają.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 mar 2014, o 21:58 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2012
Posty: 97
Lokalizacja: Tarnów
Pomógł: 2

Wydaje mi się że bufory raczej wyrabiają. Widać to zresztą po przebiegach. Ale sprawdziłem to jeszcze przy komunikacji SPI między ATmega32 (5,0V) i ATmega48 (3,3V). Wszystko bez problemu się przesyłało. Co do MAX3378 to zgodnie z dokumentacją dla VCC do 3,3 V bufory spokojnie powinny wyrabiać przy 10 Mbps a do 8 Mbps przy VCC 5,5V więc take 9600 bps przez UART nie powinno stanowić problemu, zwłaszcza że jak sprawdziłem SPI śmiga. No nic, nie mam już sił psychicznych żeby się nad tym dłużej zastanawiać. Odkładam to na półkę z innymi jak narazie "niewyjaśnionymi" zjawiskami.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 mar 2014, o 23:10 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2012
Posty: 97
Lokalizacja: Tarnów
Pomógł: 2

Tak masz rację Antystatyczny, moje niedopatrzenie, oczywiście że chcę w tym przypadku inkrementować adres a nie jego zawartość. Sęk jednak w tym że ta funkcja, mimo tego błędu działała dobrze ale tylko przy tych samych napięciach, bez stosowania buforów. Po poprawieniu funkcji, sytuacja nie uległa zmianie więc to jednak nie w tym problem, ale dzięki za zwrócenie uwagi na ten, jak by nie było jednak błąd.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 mar 2014, o 23:28 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

Antystatyczny napisał(a):
Masz *str++; a ja odnoszę wrażenie, że powinieneś mieć str++; (czyli inkrementacja adresu, a nie zawartości, na który wskazuje)


Priorytet operatora inkrementacji jest wyższy niż operatora wyłuskania czyli *str++ równa się *(str++) więc to nic nie zmienia.
Chociaż ta * jest tam bez sensu, ja bym tam widział raczej usart_transmit(*str++);. Tak czy inaczej nic to nie zmienia.

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 mar 2014, o 14:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2012
Posty: 97
Lokalizacja: Tarnów
Pomógł: 2

Cenna uwagą xor na temat priorytetu operatorów. Co do funkcji, jak by nie była napisana, to działa więc dalej nie wiadomo w czym tkwi problem.



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

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