Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Computer ControlsComputer Controls
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

przełączanie 3 UART-ów

20 Sep 2003 15:51 2558 10
  • Level 11  
    Nawiązując do mojego postu (https://www.elektroda.pl/rtvforum/viewtopic.php?t=68269) (chyba nie powielam tematu) chciałbym sie dowiedzieć czy ktoś tu wie i chciałby się ze mna podzielić wiedzą czy istnieje jakiś układ przełączający (jakiś switch lub multiplexer) który przelaczalby dwa wejscia/wyjscia pomiedzy roznymi ukladami.
    Wyjasnie to na przykladzie:
    mam GPS z pinami Tx i Rx, Atmega16l tez z jednym uartem (pinami Rx i Tx) i driver RS232 MAX3233 (z dwoma Tx i Rx) jednego Tx i jednego Rx od tego drivera nie wykorzystuje.
    Problem mam taki:
    chcę aby jakis uklad XXX sterowany jakos przy pomocy Atmega16 zestawial 3 mozliwe polaczenia:
    MAX3233 z GPS
    MAX3233 z Atmega (aby programowac go ISP)
    GPS z Atmega
    Wymyslilem ze mozna by cos takiego zrobic wykorzystujac np. dwa dual port 2 channel Multiplexer/Demultiplexer jak na rys nizej

    ................._______............_______
    Tx GPS ==|............|............|...........|==Atmega Tx
    Rx GPS ==|............|............|...........|==Atmega Rx
    .................|............|=====|...........|
    .................|............|=====|...........|
    Tx RS232=|............|...........|............|==RS232 Tx
    Rx Rs232=|______|...........|______|==RS232 Rx
    ........................| | |......................| | |
    ......................wejscia sterujace

    no ale czy mozna jakos prosciej ?? Jak ???
    [30.03.2021, darmowy webinar] Nowoczesna diagnostyka maszyn, monitorowanie i przewidywanie awarii. Zarejestruj się
  • Computer ControlsComputer Controls
  • Level 42  
    Czy chcesz przełączać sygnały w standardzie V24 czy TTL?
  • Level 11  
    w standardzie ttl, bo GPS i Atmel maja na wyjsciach RX i TX o ile mi wiadomo standardy ttl a ten driver MAX3233 ma sluzyc tylko czasem do podlaczenia ich do PC aby zmienic soft na GPSie lub w Atmelu
  • Computer ControlsComputer Controls
  • Level 42  
    A nie możesz tego zrobić na kości np 4052/4053 albo kluczach "luzem" 4066.
  • Level 11  
    no coz - moge zrobic wszystko, tylko nie wiem jak bo ze mnie to elektronik żaden. Zrobilem w Protelu DXP schemat ktory moge Ci podeslac jesli chcesz.
    Zasadniczo to potrzebuje na schemacie zrobic cos z pinami uP ktore nie sa wykorzystane oraz zrobic komunikacje miedzy:
    1. GPSem a komputerem - bo na komputerze mam oprogramowanie komunikujace sie z tym modulem GPS i umozliwiajace zmiane jego parametrow oraz zmiane jego software'u
    2. GPSem a uP - bo chce zaprogramowac Atmela aby dane z GPSa byly wyswietlane na wyswietlaczu LCD 2x16
    3. Atmelem a PC - bo chce miec mozliwosc przeprogramowywania Atmela

    I wlasnie chcialbym aby komunikacja miedzy GPSem a PC lub Atmelem a PC odbywala sie przez to samo jedno zlacze na plytce z ukladem. Zlaczem tym ma byc gniazdo jack stereo polaczone do COMu komputera (RS232)
    Problemem jest ze nie wiem jak to zrobic.
    Przeczytalem ze do programowania w ukladzie uP AVR sluza piny MOSI, MISO i SCK (port B piny 5, 6, 7)
    Modul GPS ma dwa piny TXD i RXD w standardzie TTL, CMOS.
    Atmega16L ma rowniez piny TXD (port D pin 0 -PD0) oraz RXD (port D pin 1 -PD1)
    Moglbym polaczyc RxD GPSa z TxD Atmela i TxD GPSa z RxD Atmela ale przy programowaniu Atmela moglbym uszkodzic GPSa albo przy programowaniu GPSa moglbym moze uszkodzic Atmela. Dlatego poszukuje ukladu ktorym moglbym wybierac komunikacje jak opisalem w pkt 1, 2 i 3.
    A teraz to jeszcze sobie uzmyslowilem ze nie wiem jak to wszystko polaczyc zeby dzialalo jak chce :)

    Do programowania AVRa w ukladzie sciagnalem program ze strony http://www.microsyl.com/AVR/MegaLoad/megaload.htm

    Program na Atmela bede poczatkowo pisal w BASCOMie AVR a moze kiedys w C++.

    Szukalem w internecie wlasnie multiplexerow ktore umozliwialy by przelaczanie takie jak to opisalem tylko ze w sumie nie znalazlem, czy moglbys podac link do dokumentacji tych ukladow ktroe wymieniles?
  • Level 42  
    Kup sobie przełącznik do portu szeregowe, podłącz tak żeby układ GPS przełączać na uP albo PC. A procesor programuj w programatorze podłączonym do portu drukarkowego.
  • Level 11  
    Tak jest to najprostrze rozwiazanie ale nie oto mi chodzi :)
  • Level 15  
    Wyjaśnijmy jedną sprawę: Programowanie AVR-ów szeregowo odbywa się po innych pinach niż transmisja szeregowa (są to piny, jak już napisałeś SCK, MOSI, MISO, wyjątek stanowi ATMEGA128 ale to już inna historia) Radze te piny wyprowadzić oddzielnie w celu późniejszego programowania. Nie możesz ich podpiąc do standardowego RS232, bo tak nic nie zaprogramujesz. Możesz wykożystać UART do programowania, ale wykożystując BOOT LOADER, który jest we wszystkich ATMEGA. Tylko, że wtedy musisz napisać specjalny program.
    Jak tak zrobisz to odpada Ci 1 UART do przełączania.
    Jeśli chodzi o komunikację PC <-> GPS i uC <-> GPS to zrób to tak:
    Łączysz wyjście TX GPS z wejściem RX AVR i wejściem RX RS232 (oczywiście przez sterownik) oraz wejście RX GPS z wyjsciem TX AVR i wyjściem TX RS232. Wszystko łączysz bezpośrednio oprócz wyjścia TX RS232 z gdzie musisz zastosować trójstanowy bufor (tzn. taki,który można wprowadzić w stan wysokiej impedancji, ewentualnie bramkę 4066).
    I teraz tak:
    Jeżeli chcesz się komunikować PC <-> GPS to wprowadzasz AVR w stan resetu, wtedy wszystkie wyjścia przechodzą w stan wysokiej impedancji i nie przeszkadzają w komunikacji.
    Jeżeli chsesz się komunikować uC <-> GPS to blokujesz wspomniany buforem wyjście TX RS232(buforem steruje AVR) i droga wolna...
  • Level 11  
    Ok. To jeszcze się zapytam tak. Mam tego Atmega16L i można go różnie programować: podlaczając do LPT lub COM komputera.
    Żeby za dużo nie pytać to tak:
    tu jest link:
    http://www.mysunrise.ch/users/pfleury/avr-uart.html
    Czy wykorzystując połączenie jakie jest na schemacie w tym linku mogę programować Atmega16L zakładając że wcześniej wgram do Atmela16L oprogramowanie (bootloadera) które mogę uzyskać pod tym adresem:
    http://www.microsyl.com/AVR/MegaLoad/megaload.htm
    Czy może programowanie Atmega16L może być tylko przez MISO MOSI i SCK jeśli szeregowo lub jeśli równolegle to jakoś tam inaczej?
    I pytanko do bufora trójstanowego (rozumiem że może być stan wysoki, niski albo wysoka impedancja czyli rozwarcie) to jaki np. układ (numerek) jakiej firmy?
    Bo ja naprawde jestem bardzo początkujący jeśli chodzi o praktykę bo w teorii to to proste jest 1 i 0 :).
  • Level 15  
    Ten procesor można programować na 3 różne sposoby:
    1. równolegle - przeważnie w zewnętrznych programatorach, procesor musi być wyciągnięty z układu.
    2. szeregowo przez złącze SPI - można programować w systemie,wykorzystuje się 4 wyprowadzenia MISO, MOSI, SCK i RESET
    3. używając boot loadera - czyli trzeba mieć w procesorze odpowiedni program, który pobiera z zewnątrz kod nowego programu (w dowolny sposób, w szczególności przez UART) i programuje pozostałą część pamięci (można powiedzieć, że procesor programuje się sam)

    Z tego co napisałeś to koniecznie chcesz programować przez RS232, czyli musisz wykożystać 3 sposób (spróbuj wykożystać tego "Megaload" do któredo dałeś linki, ale nie wiem jak działa, nie sprawdzałem go). Pozostaje kwestia przełączania RS232 pomiędzy 3 urządzeniami. Napisz co ma decydować o wyborze połączenia, czy można to ustawić ręcznie (za pomocą jakiegoś przełącznika), czy ma decydowac AVR?
  • Level 11  
    Na wstepie bardzo dziekuję za wyklarowanie mi sytuacji programowania AVR'a cieszę się że można go programować tak jak jest dla mnie najprosciej (przez piny TxD i RxD) przez UARTa.
    Jesli chodzi o kwestie przełączania między trzema układami tomyślałem o tym aby układ przełączający był sterowany z Atmela przez piny np z portu B na których stan 0 lub jeden byłby sterowany za pomocą przycisków (mikrostyków) podłączonych do portu C (piny PC4-7).
    Od wykładowcy dowiedziałem się, że są jakieś układy GAL16V8 (chyba, o ile dobrze zapamiętałem) które można sobie dowolnie programować jako układy logiczne. Może ktoś się na tym zna i przybliży mi tą kwestię lub poda jakąś literaturę lub linki w internecie. Jeśli chodzi o jakieś obliczenia moora itp to chyba jeszcze pamiętam z 5 semestru :). I jeszcze dziękuję za dotychczasową pomoc. Ja mogę służyć pomocą chyba w dość szerokim zakresie jeśli chodzi o wszelkiego rodzaju sieci kablowe (HFC lub Ethernet)