RTV forum PL | NewsGroups PL

Jak stworzyć izolowany konwerter bez TTL z RS232 na RS485 - dostępne scalaki?

Izolowany konwerter zrobić z RS232 na RS485

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Jak stworzyć izolowany konwerter bez TTL z RS232 na RS485 - dostępne scalaki?

Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8  Next

Zbych
Guest

Fri Sep 22, 2017 6:18 pm   



W dniu 22.09.2017 o 17:04, Pszemol pisze:
Quote:
Zbych <abuse@onet.pl> wrote:
W dniu 22.09.2017 o 16:42, Pszemol pisze:

Pomyśl o typowym optycznie izolowanym porcie: led + fototranzystor. Po co
Ci masa z obwodu leda w obwodzie fototranzystora???

Ale w RS485 nie masz leda na wejściu, tylko "komparator" który wymaga,
żeby podawane napięcia mieściły się względem _jego_ masy w odpowiednim
zakresie. Jak nie masz masy połączonej, to musi się ona ustalić na
jakimś potencjale poprzez elementy pasożytnicze (pojemności, diody
klampujące na wejściach).

Masz komparator, faktycznie, który skrętkę ma podłączoną do swojego
symetrycznego wejścia. Interesuje go wyłącznie napięcie MIĘDZY drutami
(różnicówka) a nie napięcie między ktorymś z drutów a masą (common mode) w
dopuszczalnych granicach.

Duży chłopiec i wieży w to, że tranzystorom na stopniu wejściowym jest
wszystko jedno na jakim potencjale względem masy układu pracują?

J.F.
Guest

Fri Sep 22, 2017 6:35 pm   



Dnia Fri, 22 Sep 2017 17:43:27 -0000 (UTC), Pszemol napisał(a):
Quote:
Nie musisz mieć swojego procka - wszystkie porty RS232 mają linię RTS która
była historycznie używana zawsze do sterowania kierunkiem nadawania RS485.

Tak mniej wiecej do 1980, bo potem przyszedl IBM i olal.
A moze nie musial olewac, bo wczesniej producenci modemow olali.

Potem jeszcze producenci UARTow olali i malo kto (tzn malo ktory
system) to prawidlowo ustawia w swiecie pecetow.

J.

Pszemol
Guest

Fri Sep 22, 2017 7:43 pm   



Dariusz Dorochowicz <_dadoro_@wp.com> wrote:
Quote:
W dniu 2017-09-22 o 16:52, Pszemol pisze:
t-1 <t-1@todlaspamu.pl> wrote:
W dniu 2017-09-20 o 14:48, Pszemol pisze:
RS232 od razu na RS485

Może z tego wydłubiesz?
https://ivel.pl/p2850,konwerter-rs232-rs485.html?gclid=EAIaIQobChMI-cWPu-6z1gIVlcqyCh2ytg9wEAYYASABEgKkhfD_BwE


No więc obczaiłem jak tu działa sterowanie kierunkiem transmisji:
Zwarte DE/RE sterowane TX, transmisja zera włącza nadajnik, transmisja
jedynki, bitu stopu wyłącza nadajnik...

Czyli zamiast push-pull i polaryzacji pary raz +5V a za drugim razem -5V
masz tylko 5V i zero volt, pozwalasz odbiornikowi zewrzeć linię w trakcie
transmisji jedynki opornikiem 120ohm.

Oszukaństwo czy raczej praktyczne rozwiązanie szeroko stosowane??

Wiesz, to ma znaczenie wtedy, kiedy nie masz do dyspozycji sygnału
sterującego nadajnikiem, czyli właśnie w konwerterach i repeaterach. Jak
masz swojego procka to nie ma to najmniejszego sensu. W "normalnym"
gotowym urządzeniu tylko raz się spotkałem z tym, że trzeba było
wstępnie spolaryzować magistralę - na szczęście wystarczył rezystor z
którejś linii do masy. I to był jakiś kontroler do PC-ta. Z innymi
kontrolerami było OK.


Nie musisz mieć swojego procka - wszystkie porty RS232 mają linię RTS która
była historycznie używana zawsze do sterowania kierunkiem nadawania RS485.

Dariusz Dorochowicz
Guest

Fri Sep 22, 2017 7:49 pm   



W dniu 2017-09-22 o 19:43, Pszemol pisze:
Quote:
Dariusz Dorochowicz <_dadoro_@wp.com> wrote:
W dniu 2017-09-22 o 16:52, Pszemol pisze:
t-1 <t-1@todlaspamu.pl> wrote:
W dniu 2017-09-20 o 14:48, Pszemol pisze:
RS232 od razu na RS485

Może z tego wydłubiesz?
https://ivel.pl/p2850,konwerter-rs232-rs485.html?gclid=EAIaIQobChMI-cWPu-6z1gIVlcqyCh2ytg9wEAYYASABEgKkhfD_BwE


No więc obczaiłem jak tu działa sterowanie kierunkiem transmisji:
Zwarte DE/RE sterowane TX, transmisja zera włącza nadajnik, transmisja
jedynki, bitu stopu wyłącza nadajnik...

Czyli zamiast push-pull i polaryzacji pary raz +5V a za drugim razem -5V
masz tylko 5V i zero volt, pozwalasz odbiornikowi zewrzeć linię w trakcie
transmisji jedynki opornikiem 120ohm.

Oszukaństwo czy raczej praktyczne rozwiązanie szeroko stosowane??

Wiesz, to ma znaczenie wtedy, kiedy nie masz do dyspozycji sygnału
sterującego nadajnikiem, czyli właśnie w konwerterach i repeaterach. Jak
masz swojego procka to nie ma to najmniejszego sensu. W "normalnym"
gotowym urządzeniu tylko raz się spotkałem z tym, że trzeba było
wstępnie spolaryzować magistralę - na szczęście wystarczył rezystor z
którejś linii do masy. I to był jakiś kontroler do PC-ta. Z innymi
kontrolerami było OK.


Nie musisz mieć swojego procka - wszystkie porty RS232 mają linię RTS która
była historycznie używana zawsze do sterowania kierunkiem nadawania RS485.

Jak masz urządzenie które nie ma fizycznie żadnej linii poza TxD i RxD
to sobie możesz korzystać z RTSa ile wlezie. A jak weźmiesz takiego
AT91SAM9260 który nawet na niektórych UARTach ma RTS tylko starsze
wersje linuxów nie obsługują tego poprawnie to też sobie możesz.

Pozdrawiam

DD

Dariusz Dorochowicz
Guest

Fri Sep 22, 2017 7:52 pm   



W dniu 2017-09-22 o 21:33, Pszemol pisze:
Quote:
J.F. <jfox_xnospamx@poczta.onet.pl> wrote:
Dnia Fri, 22 Sep 2017 17:43:27 -0000 (UTC), Pszemol napisał(a):
Nie musisz mieć swojego procka - wszystkie porty RS232 mają linię RTS która
była historycznie używana zawsze do sterowania kierunkiem nadawania RS485.

Tak mniej wiecej do 1980, bo potem przyszedl IBM i olal.
A moze nie musial olewac, bo wczesniej producenci modemow olali.

Potem jeszcze producenci UARTow olali i malo kto (tzn malo ktory
system) to prawidlowo ustawia w swiecie pecetow.

A co Ty wygadujesz... uarty sie od dawna nie zmieniaja. W
najpopularniejszych 16C550 to masz a reszta to wariacje tego ukladu z
roznymi wielkosciami fifo.

Ale wiesz że istnieje świat poza pecetami?
;)

Pozdrawiam

DD

J.F.
Guest

Fri Sep 22, 2017 8:20 pm   



Dnia Fri, 22 Sep 2017 19:33:04 -0000 (UTC), Pszemol napisał(a):
Quote:
J.F. <jfox_xnospamx@poczta.onet.pl> wrote:
Dnia Fri, 22 Sep 2017 17:43:27 -0000 (UTC), Pszemol napisał(a):
Nie musisz mieć swojego procka - wszystkie porty RS232 mają linię RTS która
była historycznie używana zawsze do sterowania kierunkiem nadawania RS485.

Tak mniej wiecej do 1980, bo potem przyszedl IBM i olal.
A moze nie musial olewac, bo wczesniej producenci modemow olali.

Potem jeszcze producenci UARTow olali i malo kto (tzn malo ktory
system) to prawidlowo ustawia w swiecie pecetow.

A co Ty wygadujesz... uarty sie od dawna nie zmieniaja. W
najpopularniejszych 16C550 to masz a reszta to wariacje tego ukladu z
roznymi wielkosciami fifo.

Nie o to chodzi.
8250 o ile pamietam mial 2 bajty bufora wyjsciowego.
Wpisujesz bajt1 do wyslania, a on go zaczyna wysylac, ale ... od razu
mowi ze nadajnik gotowy do wyslania kolejnego znaku i generuje
stosowne przerwanie od nadajnika.
Wpisujesz bajt2 - tym razem rejestr statusu mowi, ze nadajnik zajety.
Jak skonczy wysylac bajt1, to zaczyna wysylac bajt2, ale od razu
status mowi ze bufor nadajnika wolny i generuje przerwanie.
Wpisujesz bajt3, sytuacja sie powtarza.
UART konczy wysylac bajt2, zaczyna wysylac bajt3, zglasza przerwanie -
a program stwierdza, ze nie ma nic wiecej do nadania, wiec konczy
obsluge. A uklad ciagle wysyla kolejne bity.
Wysylanie bajtu3 sie konczy, 8250 ustawia stosowny bit statusu, ze juz
sie nadawanie zakonczylo ... ale przerwania juz nie zglasza.

Czyli program wysylajacy jak juz stwierdzi ze nie ma nic do wyslania,
to musi aktywnie sprawdzac kiedy to wysylanie sie zakonczylo, i kiedy
moze wylaczyc RTS. Mamy np 100MHz procesor a przy 9600 musimy prawie
1ms czekac i sprawdzac czy juz mozna przestawic RTS, zamiast inna
pozyteczna robote robic.

16550 to juz nie pamietam - problem rozwiazano, czy sie zaostrzyl,bo
kolejka dluzsza.

J.

Pszemol
Guest

Fri Sep 22, 2017 9:33 pm   



J.F. <jfox_xnospamx@poczta.onet.pl> wrote:
Quote:
Dnia Fri, 22 Sep 2017 17:43:27 -0000 (UTC), Pszemol napisał(a):
Nie musisz mieć swojego procka - wszystkie porty RS232 mają linię RTS która
była historycznie używana zawsze do sterowania kierunkiem nadawania RS485.

Tak mniej wiecej do 1980, bo potem przyszedl IBM i olal.
A moze nie musial olewac, bo wczesniej producenci modemow olali.

Potem jeszcze producenci UARTow olali i malo kto (tzn malo ktory
system) to prawidlowo ustawia w swiecie pecetow.

A co Ty wygadujesz... uarty sie od dawna nie zmieniaja. W

najpopularniejszych 16C550 to masz a reszta to wariacje tego ukladu z
roznymi wielkosciami fifo.

Pszemol
Guest

Fri Sep 22, 2017 9:58 pm   



Dariusz Dorochowicz <_dadoro_@wp.com> wrote:
Quote:
W dniu 2017-09-22 o 19:43, Pszemol pisze:
Dariusz Dorochowicz <_dadoro_@wp.com> wrote:
W dniu 2017-09-22 o 16:52, Pszemol pisze:
t-1 <t-1@todlaspamu.pl> wrote:
W dniu 2017-09-20 o 14:48, Pszemol pisze:
RS232 od razu na RS485

Może z tego wydłubiesz?
https://ivel.pl/p2850,konwerter-rs232-rs485.html?gclid=EAIaIQobChMI-cWPu-6z1gIVlcqyCh2ytg9wEAYYASABEgKkhfD_BwE


No więc obczaiłem jak tu działa sterowanie kierunkiem transmisji:
Zwarte DE/RE sterowane TX, transmisja zera włącza nadajnik, transmisja
jedynki, bitu stopu wyłącza nadajnik...

Czyli zamiast push-pull i polaryzacji pary raz +5V a za drugim razem -5V
masz tylko 5V i zero volt, pozwalasz odbiornikowi zewrzeć linię w trakcie
transmisji jedynki opornikiem 120ohm.

Oszukaństwo czy raczej praktyczne rozwiązanie szeroko stosowane??

Wiesz, to ma znaczenie wtedy, kiedy nie masz do dyspozycji sygnału
sterującego nadajnikiem, czyli właśnie w konwerterach i repeaterach. Jak
masz swojego procka to nie ma to najmniejszego sensu. W "normalnym"
gotowym urządzeniu tylko raz się spotkałem z tym, że trzeba było
wstępnie spolaryzować magistralę - na szczęście wystarczył rezystor z
którejś linii do masy. I to był jakiś kontroler do PC-ta. Z innymi
kontrolerami było OK.


Nie musisz mieć swojego procka - wszystkie porty RS232 mają linię RTS która
była historycznie używana zawsze do sterowania kierunkiem nadawania RS485.

Jak masz urządzenie które nie ma fizycznie żadnej linii poza TxD i RxD
to sobie możesz korzystać z RTSa ile wlezie. A jak weźmiesz takiego
AT91SAM9260 który nawet na niektórych UARTach ma RTS tylko starsze
wersje linuxów nie obsługują tego poprawnie to też sobie możesz.

I co wtedy robisz?


Dajesz timer wyzwalany bitem startu do sterowania linią DE/RE? I czas
ustawiasz zgodnie z baudrate?

Czy może robisz tak jak konwerter z linku u góry, że steruje nadajnikiem
tylko w czasie bitu startu i zerowych bitów danych a resztę zostawia
odbiornikom aby sobie radziły z niesterowaną linią?

Pszemol
Guest

Fri Sep 22, 2017 9:58 pm   



Dariusz Dorochowicz <_dadoro_@wp.com> wrote:
Quote:
W dniu 2017-09-22 o 21:33, Pszemol pisze:
J.F. <jfox_xnospamx@poczta.onet.pl> wrote:
Dnia Fri, 22 Sep 2017 17:43:27 -0000 (UTC), Pszemol napisał(a):
Nie musisz mieć swojego procka - wszystkie porty RS232 mają linię RTS która
była historycznie używana zawsze do sterowania kierunkiem nadawania RS485.

Tak mniej wiecej do 1980, bo potem przyszedl IBM i olal.
A moze nie musial olewac, bo wczesniej producenci modemow olali.

Potem jeszcze producenci UARTow olali i malo kto (tzn malo ktory
system) to prawidlowo ustawia w swiecie pecetow.

A co Ty wygadujesz... uarty sie od dawna nie zmieniaja. W
najpopularniejszych 16C550 to masz a reszta to wariacje tego ukladu z
roznymi wielkosciami fifo.

Ale wiesz że istnieje świat poza pecetami?
Wink


No oczywiście, ale co to zmienia?

Dariusz Dorochowicz
Guest

Fri Sep 22, 2017 10:23 pm   



W dniu 2017-09-22 o 21:58, Pszemol pisze:
Quote:
Dariusz Dorochowicz <_dadoro_@wp.com> wrote:
W dniu 2017-09-22 o 21:33, Pszemol pisze:
J.F. <jfox_xnospamx@poczta.onet.pl> wrote:
Dnia Fri, 22 Sep 2017 17:43:27 -0000 (UTC), Pszemol napisał(a):
Nie musisz mieć swojego procka - wszystkie porty RS232 mają linię RTS która
była historycznie używana zawsze do sterowania kierunkiem nadawania RS485.

Tak mniej wiecej do 1980, bo potem przyszedl IBM i olal.
A moze nie musial olewac, bo wczesniej producenci modemow olali.

Potem jeszcze producenci UARTow olali i malo kto (tzn malo ktory
system) to prawidlowo ustawia w swiecie pecetow.

A co Ty wygadujesz... uarty sie od dawna nie zmieniaja. W
najpopularniejszych 16C550 to masz a reszta to wariacje tego ukladu z
roznymi wielkosciami fifo.

Ale wiesz że istnieje świat poza pecetami?
;)


No oczywiście, ale co to zmienia?

Ano że na 16C550 świat się nie kończy. I że jest więcej różnych
realizacji UARTów i USARTów, w szczególności w mikrokontrolerach. I że
są układy gdzie masz tylko TxD i RxD, bez żadnych linii sterujących. I
MAXy232 robią tam "na pół gwizdka". Aha, w szczegółów już nie pamiętam,
ale wspomniany przeze mnie SAM9260 ma osobny tryb pracy linii RTS
właśnie do obsługi MAX485.

Pozdrawiam

DD

Dariusz Dorochowicz
Guest

Fri Sep 22, 2017 10:31 pm   



W dniu 2017-09-22 o 21:58, Pszemol pisze:
Quote:
Dariusz Dorochowicz <_dadoro_@wp.com> wrote:
W dniu 2017-09-22 o 19:43, Pszemol pisze:
Dariusz Dorochowicz <_dadoro_@wp.com> wrote:
W dniu 2017-09-22 o 16:52, Pszemol pisze:
t-1 <t-1@todlaspamu.pl> wrote:
W dniu 2017-09-20 o 14:48, Pszemol pisze:
RS232 od razu na RS485

Może z tego wydłubiesz?
https://ivel.pl/p2850,konwerter-rs232-rs485.html?gclid=EAIaIQobChMI-cWPu-6z1gIVlcqyCh2ytg9wEAYYASABEgKkhfD_BwE


No więc obczaiłem jak tu działa sterowanie kierunkiem transmisji:
Zwarte DE/RE sterowane TX, transmisja zera włącza nadajnik, transmisja
jedynki, bitu stopu wyłącza nadajnik...

Czyli zamiast push-pull i polaryzacji pary raz +5V a za drugim razem -5V
masz tylko 5V i zero volt, pozwalasz odbiornikowi zewrzeć linię w trakcie
transmisji jedynki opornikiem 120ohm.

Oszukaństwo czy raczej praktyczne rozwiązanie szeroko stosowane??

Wiesz, to ma znaczenie wtedy, kiedy nie masz do dyspozycji sygnału
sterującego nadajnikiem, czyli właśnie w konwerterach i repeaterach. Jak
masz swojego procka to nie ma to najmniejszego sensu. W "normalnym"
gotowym urządzeniu tylko raz się spotkałem z tym, że trzeba było
wstępnie spolaryzować magistralę - na szczęście wystarczył rezystor z
którejś linii do masy. I to był jakiś kontroler do PC-ta. Z innymi
kontrolerami było OK.


Nie musisz mieć swojego procka - wszystkie porty RS232 mają linię RTS która
była historycznie używana zawsze do sterowania kierunkiem nadawania RS485.

Jak masz urządzenie które nie ma fizycznie żadnej linii poza TxD i RxD
to sobie możesz korzystać z RTSa ile wlezie. A jak weźmiesz takiego
AT91SAM9260 który nawet na niektórych UARTach ma RTS tylko starsze
wersje linuxów nie obsługują tego poprawnie to też sobie możesz.

I co wtedy robisz?

Dajesz timer wyzwalany bitem startu do sterowania linią DE/RE? I czas
ustawiasz zgodnie z baudrate?

Czy może robisz tak jak konwerter z linku u góry, że steruje nadajnikiem
tylko w czasie bitu startu i zerowych bitów danych a resztę zostawia
odbiornikom aby sobie radziły z niesterowaną linią?

Temat został odłożony, a teraz jest nieaktualny.
Gdybym miał to jednak zrobić, to słowo daję - nie wiem. Być może nawet
postawiłbym tam po drodze jakiegoś "maluszka" (TINY albo raczej
malutkiego ARMa) żeby się nie zastanawiać, a przy okazji mógłby coś
pożytecznego zrobić co w Linuksie może być trudne... Różne pomysły można
mieć. Ale na pewno przetestowałbym wreszcie właśnie ten układ o którym
piszesz i może właśnie tego użył.

Pozdrawiam

DD

J.F.
Guest

Fri Sep 22, 2017 10:47 pm   



Dnia Fri, 22 Sep 2017 22:10:25 -0000 (UTC), Pszemol napisał(a):
Quote:
J.F. <jfox_xnospamx@poczta.onet.pl> wrote:
Nie o to chodzi.
8250 o ile pamietam mial 2 bajty bufora wyjsciowego.
Wpisujesz bajt1 do wyslania, a on go zaczyna wysylac, ale ... od razu
mowi ze nadajnik gotowy do wyslania kolejnego znaku i generuje
stosowne przerwanie od nadajnika.
Wpisujesz bajt2 - tym razem rejestr statusu mowi, ze nadajnik zajety.
Jak skonczy wysylac bajt1, to zaczyna wysylac bajt2, ale od razu
status mowi ze bufor nadajnika wolny i generuje przerwanie.
Wpisujesz bajt3, sytuacja sie powtarza.
UART konczy wysylac bajt2, zaczyna wysylac bajt3, zglasza przerwanie -
a program stwierdza, ze nie ma nic wiecej do nadania, wiec konczy
obsluge. A uklad ciagle wysyla kolejne bity.
Wysylanie bajtu3 sie konczy, 8250 ustawia stosowny bit statusu, ze juz
sie nadawanie zakonczylo ... ale przerwania juz nie zglasza.

Czyli program wysylajacy jak juz stwierdzi ze nie ma nic do wyslania,
to musi aktywnie sprawdzac kiedy to wysylanie sie zakonczylo, i kiedy
moze wylaczyc RTS. Mamy np 100MHz procesor a przy 9600 musimy prawie
1ms czekac i sprawdzac czy juz mozna przestawic RTS, zamiast inna
pozyteczna robote robic.

16550 to juz nie pamietam - problem rozwiazano, czy sie zaostrzyl,bo
kolejka dluzsza.

Ja piszę o automatycznym machaniu RTSem przez uarta odpowiednio
ustawionego.
Jest to funkcja uarta dedykowana właśnie do zastosowania w
RS485.

Ale 16550 chyba jeszcze tego nie ma.
Wiec malo ktory program ma :-(

Quote:
Oczywiście, że machanie tą linią programowo jest uciążliwe, ale i to jest
do zrobienia bo nowoczesne uarty mają dwa bity obsługujące nadajnik: ten co
Ty opisałeś nazywa się "transmitter holding register empty" THRE a jest
jeszcze "transmitter empty" TEMT.

tylko TEMT przerwania nie zglasza.
wiec musisz procesor zmarnowac na pilnowanie, albo jakies
przerwanie/timer dobrac do predkosci :-P

J.

Pszemol
Guest

Sat Sep 23, 2017 12:10 am   



J.F. <jfox_xnospamx@poczta.onet.pl> wrote:
Quote:
Dnia Fri, 22 Sep 2017 19:33:04 -0000 (UTC), Pszemol napisał(a):
J.F. <jfox_xnospamx@poczta.onet.pl> wrote:
Dnia Fri, 22 Sep 2017 17:43:27 -0000 (UTC), Pszemol napisał(a):
Nie musisz mieć swojego procka - wszystkie porty RS232 mają linię RTS która
była historycznie używana zawsze do sterowania kierunkiem nadawania RS485.

Tak mniej wiecej do 1980, bo potem przyszedl IBM i olal.
A moze nie musial olewac, bo wczesniej producenci modemow olali.

Potem jeszcze producenci UARTow olali i malo kto (tzn malo ktory
system) to prawidlowo ustawia w swiecie pecetow.

A co Ty wygadujesz... uarty sie od dawna nie zmieniaja. W
najpopularniejszych 16C550 to masz a reszta to wariacje tego ukladu z
roznymi wielkosciami fifo.

Nie o to chodzi.
8250 o ile pamietam mial 2 bajty bufora wyjsciowego.
Wpisujesz bajt1 do wyslania, a on go zaczyna wysylac, ale ... od razu
mowi ze nadajnik gotowy do wyslania kolejnego znaku i generuje
stosowne przerwanie od nadajnika.
Wpisujesz bajt2 - tym razem rejestr statusu mowi, ze nadajnik zajety.
Jak skonczy wysylac bajt1, to zaczyna wysylac bajt2, ale od razu
status mowi ze bufor nadajnika wolny i generuje przerwanie.
Wpisujesz bajt3, sytuacja sie powtarza.
UART konczy wysylac bajt2, zaczyna wysylac bajt3, zglasza przerwanie -
a program stwierdza, ze nie ma nic wiecej do nadania, wiec konczy
obsluge. A uklad ciagle wysyla kolejne bity.
Wysylanie bajtu3 sie konczy, 8250 ustawia stosowny bit statusu, ze juz
sie nadawanie zakonczylo ... ale przerwania juz nie zglasza.

Czyli program wysylajacy jak juz stwierdzi ze nie ma nic do wyslania,
to musi aktywnie sprawdzac kiedy to wysylanie sie zakonczylo, i kiedy
moze wylaczyc RTS. Mamy np 100MHz procesor a przy 9600 musimy prawie
1ms czekac i sprawdzac czy juz mozna przestawic RTS, zamiast inna
pozyteczna robote robic.

16550 to juz nie pamietam - problem rozwiazano, czy sie zaostrzyl,bo
kolejka dluzsza.

Ja piszę o automatycznym machaniu RTSem przez uarta odpowiednio

ustawionego.
Jest to funkcja uarta dedykowana właśnie do zastosowania w
RS485.

Oczywiście, że machanie tą linią programowo jest uciążliwe, ale i to jest
do zrobienia bo nowoczesne uarty mają dwa bity obsługujące nadajnik: ten co
Ty opisałeś nazywa się "transmitter holding register empty" THRE a jest
jeszcze "transmitter empty" TEMT.

Pszemol
Guest

Sat Sep 23, 2017 2:01 am   



"Dariusz Dorochowicz" <_dadoro_@wp.com> wrote in message
news:oq430a$a57$1@node1.news.atman.pl...
Quote:
Może z tego wydłubiesz?
https://ivel.pl/p2850,konwerter-rs232-rs485.html?gclid=EAIaIQobChMI-cWPu-6z1gIVlcqyCh2ytg9wEAYYASABEgKkhfD_BwE


No więc obczaiłem jak tu działa sterowanie kierunkiem transmisji:
Zwarte DE/RE sterowane TX, transmisja zera włącza nadajnik,
transmisja
jedynki, bitu stopu wyłącza nadajnik...

Czyli zamiast push-pull i polaryzacji pary raz +5V a za drugim
razem -5V
masz tylko 5V i zero volt, pozwalasz odbiornikowi zewrzeć linię w
trakcie
transmisji jedynki opornikiem 120ohm.

Oszukaństwo czy raczej praktyczne rozwiązanie szeroko stosowane??

Wiesz, to ma znaczenie wtedy, kiedy nie masz do dyspozycji sygnału
sterującego nadajnikiem, czyli właśnie w konwerterach i repeaterach.
Jak
masz swojego procka to nie ma to najmniejszego sensu. W "normalnym"
gotowym urządzeniu tylko raz się spotkałem z tym, że trzeba było
wstępnie spolaryzować magistralę - na szczęście wystarczył rezystor z
którejś linii do masy. I to był jakiś kontroler do PC-ta. Z innymi
kontrolerami było OK.


Nie musisz mieć swojego procka - wszystkie porty RS232 mają linię RTS
która
była historycznie używana zawsze do sterowania kierunkiem nadawania
RS485.

Jak masz urządzenie które nie ma fizycznie żadnej linii poza TxD i RxD
to sobie możesz korzystać z RTSa ile wlezie. A jak weźmiesz takiego
AT91SAM9260 który nawet na niektórych UARTach ma RTS tylko starsze
wersje linuxów nie obsługują tego poprawnie to też sobie możesz.

I co wtedy robisz?

Dajesz timer wyzwalany bitem startu do sterowania linią DE/RE? I czas
ustawiasz zgodnie z baudrate?

Czy może robisz tak jak konwerter z linku u góry, że steruje nadajnikiem
tylko w czasie bitu startu i zerowych bitów danych a resztę zostawia
odbiornikom aby sobie radziły z niesterowaną linią?

Temat został odłożony, a teraz jest nieaktualny.
Gdybym miał to jednak zrobić, to słowo daję - nie wiem. Być może nawet
postawiłbym tam po drodze jakiegoś "maluszka" (TINY albo raczej malutkiego
ARMa) żeby się nie zastanawiać, a przy okazji mógłby coś pożytecznego
zrobić co w Linuksie może być trudne... Różne pomysły można mieć. Ale na
pewno przetestowałbym wreszcie właśnie ten układ o którym piszesz i może
właśnie tego użył.

Nie wiem czy się rozumiemy... ja nie chcę kupić, ja nie chcę użyć.
Ja chcę zrobić. Mam dwa urządzenia połączyć, potrzebuję porobić
między nimi interfejsy różne, i między innymi RS232-RS485.
Innymi słowy - chcę "wyprodukować" nową swoją płytkę na której
jedną z kilku funkcji będzie taki konwerter Smile

Pszemol
Guest

Sat Sep 23, 2017 3:05 am   



"J.F." <jfox_xnospamx@poczta.onet.pl> wrote in message
news:1tvazsspi3kcn.gpnzmmyx3ujw.dlg@40tude.net...
Quote:
Dnia Fri, 22 Sep 2017 22:10:25 -0000 (UTC), Pszemol napisał(a):
J.F. <jfox_xnospamx@poczta.onet.pl> wrote:
Nie o to chodzi.
8250 o ile pamietam mial 2 bajty bufora wyjsciowego.
Wpisujesz bajt1 do wyslania, a on go zaczyna wysylac, ale ... od razu
mowi ze nadajnik gotowy do wyslania kolejnego znaku i generuje
stosowne przerwanie od nadajnika.
Wpisujesz bajt2 - tym razem rejestr statusu mowi, ze nadajnik zajety.
Jak skonczy wysylac bajt1, to zaczyna wysylac bajt2, ale od razu
status mowi ze bufor nadajnika wolny i generuje przerwanie.
Wpisujesz bajt3, sytuacja sie powtarza.
UART konczy wysylac bajt2, zaczyna wysylac bajt3, zglasza przerwanie -
a program stwierdza, ze nie ma nic wiecej do nadania, wiec konczy
obsluge. A uklad ciagle wysyla kolejne bity.
Wysylanie bajtu3 sie konczy, 8250 ustawia stosowny bit statusu, ze juz
sie nadawanie zakonczylo ... ale przerwania juz nie zglasza.

Czyli program wysylajacy jak juz stwierdzi ze nie ma nic do wyslania,
to musi aktywnie sprawdzac kiedy to wysylanie sie zakonczylo, i kiedy
moze wylaczyc RTS. Mamy np 100MHz procesor a przy 9600 musimy prawie
1ms czekac i sprawdzac czy juz mozna przestawic RTS, zamiast inna
pozyteczna robote robic.

16550 to juz nie pamietam - problem rozwiazano, czy sie zaostrzyl,bo
kolejka dluzsza.

Ja piszę o automatycznym machaniu RTSem przez uarta odpowiednio
ustawionego.
Jest to funkcja uarta dedykowana właśnie do zastosowania w
RS485.

Ale 16550 chyba jeszcze tego nie ma.
Wiec malo ktory program ma Sad

Ficzerek ten się nazywa "RS-485 half duplex direction control".

Chyba masz rację, oryginalny 16C550 tego jeszcze nie miał,
miały to późniejsze chipy EXARa - od lat jestem jak widać rozpieszczony
używając uartów klasy XR16C850 i podobnych która mają właśnie taki
ficzerek i nie zdawałem sobie nawet sprawy jaki szczęściarz ze mnie ;-)

4.18 Feature Control Register (FCTR) - Read/Write
This register controls the XR16C2850 new functions that are not available in
ST16C550 or ST16C650A.
FCTR[1:0]: Auto RTS Hysteresis
User selectable RTS# hysteresis levels for hardware flow control
application. After reset, these bits are set to
"0" to select the next trigger level for hardware flow control. See Table 5
for more details.
FCTR[2]: IrDa RX Inversion
.. Logic 0 = Select RX input as encoded IrDa data (Idle state will be logic
0).
.. Logic 1 = Select RX input as inverted encoded IrDa data (Idle state will
be logic 1).
FCTR[3]: Auto RS-485 Direction Control
.. Logic 0 = Standard ST16C550 mode. Transmitter generates an interrupt when
transmit holding register
becomes empty and transmit shift register is shifting data out.
.. Logic 1 = Enable Auto RS485 Direction Control function. The direction
control signal, RS485 pin, changes
its output logic state from low to high one bit time after the last stop bit
of the last character is shifted out.
Also, the Transmit interrupt generation is delayed until the transmitter
shift register becomes empty. The
RS485 output pin will automatically return to a logic low when a data byte
is loaded into the TX FIFO.
https://www.exar.com/ds/16c850-231-080905.pdf
No piknie.

Quote:
Oczywiście, że machanie tą linią programowo jest uciążliwe, ale i to jest
do zrobienia bo nowoczesne uarty mają dwa bity obsługujące nadajnik: ten
co
Ty opisałeś nazywa się "transmitter holding register empty" THRE a jest
jeszcze "transmitter empty" TEMT.

tylko TEMT przerwania nie zglasza.
wiec musisz procesor zmarnowac na pilnowanie, albo jakies
przerwanie/timer dobrac do predkosci Razz

No tak, lepiej mieć ficzerek opisany wyżej Smile

Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8  Next

elektroda NewsGroups Forum Index - Elektronika Polska - Jak stworzyć izolowany konwerter bez TTL z RS232 na RS485 - dostępne scalaki?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map