-
51. Data: 2017-09-22 21:52:34
Temat: Re: Izolowany konwerter zrobić z RS232 na RS485
Od: Dariusz Dorochowicz <_...@w...com>
W dniu 2017-09-22 o 21:33, Pszemol pisze:
> J.F. <j...@p...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
-
52. Data: 2017-09-22 21:58:20
Temat: Re: Izolowany konwerter zrobić z RS232 na RS485
Od: Pszemol <P...@P...com>
Dariusz Dorochowicz <_...@w...com> wrote:
> W dniu 2017-09-22 o 19:43, Pszemol pisze:
>> Dariusz Dorochowicz <_...@w...com> wrote:
>>> W dniu 2017-09-22 o 16:52, Pszemol pisze:
>>>> t-1 <t...@t...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?gcl
id=EAIaIQobChMI-cWPu-6z1gIVlcqyCh2ytg9wEAYYASABEgKkh
fD_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ą?
-
53. Data: 2017-09-22 21:58:21
Temat: Re: Izolowany konwerter zrobić z RS232 na RS485
Od: Pszemol <P...@P...com>
Dariusz Dorochowicz <_...@w...com> wrote:
> W dniu 2017-09-22 o 21:33, Pszemol pisze:
>> J.F. <j...@p...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?
-
54. Data: 2017-09-22 22:20:36
Temat: Re: Izolowany konwerter zrobić z RS232 na RS485
Od: "J.F." <j...@p...onet.pl>
Dnia Fri, 22 Sep 2017 19:33:04 -0000 (UTC), Pszemol napisał(a):
> J.F. <j...@p...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.
-
55. Data: 2017-09-23 00:10:25
Temat: Re: Izolowany konwerter zrobić z RS232 na RS485
Od: Pszemol <P...@P...com>
J.F. <j...@p...onet.pl> wrote:
> Dnia Fri, 22 Sep 2017 19:33:04 -0000 (UTC), Pszemol napisał(a):
>> J.F. <j...@p...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.
-
56. Data: 2017-09-23 00:23:34
Temat: Re: Izolowany konwerter zrobić z RS232 na RS485
Od: Dariusz Dorochowicz <_...@w...com>
W dniu 2017-09-22 o 21:58, Pszemol pisze:
> Dariusz Dorochowicz <_...@w...com> wrote:
>> W dniu 2017-09-22 o 21:33, Pszemol pisze:
>>> J.F. <j...@p...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
-
57. Data: 2017-09-23 00:31:44
Temat: Re: Izolowany konwerter zrobić z RS232 na RS485
Od: Dariusz Dorochowicz <_...@w...com>
W dniu 2017-09-22 o 21:58, Pszemol pisze:
> Dariusz Dorochowicz <_...@w...com> wrote:
>> W dniu 2017-09-22 o 19:43, Pszemol pisze:
>>> Dariusz Dorochowicz <_...@w...com> wrote:
>>>> W dniu 2017-09-22 o 16:52, Pszemol pisze:
>>>>> t-1 <t...@t...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?gcl
id=EAIaIQobChMI-cWPu-6z1gIVlcqyCh2ytg9wEAYYASABEgKkh
fD_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
-
58. Data: 2017-09-23 00:47:55
Temat: Re: Izolowany konwerter zrobić z RS232 na RS485
Od: "J.F." <j...@p...onet.pl>
Dnia Fri, 22 Sep 2017 22:10:25 -0000 (UTC), Pszemol napisał(a):
> J.F. <j...@p...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 :-(
> 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.
-
59. Data: 2017-09-23 04:01:35
Temat: Re: Izolowany konwerter zrobić z RS232 na RS485
Od: "Pszemol" <P...@P...com>
"Dariusz Dorochowicz" <_...@w...com> wrote in message
news:oq430a$a57$1@node1.news.atman.pl...
>>>>>>> Może z tego wydłubiesz?
>>>>>>> https://ivel.pl/p2850,konwerter-rs232-rs485.html?gcl
id=EAIaIQobChMI-cWPu-6z1gIVlcqyCh2ytg9wEAYYASABEgKkh
fD_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 :-)
-
60. Data: 2017-09-23 05:05:41
Temat: Re: Izolowany konwerter zrobić z RS232 na RS485
Od: "Pszemol" <P...@P...com>
"J.F." <j...@p...onet.pl> wrote in message
news:1tvazsspi3kcn.gpnzmmyx3ujw.dlg@40tude.net...
> Dnia Fri, 22 Sep 2017 22:10:25 -0000 (UTC), Pszemol napisał(a):
>> J.F. <j...@p...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 :-(
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.
>> 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
No tak, lepiej mieć ficzerek opisany wyżej :-)