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ś

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:
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)

(dla 74LVC125)

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

) 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).
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.