eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaIzolowany konwerter zrobić z RS232 na RS485Re: Izolowany konwerter zrobić z RS232 na RS485
  • Data: 2017-09-23 05:05:41
    Temat: Re: Izolowany konwerter zrobić z RS232 na RS485
    Od: "Pszemol" <P...@P...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

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

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

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: