3 UARTy w jednym AVR

Oct 08, 2004 30 Replies

Witam!



Mam do zrobienia coś w rodzaju sterownika. Sterownik musi komunikować sie z zewnątrznym światem na 3 UARTach (RS232). Pierwszy do innego procesora (dośc daleko, 2-3 metry, stąd RS232). Drugi do urządzenia pomiarowego które musi działać w RS232. Trzeci do komputera.



Raczej nie znajdę procesora z 3 UARTami, najbliższy mi procesor to ATmega162 (swoją drogą nie posiada ADC, ale łatwiej to doszyć, niż dodatkowy UART) który ma 2 UARTy.



I teraz proszę o opinie. Czy wydaje się Wam że łatwiej jest:


  1. Dorobić softwareowo dodatkowy port zakładając, że jeden/dwa liczniki są wolne.
  2. Zmienić komunikację między "innym procesorem" z RS232 na coś podobnego dającego zasięg 2-3 metry i jakieś 1200 bodów.

A może jest jakiś scalaczek realizujący w miare bezboleśnie funkcje dodatkowego UARTu ? (w akcie desperacji wmontuje tam jakiegoś małego AVR do tej roli :)


Ale musiałbym się ich nauczyć, co pewniekiedyś uczynie, ale nie teraz ... Musze niestety zrobić to na AVR żeby nie tracić czasu.

niektóre procesory hitachi serii H8S i inne maj± po 3 uarty. a s± one bardzo przyjemne w projektowaniu i programowaniu

Softwarowy UART mozna w prosty sposob zrobic - gotowce masz w przykladac h do AVR Studio.

Ja bym powiedział że 3 UART-y to w przypadku tych kości jest w zasadzie standartem. A niektóre z nich to mają po 4-5 UART-ów. :-)

Regards, /J.D.

Fri, 08 Oct 2004 20:17:06 +0200, na pl.misc.elektronika, Sebastian Bialy napisał(a):

Jest. MAX 3110/11 - UART+interfejs232 + wewnętrzny oscylator - obsługiwany przez SPI.

Albo starszy MAX 3100 ( potrzebuje kwarcu i zewnętrznej kostki interfejsu ale ma tę zaletę, że jest - przynajmniej chwilowo - w Uniprod Components )

Fri, 08 Oct 2004 20:17:06 +0200, na pl.misc.elektronika, Sebastian Bialy napisał(a):

Możesz wprowadzić nowoczesność :-) i łącze z PC zrobić na usb korzystając z równoległego Ft8u245 podpiętego pod magistralę ext ram at162.

Obawiam się, że półdupleksowy. Choć trafiłem tez na pełny ale nie mam zaufania do kodu.

Pozerkam, akurat SPI jest możliwe do zastosowania w tym celu.

Chwilowo zakładam, że USB nie będzie, ale i tak wolałbym podpiąć się pod UART ze scalakiem z serii Ft***** niż przerabiać program w procku.

Muszą. Co prawda ten do komputera od święta, ale właśnie wtedy muszą na raz.

Własnie kombinowałem nad rodzajem multipleksowania. Ale nie tyle sprzętowego co w protokole. Coś jak ethernet - pierwszy bajt adresuje urządzenie. Jesli nastąpi kolizja to paczka jest odrzucana. Nie wiem, czy z tym wiecej roboty niż dodatkowym 2313 jako sterownika uartu.

W artykule news:ck6ljs$dqk$ snipped-for-privacy@atlantis.news.tpi.pl, niejaki(a): Sebastian Bialy z adresu snipped-for-privacy@poczta.onet.pl> napisa³(a):

A one musz± dzia³aæ jednocze¶nie?

Bo je¶li nie to prze³±czaj jeden z uartów raz do jednego urz±dzenia raz do drugiego Wystarczy 2 wejsciowy multiplexer np 74HC157 sterowany z dodatkowej nogi AVR-ka. Jeszcze mo¿na w razie potrzeby zrobiæ drugi sygna³ prze³±czany wcze¶niej sygnalizuj±cy urz±dzeniu ¿e ma zaprzestaæ wysy³ania danych bo za chwilê nastapi prze³±czenie.

to po co Ci na nim pelny duplex? /zakladam, ze to Ty piszesz soft na PC do komunikacji z urzadzeniem;

U¿ytkownik "Sebastian Bialy" snipped-for-privacy@poczta.onet.pl> napisa³ w wiadomo¶ci news:ck6ljs$dqk$ snipped-for-privacy@atlantis.news.tpi.pl...

Ja tego nie robi³em, ale wiem, ¿e na AVR da siê zrobiæ programowo 8 portów RS232 z prêdko¶ci± 4800 stosuj±c jeden timer ustawiony na tak, aby dawa³ 4 przerwania w jednym bicie transmisji.

P.G.

z tego wynika, ze wcale nie potrzebujesz

3 uartow jednoczesnie (pisales tak wyzej);

w sumie najprostsze sa tu 2 wyjscia:

- softwarowy uart (na np. int0, int1);

- ale na Twoim miejscu powaznie zastanawialbym sie nad USB; /mam podobny problem z atmega162 i chyba zaczepie sie o usb;

w app nocie "half duplex int driven soft uart" masz napisane, ze jest cpable of handling up to 38.4kbps@1MHz xtal;

nie odpowiem ci o AVR, ale ostatnio potrzebowalem 4x rs232 i jeszcze costam zrobic, a w szufladzie pustki - i zrobilem na 89c2051 x 5 ;) - wieloprocesorowy uklad na '51 . Jeden master 4051 ktory robil co mial robic, a kazdy z 2051 zajmowal sie tylko i wylacznie "cache" danych i obsluga transmisji rs232 wymiana danych pomiedzy prockami odbywala sie juz po magistrali 8bit +

1bit sterowanie - taka wlasnorobka, ten jeden bit przelaczal master: 0=na 8 bitach jest adres, ktory slave ma sluchac, 1=na 8 bitach sa dane, jak slave odebral, to zwieral ta linie do masy i master wiedzial ze jest ok, a nie np. ukradli procka ;)

koszt wyszedl i tak duzo nizszy niz poszukiwania ukladu z 4x uart, a w dodatku pelny dupleks na wszystkich portach, zrobilem po 64bajty cache transmisji na kazdym porcie, i kazdy niezalezna konfigurowalna predkosc. Jedyny minus - wielkosc, ale przechodzac na smd byloby znosnie.

U¿ytkownik "BartekK" snipped-for-privacy@sibi.cfu.com.pl> napisa³ w wiadomo¶ci news:ck8ahk$mlf$ snipped-for-privacy@atlantis.news.tpi.pl...

Widzialem dzialajace urzadenie na '51 z obsluga trzech uart-ow - 115200 na sprzetowym, 19200 i 9600 na programowych UART-ach. Co do AVR-a to jednego UART-a spokojnie dorobi, nawet full-duplex.

Pozdr AK

Komputer jest podłączany nizbyt często, ale własnie wtedy musi być zapewniona duża szybkośc transmisji z i do. Najlepiej na raz. Kluczowy jest czas zrzucania danych po RS232 i mysle, że pełny dupleks by się przydał. Oczywiście sprawy nie przesądzam ale wolałbym fullduplex. (w urządzeniu jest 16MB ramu na MMC i muszę dane zrzucic i wgrać nowe oraz mieć podgląd na żywo stanu urządzenia).

:) Aż tyle nie potrzebuje, ale fakt, że softwareowy uart jest jedną z opcji.

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required