komunikacja z MAX232 i bez w TTL jak ?

Nov 17, 2005 29 Replies

Witam, robie wlasnie urzadzenie ktore bedzie wspopracowac po RS232 z innymi urzadzeniami. Knif lezy w tym ze niektore z tych urzadzen maja max232 na pokladzie i gadaja w standardzie RS'a a niektore w standardzie TTL



Pytanie jak to pogodzic aby mozna bylo zmusci uC (89c2051) do rozmowy z dwoma typami urzadzen ?



Myslalem o tym aby uzyc przelacznika mechanicznego ktory raz poda wyjcia z maxa a raz wyjsca bezposrendio z procka...ale wydaje mi sie to malo eleganckie do tego wymaga podwojnego przelacznika


Po pierwsze to RS232 zasadniczo dziala jeden w jeden, wiec musisz sprecyzowac ile masz oddzielnych portow RS w uC i jak ewentualnie chcesz je laczyc/przelaczac. Wtedy moze ze wyjdzie samo.

Zle mnei rozzumiales ... jest to urzadzenie ktore wspopracuje z innym po RS232 , tyle ze to z ktorym ma wsoppracowac raz przez producenta X dziala w standardzie RS bo ma max232 na pokladzie a innnym razme od producetna Y dziala w standardzie RS TTL

Moj uklad dziala w jednej chwili tylko z jednym typem urzadzenia po czym po odczytaniu pewnych wartosci jest odlaczany i wylaczane.

Chodzi o to ze chce zrobic ten swoj ukladzi uniwersalnym niezaleznie czy ktos podepnie go do urzadzenia producenta X czy Y ma miec mozliwosc odczytania pewnych parametrow.

Tutaj jest problem bo takie urzadzenie ktore wewnatrz ma max232 i na zewnatrz dziala ze zwyklym RS232 to bezposrednio z prockeim nie dogada sie tylko musi miec drogiego MAX232 ktory odkoduje to zpowrotem na TTL

Nie wiem na ile udalo mi sie to wyjasnic ... mam nadzieje ze mwaire jasno opisalem swoj problem :)

formatting link
do srodka max'a i uzywaj w razie potrzeby...

Użytkownik Robgold napisał:

Mam nadzieję, że dobrze cię zrozumiałem. Standardowo w standardzie RS

232 jest 1 logiczna więc na wyjściu mikrokontrolera dajesz od razu bezpośrednio a na wejściu mikrokontrolera podłączasz przez diodę MAX i przez diodę TTL. przez co korzystasz raz z jednego raz z drugiego. Jeżeli interesuje cię dokładniejszy schemat pisz na priv. Rozwiązanie sprawdzone i przetestowane.

Witam, Alternatywa do rozwiazania bad_skippera (czyli do przejsciówki), to cos, co mam zaimplementowane w jednym urzadzeniu, które kupilem. Ma ono wyprowadzenie TTL (czyli kilka pinów), drugie wyprowadzenie RS (czyli standardowa rsowa wtyczka) i zworke - jak zworka wsadzona, to odczytuje z TTLa, a jak wyjeta - to z RSa i przepuszcza sygnal przez max232.

Cos, co mi chodzi po glowie - czy nie da sie tego zrobic bez zadnych przelaczników? Poprostu podpiac do ukladu max232, za max232 standardowa wtyczke 9-pin, a przed max232 (czyli tam gdzie sa poziomy TTL) - wyjscie TTL? Póki nikt nie podepnie obu na raz, powinno dzialac chyba dobrze?

Pozdrawiam, Merlin

Wyjście z MAX232 (to do procesora) wymnóż z sygnałem z wejścia RX w standardzie TTL. Możesz to zrobić bramką NAND np 74LS00 a drugą taką bramką zaneguj wynik i wpuść na RX procka. Jeszcze trzeba to wejście "TTLowe" w bramce NAND podciągnąć do +5V żeby wisząca luzem miała logiczne 1 i gotowe. Jak podepniesz się do RS232 to działa 232 jak pod TTL to działa TTL. Nawet działałyby oba naraz - jeśli tylko nie chciałyby naraz nadawać :) Oczywiście istotne jest aby mnożyć na odbiorze bo nadawać to możesz na oba interfejsy naraz.

TYlko ze wejscie TTL i RS to te same piny.

Jest sobie moje urzadznie ze standarodwym gniazdem DB9 Raz do tego gniazda podpina sie urzadzenie ktore dzial w RS a raz takie ktore dziala w RS TTL ...

I jak to rozwiazac bez przelacznikowo aby uklad sam wiedzial ze w danym momencie ma zapiete pod wejscie urzadznie X a raz Y i odpowiedni puscil na porty albo przez MAX'a ?

Przyznam, że nie chciałoby mi się kombinować. Dałbym dwa gniazda. Jedno opisane TTL a drugie RS232

Wyprostuj pełnopołówkowo napięcie na RX na gniezdzie. Do tego jakiś filtr i daj na komparator. Z wyjścia sterujesz przekaźniki elektromechaniczne albo półprzewodnikowe.

jak zareagują te z RS TTL jak im podać +/-12V na linie danych? A jak na

-5V? Mają zabezpieczenia, czy na żywca?

wyprostować napięcie TXD z podłączonego układu i jak więcej jak 5V, to wrzucić negację w tor odbiorczy + negację w nadawczy. Uodpornić wejście na

+/-12V w dowolny sposób z zenerką i opornikiem włącznie.

Nie bardzo - ktos skorzysta z TTL, a maxio tam wystawi stan logiczny adekwatny do niepodlaczonego gniazda - czyli 1.

Przydalaby sie bramka AND.

J.

Musi tak byc? Nie lepiej dac oddzielne gniazdko na TTL i oddzielne (byc moze rozne) na RS?

U¿ytkownik "Robgold" <robgold ANTYSPAM @interia.pl> napisa³ w wiadomo¶ci news:dlij10$nlv$ snipped-for-privacy@atlantis.news.tpi.pl...

MAX202 dobrze odbiera transmisjê nadawan± na 0/5V (MAX232 pewnie te¿). P.G.

Ale logika będzie odwrotna.

Uzna³em, ¿e to jest dla pytaj±cego oczywiste, poda³em tylko kluczow± informacjê pozwalaj±c± rozwi±zaæ problem. P.G.

OK to ma rozwiązany problem pod względem wytrzymałości na +-12V i jednoczesnej czułości wystarczającej do detekcji stanów TTL. Potrzebna jeszcze detekcja jaki standard jest podpięty. Gdy jest TTL to trzeba zanegować obie linie czyli RX i TX na drodze do procka. Można to zrobić bramką XOR np LS86 sterowaną z tego detektora.

U¿ytkownik "Mariusz Dybiec" snipped-for-privacy@poczta.onet.pl> napisa³ w wiadomo¶ci news:dlkb4u$o0u$ snipped-for-privacy@news.onet.pl...

Pisa³em o jedynym istotnym problemie - ¿e prawdopodobnie mo¿e nadawaæ 0/5V. Odbiór jest banalny.

Zamiast kombinowaæ mo¿e odbieraæ RS232 programowo - jego wybór wiêc nie porusza³em tematu. P.G.

Niestety nir bo czlowiek ktory podpinac bedzie to urzadzenie nie ma pojecia czy akurat trafila mu sie wersja RS czy TTL to wiadomo ze specyfikacji ... ale niestety oba X i Y maja takie samo zlacze w sobie wiec o pomylke nie trudno.

Reasumujac

MAX 232 powinie bez problemowo przyjmowac komunikacje z lini TXD zarowno w TTL jak i RS

problem jedynie lezy w lini RXD gdzie moga pojawic sie napiecia za wysoki. Tutaj musze wstawic zenerke aby ograniczyc do 5V napiecie

Dodatkowo pobrac sobie TXD wyprostowac , i jesli U>5V to wlaczyc negatory na drodze od maxa do procka np na bramkach tak ?

Poprawcie mnie jesli sie gdzies pomylilem

Nie musisz bo przecież RX wchodzi na MAX202 ( bądź 232) który akceptuje 12V.

Na twojej płytce to jest RX - sygnał który przychodzi od obcego urządzenia. i jesli U>5V to wlaczyc negatory na

Gdy MNIEJSZE od 5V. Bo w RS232 jest zawsze standardem że -12 to 1 czyli 5V na TTLu a +12V to 0 czyli 0V. A przy transmisji TTLowej MAX ci niepotrzebnnie odwróci.

Pomyliłeś się :). Reasumując: MAX202 ( a MAX232 musisz sprawdzić w pdf)dobrze odbiera stany logiczne

0V ; 5V jak i -12V +12V. Tylko, że zapewne -12 i 0 jest tak samo identyfikowane i po stronie TTL da logiczne 1 czyli 5V. W przypadku RS232 to prawidłowe ale zanegował ci interfejs TTLowy. Identycznie 5V i +12V da po stronie TTL 0V. Czyli odwraca ci transmisję "TTL-ową". Musisz dać detektor sprawdzający co podpiąłeś np taki żeby dawał ci 1 gdy napięcia są TTL-owe czyli np mniejsze co do wartości bezwzględnej od 6V. Czyli prostownik i jeden komparator na wartośc bezwzaględną albo po prostu dwa komparatory na wartość URX<0V i URX>5V i ich suma logiczna. Ten sygnał wrzucasz na bramki XOR przez które przechodzą sygnałe RX i TX do procka. Stan 1 na jednym wejsciu bramki XOR powoduje że bramka działa jak negator dla sygnału wchodzącego na drugie wejście. Jeśli w procku masz obsługę programową RS a nie sprzętową to możesz sobie darować XOR a sygnał z detekcji wrzucić do procka i zrobić odwracanie logiki gdy transmisja TTL.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required