=?iso-8859-2?Q?USART_i_wiele_odbiornik=F3w?=
Masz problem? Zapytaj na forum elektroda.pl
From: TRS <kogo_at_nospam_to.obchodzi>
Subject: =?iso-8859-2?Q?USART_i_wiele_odbiornik=F3w?=
Date: Tue, 2 May 2006 14:58:47 +0000 (UTC)
Właśnie próbuję stworzyć jakiś system komunikacji w pewnym systemie.
Będzie się on opierał na centralnym mikrokontrolerze ATmega 128 i
różnych układach peryferyjnych. Teraz powstaje kwestia komunikacji
między tym wszystkim. Wymyśliłem sobie że najłatwiej będzie mi oprzeć
się na wbudowanym układzie USART. Idea jest taka:
- ATmega pracuje jako centralny procesor i w razie potrzeby odpytuje
sobie poszczególne układy o jakieś informacje.
- układy peryferyjne sobie tylko słuchają
Układ taki ma tą zaletę (tak mi sie wydaje) że odpadają kolizje
nadawania a wszystkie układy mogę sobie równolegle podpinać prawie do
woli.
Tylko teraz mam pytania do ludzi bardziej doświadczonych w takiej
materii. Ma to prawo wogóle działać? Czy potrzebne będą mi jakieś
układy pośredniczące? Czy mogę sobie po prostu bezpośrednio pospinać
wszystkie URATy z peryferiów (działać to będzie na niewielkiej
odległosći rzędu metra, może dwóch i zasilane będzie z tego samego
źródła zasilania)? Mam się spodziewać jakichś sporych niespodzianek
przy próbie uruchomienia takiego systemu?
From: "Pszemol" <Pszemol_at_nospam_PolBox.com>
Subject: =?iso-8859-2?Q?Re:_USART_i_wiele_odbiornik=F3w?=
Date: Tue, 2 May 2006 10:15:06 -0500
"TRS" <kogo_at_nospam_to.obchodzi> wrote in message news:2fe9d2148d079055289614940a0fef47_at_nospam_silniczek.wiertarka.pl...
Tylko teraz mam pytania do ludzi bardziej doświadczonych w takiej
materii. Ma to prawo wogóle działać? Czy potrzebne będą mi jakieś
układy pośredniczące? Czy mogę sobie po prostu bezpośrednio pospinać
wszystkie URATy z peryferiów (działać to będzie na niewielkiej
odległosći rzędu metra, może dwóch i zasilane będzie z tego samego
źródła zasilania)? Mam się spodziewać jakichś sporych niespodzianek
przy próbie uruchomienia takiego systemu?
Możesz tak zrobić tylko wtedy, gdy nadajnik pracuje w trybie
open-drain a nie w trybie push-pull. Nie znam tych Twoich
"peryferiów, ale zgaduję że nadajnik pracuje w trybie push-pull,
czyli masz dwa tranzystory w stopniu wyjściowym i dla stanu H
linię masz zwartą jednym tranzystorem z Vcc a dla stanu L linia
jest zwarta z GND drugim tranzystorem. W obu przypadkach drugi
tranzystor jest wyłączony, czyli nie przewodzi.
Teraz jeśli podłączysz dwa takie nadajniki do wspólnej linii
to w stanie idle oba będą dawać na linii Vcc bo górny tranzystor
będą miały przewodzący. Jak jeden z nich zacznie nadawać to
zacznie zwierać Vcc do masy GND przez swój otwarty dolny
tranzystor i otwarty górny tranzystor kolegi. W zależności od
szybkości transmisji i długości trwania znaku (9x bit 0 w 0x00)
możesz po prostu spalić sobie nieodwracalnie wyjścia albo
dostać stany nieustalone (ani H ani L).
Jeśli w układzie masz tylko jednego mastera i reszta to slaves
to rozwiązanie jest następujące: podłączasz nadajnik ATmegi
do wszystkich odbiorników Twoich peryferiów a nadajniki tych
peryferiów podłączasz do wielowejściowej bramki AND której
wyście będzie sterować wejściem ATmegi. W rozwiązaniu tańszym
mógłbyś zastosować po prostu tranzystory w układzie open-drain
podłączone do wyjść nadajników peryferiów zamiast bramki AND
i zrealizować taką funkcję AND na tranzystorach open-drain.
Teraz już software musi zapewnić że nie zdarzy się sytuacja,
że któryś z peryferiów odezwie się wtedy, gdy gada inny...
A ta ATmega nie ma przypadkiem interfejsu I2C lub OneWire?
From: TRS <kogo_at_nospam_to.obchodzi>
Subject: =?iso-8859-2?Q?Re:_USART_i_wiele_odbiornik=F3w?=
Date: Tue, 2 May 2006 15:42:59 +0000 (UTC)
Pszemol napisał(a):
Nie znam tych Twoich "peryferiów
Najczęściej będą to inne AVRy ze sprzętowym UARTem...
W rozwiązaniu tańszym
mógłbyś zastosować po prostu tranzystory w układzie open-drain
podłączone do wyjść nadajników peryferiów zamiast bramki AND
i zrealizować taką funkcję AND na tranzystorach open-drain.
Czyli jednak zachodzi potrzeba stosowania "pośrednika" :) Nie
zagłębiałem się aż tak w budowę stopni wyjściowych pinów na których
wisi UART w AVRach... Ale chyba będzie trzeba pogrzebać...
A ta ATmega nie ma przypadkiem interfejsu I2C lub OneWire?
Ma, ale chciałbym to uczynić jak najbardziej uniwersalnym rozwiązaniem
a w momencie gdy do któreś urządzenie końcowe będzie popędzane np. z
'2051 to musiał bym w nim implementowć programowo I2C czy 1wire. A
UARTa mam w większości popularnych procesorów dostępnego w formie
sprzętowej. IMHO duża wygoda...
From: "Pszemol" <Pszemol_at_nospam_PolBox.com>
Subject: =?iso-8859-2?Q?Re:_USART_i_wiele_odbiornik=F3w?=
Date: Tue, 2 May 2006 11:21:49 -0500
"TRS" <kogo_at_nospam_to.obchodzi> wrote in message news:724acaad068652c1ccf25dbd68a2573a_at_nospam_silniczek.wiertarka.pl...
Ma, ale chciałbym to uczynić jak najbardziej uniwersalnym rozwiązaniem
a w momencie gdy do któreś urządzenie końcowe będzie popędzane np. z
'2051 to musiał bym w nim implementowć programowo I2C czy 1wire. A
UARTa mam w większości popularnych procesorów dostępnego w formie
sprzętowej. IMHO duża wygoda...
No to pozostaje Ci jedna duża bramka AND lub te tranzystorki.
Ale rozwiązanie z tranzystorkami jest gorsze...
Przy tranzystorkach nie zapomnij też o tym, że jeden stopień
odwraca polaryzację sygnału, więc po tych kilku open drain
daj tuż przed wejściem RX ATmegi jeszcze jeden tranzystor
odwracający spowrotem polaryzację sygnału tak, aby w stanie
"idle" poziom napięcia na wejściu TTL uarta był wysoki...
Dobierając oporniki nie zapomnij też o stałej RC wpływającej
na szybkość przełączania jeśli masz duże prędkości transmisji.
Najbezpieczniej będzie jednak dodać wielowejściową brameczkę
AND i będzie z głowy. Najlepiej kup taką co ma kilka zapasowych
wejść na wypadek gdybyś kiedyś rozbudował swój układ i te
niewykorzystane wejścia bramki podciągnij rezystorem do Vcc.
Date: Fri, 05 May 2006 10:37:29 +0200
From: =?UTF-8?B?UmFkb3PFgmF3IEtvcnplbmlld3NraQ==?=
Subject: Re: USART i wiele =?UTF-8?B?b2RiaW9ybmlrw7N3?=
Pszemol napisaĹ(a):
No to pozostaje Ci jedna duĹźa bramka AND lub te tranzystorki.
Raczej OR, chyba Ĺźe nadajesz w logice odwrotnej.
pozdr
Radek
From: "Pszemol" <Pszemol_at_nospam_PolBox.com>
Subject: =?UTF-8?Q?Re:_USART_i_wiele_odbiornik=C3=B3w?=
Date: Fri, 5 May 2006 06:52:30 -0500
"RadosĹaw Korzeniewski" <rkorzeniewski_at_nospam_gmail.com> wrote in message news:445b093d$0$22596$f69f905_at_nospam_mamut2.aster.pl...
Pszemol napisaĹ(a):
No to pozostaje Ci jedna duĹźa bramka AND lub te tranzystorki.
Raczej OR, chyba Ĺźe nadajesz w logice odwrotnej.
UART wychodzÄ
cy z CPU czyli posiadajÄ
cy poziomy TTL (Gnd/Vcc)
ma polaryzacjÄ takÄ
, Ĺźe w stanie idle daje Vdd, bit stopu to Gnd
potem bity danych odpowiadajÄ
wprost poziomom napiÄcia:
leci po kolei D0, D1.... D7, bit parzystoĹci i bit stopu rĂłwny jest
stanowi Idle, czyli Vdd.
Bramka AND dziaĹa tak, Ĺźe jej wyjĹcie jest w stanie H gdy WSZYSTKIE
wejĹcia sa w stanie H. A wiÄc UART ATmegi bÄdzie w stanie idle
gdy wszystkie uarty peryferiĂłw bedÄ
w stanie idle. JeĹli choÄ jeden
uart zacznie nadawaÄ to zmieni stan wejĹcia bramki AND i uart
ATmegi zobaczy to jako bit startu i bity danych...
From: "dziadek Ben" <ja44beztego_at_nospam_op.pl>
Subject: =?iso-8859-2?Q?Re:_USART_i_wiele_odbiornik=F3w?=
Date: Tue, 2 May 2006 18:33:46 +0200
...Wymyśliłem sobie że najłatwiej będzie mi oprzeć
się na wbudowanym układzie USART. Idea jest taka:
- ATmega pracuje jako centralny procesor i w razie potrzeby odpytuje
sobie poszczególne układy o jakieś informacje.
- układy peryferyjne sobie tylko słuchają
Nie znam ATmegi: w moim układzie z 51-kami, gdzie centralny procek odpytuje
pozostałe 128 procków przeszedłem po prostu na RS-485 - zero problemów!
--
dziadek Ben
[z adresu wytnij co trzeba]
From: "Pawel \"O'Pajak\"" <opajak_at_nospam_gazeta.pl>
Subject: Re: USART i wiele =?ISO-8859-2?Q?odbiornik=F3w?=
Date: Tue, 02 May 2006 21:05:13 +0200
Powitanko,
Nie znam ATmegi: w moim układzie z 51-kami, gdzie centralny procek
odpytuje pozostałe 128 procków przeszedłem po prostu na RS-485 - zero
problemów!
A na jakiej kosci?
Pozdroofka,
Pawel Chorzempa
--
"-Tato, po czym poznać małą szkodliwość społeczną?
-Po wielkiej szkodzie prywatnej" (kopyrajt: S. Mrożek)
******* >>> !!! UWAGA: ODPOWIADAM TYLKO NA MAILE ->:
> pavel(ten_smieszny_znaczek)klub.chip.pl <<<<*******
From: "dziadek Ben" <ja44beztego_at_nospam_op.pl>
Subject: =?iso-8859-2?Q?Re:_USART_i_wiele_odbiornik=F3w?=
Date: Wed, 3 May 2006 12:53:30 +0200
Nie znam ATmegi: w moim układzie z 51-kami, gdzie centralny procek
odpytuje pozostałe 128 procków przeszedłem po prostu na RS-485 - zero
problemów!
A na jakiej kosci?
MAX3075
--
dziadek Ben
[z adresu wytnij co trzeba]
From: "Pawel \"O'Pajak\"" <opajak_at_nospam_gazeta.pl>
Subject: Re: USART i wiele =?ISO-8859-2?Q?odbiornik=F3w?=
Date: Wed, 03 May 2006 15:02:02 +0200
Powitanko,
MAX3075
Dzieki, up to 256 receivers, niezla kostka:-)
Pozdroofka,
Pawel Chorzempa
--
"-Tato, po czym poznać małą szkodliwość społeczną?
-Po wielkiej szkodzie prywatnej" (kopyrajt: S. Mrożek)
******* >>> !!! UWAGA: ODPOWIADAM TYLKO NA MAILE ->:
> pavel(ten_smieszny_znaczek)klub.chip.pl <<<<*******