eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika › Izolowany konwerter zrobić z RS232 na RS485
Ilość wypowiedzi w tym wątku: 107

  • 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 :-)

strony : 1 ... 5 . [ 6 ] . 7 ... 11


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: