logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

USB(FT232) oraz RS-232 podlaczone razem do ATmega32L

kolanopan 19 Kwi 2008 21:07 3104 12
REKLAMA
  • #1 5055023
    kolanopan
    Poziom 12  
    Posty: 82
    Pomógł: 5
    Witam

    Mam w projekcie do realizacji łączenie się z komputerem przez RS-232, oraz przez USB, podłączyłem wszystko zgodnie ze specyfikacją. Całość działa na poziomie logicznym 3,3V. Jako układ do obsługi USB użyłem FT232RL, do konwersji rs-232 posłuzyłem się układem AD3232E, odpowiednik MAX3232, czyli zwykły MAX'iu ale na poziomy logiczne po stronie elektroniki 3,3V.

    USB(FT232) oraz RS-232 podlaczone razem do ATmega32L

    Problem jest taki, odbieranie z obu działa dobrze. Problemem jest wysyłanie, gdy jeden układ nadaje drugi daje na wyjściu logiczne zero, tym samym nigdy sygnały nie dochodzą do mikrokontrolera, lecz są zwierane do masy poprzez drugi układ. Jak zatem zrealizować podłączenie tych obu układów do komputera, myślałem o jakiś bramkach, jednak gdy port rs-232 jest otwarty - dane nie są wysyłane to daje na linii stan wysoki, ręce mi opadają i nie mam pomysłu jak to zrealizować. mogę z mikrokontrolera poprowadzić jedną linie do wyboru który z układów ma działać, ale jak wykorzystać ten sygnał?? Nie ma konieczności aby oba układy działały jednocześnie.

    będę wdzięczny za pomoc, troche sie rozpisałem, ale mam nadzieje ze dzięki temu będziecie potrafili mi lepiej pomóc, znając dogłębniej problem z jakim walczę
  • REKLAMA
  • REKLAMA
  • #3 5055314
    marenc
    Poziom 24  
    Posty: 881
    Pomógł: 37
    Ocena: 5
    Czy przewidujesz w swoim projekcie, że ktoś będzie korzystał jednocześnie z portu COM oraz USB? To drobna niedorzeczność...

    Możesz to rozwiązać budując mini-token-ring czyli przesyłanie danych po wszystkich klientach do ich powrotu do właściciela. Problemem takiego rozwiązania jest niekonwencjonalne oprogramowanie oraz konieczność fizycznego łączenia TxD<->RxD, gdy dane urządzenie nie jest aktywne.
  • #4 5055338
    kolanopan
    Poziom 12  
    Posty: 82
    Pomógł: 5
    kolanopan napisał:
    Nie ma konieczności aby oba układy działały jednocześnie.


    Chyba źle zrozumiałeś, jeden procek i dwa konwertery, jeden dla RS232 drugi dla USB, wiec jaki ring??

    bufor 3 stanowy, hmmm ale musiały by to być bramki działające na 3,3V seria LVC wchodzi tylko w grę.

    Problem pozostaje nadal nierozwiązany
  • #5 5055370
    marenc
    Poziom 24  
    Posty: 881
    Pomógł: 37
    Ocena: 5
    Z Twojego grafu wygląda, że dane z FT wysyłasz do AD i ATmega32. A dane wysyłane przez AD lub ATmega32 lądują w FT. Nie ma innej opcji przekazywania danych. To nie ma prawa działać w ten sposób.

    Co do działania to bufor 3-stanowy wyrywający stan HIGH lub LOW(nie pamiętam dokładnie standardu RS232C), który będzie odłączał ten niepotrzebny układ(nie wiem który, bo nie jestem w stanie sobie wyobrazić jak by to miało działać na tym przykładzie).

    //Prawidłowo wg. mnie powinno być:
    ATmega32(TxD) -> AD(RxD) & FT(RxD)
    ATmega32(RxD) -> AD(TxD) & FT(TxD)

    ////I jak podłączysz w sposób powyżej to pojawia się błąd o którym pisałeś. Układ bramek - raczej zanegowanych, aby tego '1' na wyjściu nie było po odłączeniu tych układów.

    //////A w zasadzie OR i układ wykrywania błędnych ramek w ATmega32 ;)

    ////////Albo OR z dwoma rezystorami do masy na wejściach i po problemie :D
  • REKLAMA
  • #6 5055457
    Balu
    Poziom 38  
    Posty: 4397
    Pomógł: 323
    Ocena: 48
    Kolega na 99% źle narysował schemat bo napisał ,że chodzi mu o dostępność albo RSa albo USB.
    I napisał również, że mógłby sterować jedną linią wyborem urządzenia.
    Więc gdzie tu problem z buforem?
  • #7 5055542
    marenc
    Poziom 24  
    Posty: 881
    Pomógł: 37
    Ocena: 5
    AD wymusza LOW podczas nadawania FT(używania do nadawania przy nieużywanym AD). Linia TxD jest więc podłączona do masy ... i tu cały trick.

    Bramka OR z dwoma rezystorami do masy na wejściu powinna podołać sprawie.
  • #8 5056091
    kolanopan
    Poziom 12  
    Posty: 82
    Pomógł: 5
    Schemat był poglądowy, linie w FT są jakby na odwrót, tak sobie producent ustalił. Kazdy z układów działa osobno, a razzem jest kolizja która już wcześniej opisałem. w tygodniu zakupie części i bede testował dalej dzięki Jj_Johnys za wskazówki (z PW)
  • REKLAMA
  • #9 5057069
    adamusx
    Poziom 27  
    Posty: 977
    Pomógł: 94
    Ocena: 28
    Witam.
    Kolizja wystepuje dlatego, ze jeden z ukladow gdy nie nadaje zawsze trzyma linie TxD w stanie niskim lub wysokim.
    Nie pamietam juz dokladnie jaki jest poziom logiczny na UARCIE gdy nie nadaje, ale jesli jest to stan wysoki to wystarczy dodac diody blokujace jak na schemacie ponizej. Jeśli stanem "spoczynkowym" jest "0" to nalezy diody wlaczyc odwrotnie i rezystory podciagajace dac do masy. Oczywiscie uklad bedzie działać gdy w jednym czasie będzie nadawać tylko jedno urządzenie.

    USB(FT232) oraz RS-232 podlaczone razem do ATmega32L
  • #10 5058967
    kolanopan
    Poziom 12  
    Posty: 82
    Pomógł: 5
    Takie rozwiązanie testowałem, ale nie było stabilne, raz działało raz nie, chodzi chyba o spadek napięcia przez diodę, stany logiczne w układzie to 3,3 lub 3V Spadek na diodzie 0,7 jest zatem znaczny.
    Rozwiązanie problemu będzie jednak na buforze trójstanowym, zamówiłem dzisiaj układy z serii niskonapięciowej LVC, bo niemożna ich kupić tak od ręki w sklepie, powinny przyjść w ciągu tygodnia, podłącze i zobaczymy jak będzie śmigać. W symulacji działa :D:D:D
  • #11 5059123
    adamusx
    Poziom 27  
    Posty: 977
    Pomógł: 94
    Ocena: 28
    kolanopan napisał:
    Takie rozwiązanie testowałem, ale nie było stabilne, raz działało raz nie, chodzi chyba o spadek napięcia przez diodę, stany logiczne w układzie to 3,3 lub 3V Spadek na diodzie 0,7 jest zatem znaczny.
    Rozwiązanie problemu będzie jednak na buforze trójstanowym, zamówiłem dzisiaj układy z serii niskonapięciowej LVC, bo niemożna ich kupić tak od ręki w sklepie, powinny przyjść w ciągu tygodnia, podłącze i zobaczymy jak będzie śmigać. W symulacji działa :D:D:D


    Hmm dziwne, ja takie coś stosowałem nie raz i sprawdzało się dobrze. Spadek na diodzie nie ma tu znaczenia, jeśli z TX idzie 0 to jest zwarcię do masy,a jeśli jest to stan wysoki to dioda go blokuje i wówczas rezystor podciągający wymusza stan wysoki. Może zmien wartości rezystorow. Sprawdz tez jaki stan jest na nozkach Tx gdy urzadzenia nie nadają i jakie wartośi napięć mają stany wysoki i niski dla tego AD3232.
  • Pomocny post
    #12 5059752
    johny_w
    Poziom 24  
    Posty: 671
    Pomógł: 80
    Ocena: 63
    Praktyczny schemat wykorzystania bufora. Na schemacie widoczne zasilanie +5V, ale po zamianie maxa na 3232 i układu zasilania FT232 zgodnie z notą można dostosować do +3,3V.

    Ustawiając CTRL0 w stan niski, a CTRL1 w stan wysoki odcinamy FT, a maxa podłączamy do uC. Zamieniając stan linii sterujących odcinamy maxa, a podłączamy FT.
    Rezystory polazyrujące R19 i R20 odcinają oba układy przy braku sygnałów z uC (np. reset).

    P.S. Punkty za schemat ustawił system. Ja ustawiłem "rezygnuję z prowizji!!!". Widocznie chodzi o rozmiar pliku.
    Załączniki:
    • USB(FT232) oraz RS-232 podlaczone razem do ATmega32L schemat.jpg (369.83 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #13 5063235
    kolanopan
    Poziom 12  
    Posty: 82
    Pomógł: 5
    Dzięki Jj_Johnys za schemat, coś identycznego zrobię jednak na 74LVC244 zamiast 74...125

Podsumowanie tematu

✨ W projekcie z mikrokontrolerem ATmega32L występuje problem z jednoczesnym podłączeniem interfejsów USB (FT232RL) oraz RS-232 (AD3232E, odpowiednik MAX3232) działających na poziomie logicznym 3,3V. Odbiór danych działa poprawnie, natomiast podczas nadawania sygnały z jednego układu są zwierane do masy przez drugi, co powoduje kolizję i brak poprawnej transmisji. Dyskusja wskazuje, że problem wynika z braku izolacji linii TxD obu konwerterów, gdy jeden nadaje, a drugi utrzymuje linię w stanie niskim lub wysokim. Proponowane rozwiązania obejmują zastosowanie buforów trójstanowych (np. układów z serii LVC, takich jak 74LVC244), które pozwalają selektywnie odłączać nieużywany konwerter, eliminując kolizję sygnałów. Alternatywnie sugerowano użycie bramek logicznych OR z rezystorami podciągającymi lub diod blokujących, jednak te metody mogą powodować niestabilności ze względu na spadki napięć na diodach i różnice poziomów logicznych. Ostatecznie rekomendowany jest układ sterowania liniami wyboru (CTRL) do aktywacji jednego z konwerterów, co zapewnia stabilną i bezkolizyjną komunikację z komputerem przez RS-232 lub USB. Schematy i testy symulacyjne potwierdzają skuteczność rozwiązania z buforami trójstanowymi LVC dostosowanymi do napięcia 3,3V.
Wygenerowane przez model językowy.
REKLAMA