atmega i 8-16 UART-ow

Nov 02, 2006 41 Replies

Thu, 2 Nov 2006 10:24:15 -0000, na pl.misc.elektronika, Martin Lukasik napisał(a):

Np. zwyczajne analogowe 4051 z powodzeniem wystarczą. Tylko wtedy dołóż słaby pullup do wejść nadajników max232 żeby nieakywna linia nie wysyłała jakichś śmieci

Dobre podejscie:) Prosto - zrob tak jak pisal Greg. Albo siadz nad softem. Moj pomysl jest taki - programujesz timer na predkosc 2-4x taka jak baudrate. W obsludze przerwania timera wystawiasz dane co 2-4 przerwanie na Tx - mozesz od razu na 8 UARTow, co przyspieszy operacje. Jednoczesnie samplujesz dane z Rx i zapisujesz. Jak to dobrze napiszesz to z obsluga 16 Uartow powinienes sie wyrobic.

To jest proste. Problemem jest tylko taka implementacja, zeby sie zmiescic w czasie.

Mi wychodzi 26 cykli.

TP.

A to sorry.

To może normalnie 2 uarty z procka (atmega128?) i demultiplexer TTL-owy i 17x max232?

TP.

Bo liczysz 8e6/19.2e3/16, czyli, ¿e ka¿dy obs³ugujesz osobno. Ja zak³adam, ¿e wezmê sobie wszystkie 16 uartów bêdzie nadawa³o razem, wiêc w przerwaniu biorê wszystkie 16 bitów do wys³ania i pcham na ca³e dwa porty.

Ale to co kupisz bedzie znacznie lepsze,

I ma zajac 10 minut ? :-)

J.

Skad wiesz? Tak jak pisalem. Jak bedzie dzialac, to bedzie wystarczajaco dobre. Pokaz mi link gdzie to moge kupic...

No, moze troche wiecej. Ale 9 MAX232, atmega i multiplexer raczej duzo czasu nie zajma. Juz nawet plytke uniwersalna idealna do tego zadania dorwalem :-)

m.

Przepraszam za glupie pytanie, ale czy moge przelaczac tym zasilanie MAX-ow? Ew. przez jakis tranzystor; bo nie widze jak mialbym przelaczac linie RX i TX przy pomocy w/w.

Dziekuje wszystkim za odpowiedzi, Marcin

nie, i wogole bez sensu.. MAX potrzebuje sporo czasu na wstanie by uruchomic przetwornice DC/DC po co przelaczac im zasilanie? wtedy nie beda mogly masluchiwac

Bo bedziesz mial mozliwosc wszystkich naraz. I lacznosc przez ethernet. A nawet TCP/IP. I nie bedziesz musial szukac peceta z RS232

Prawdopodobnie cos takiego:

formatting link
Przy czym jest szansa ze znajdziesz cos innego jeszcze taniej.

J.

Niech rozswietle idee:

1) Loguje sie przez "COM0" -- ten glowny UART. (Pozostale to COM1-COM8). 2) Pisze przez COM0 "uzyj COM3". I wtedy wszystko co przychodzi/wychodzi z COM3 przechodzi przez COM0. Wiec jest to taki sobie "mostek". Nie potrzebuje sluchac/wysylac na wszystkich na raz.

Wiec wydawalo mi sie, ze prosciej jest przelaczyc zasilanie. Mam dzis ciezki dzien i nie moge sie skupic, ale przegladajac PDFa nie wymyslilem jak mam tym 74HC154 przelaczac linie RX/TX...

m.

uzyj lepiej CD4051/52/53 sa 2 kierunkowe w przeciwienstwie do tego hc154, wiec mozesz uzyc do RX jak i TX

A jesli tego nie potrzebuje? Dla mnie to oznacza, ze nie jest lepszy :]

300zl? 9 maxow, multiplekser i atmega kosztuja "troche" mniej.

Szczerze nie jest problemem te 300zl, ale dlaczego tak bardzo nie chcesz, zeby sprobowal to zrobic samemu? Nie chodzi mi o oszczednosc...

m.

Chcesz sobie robic to rob, ale masz gotowe urzadzenie ktore robi dokladnie to co chcesz [trzeba sprawdzic, ale Console Server to chyba jednak to], sprawdzone przez tysiace uzytkownikow, wyprzedawane za ulamek swojej pierwotnej ceny, po cenie smiesznej w porownaniu do sumy tych serwerow zapewne .. czego chciec wiecej ?

J.

mozesz tez inaczej :)

zrob multiplekser 1 do 8 a procesorkiem go przelaczaj. Niech procesor nasluchuje na wejsciu multipleksera a jak dostanie kombinacje

<CRLF> ATERATOJACIESLICZNIEPROSZEPRZENIESMIPOLACZENIEDO04PORTU <CRLF>

to niech przelaczy - proste jak drut i do zrobienia w 10 minut :)

wojtek

formatting link
CMMS Maszyna Golem OEE Produkt-Baza Wiedzy

Oj, nie wiem czy nie taniej bedzie zrobic to na atmega 162 (po 2 uarty) spietych po spi :)

Andrzej

...albo ST711 - ze 4 uarty :)

Tym akurat przełączysz TX. Wyjście TX z procka zapodajesz na E0, na E1 dajesz H (chyba, albo L :) ). I teraz w zależności od adresu na A0..3 TX wychodzi na jedno z 16 wyjść.

W drugą stronę robisz przełączanie na 74HC150.

TP.

Martin Lukasik napisał(a):

Moja propozycja to: skoro maja byc AVRy to np. Atmega8 + max232 dopasowujacy RxD, TxD oraz DTR. Gdy DTR jest rowne np.: 1 to AVR uaktywnia sprzetowy USART z okreslona predkoscia. Budujesz protokol, najprostrzy to bajt wyslany to numer aktualnego kanalu. Teraz DTR na 0 i wylaczasz sprzetowy USART i wchodzisz w petle:

while (DTR == 0) { // odpowiednie przepisanie RxD i TxD na odpowiadajace im piny RxDchanel-n i TxD chanel-n }

Do tego max232 w zaleznosci od ilosci kanalow. Nie potrzebujesz zadnych multiplekserow (petla jest softwaerowym multiplekserem) i tym bardziej (o zgrozo - w tym zastosowniu) dodatkowych mikrokontrolerow.

Powodzenia MS

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required