Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[AVR][RS485][Linux] - Sterowanie kierunkiem transmisji

piterek-23 18 Wrz 2014 23:16 1014 3
  • #1 18 Wrz 2014 23:16
    piterek-23
    Poziom 32  

    Witam.

    Czy jest taka możliwość podłączenia układu MAX485 pod RS232 w PC aby można było wykorzystać PC jako master w sieci RS485?

    AVT ma w swojej ofercie moduł, który sam steruje kierunkiem transmisji, ale u mnie coś to nie działa jak trzeba :(

    Do sedna:
    1. Czy ktoś posiada/widział schemat konwertera RS232/USB -> RS485 bez żadnych "automatów"
    2. Jak sterować kierunkiem transmisji w systemie Linux (Debian) poprzez skrypty Basch?

    0 3
  • #2 04 Paź 2014 18:16
    tomekgl
    Poziom 15  

    Po co konwertować USB na RS232, a potem na RS485?

    Użyj FT232 + dowolny driver RS485 (SN75176 albo MAX485), OIDP w nocie katalogowej FT jest gotowy przykład konwertera USB/485.
    Do automatycznego sterowania kierunkiem możesz użyc gotowej funkcji jednego z portów GPIO w FT232, a w przypadku konieczności ręcznego sterowania możesz odwoływać się do poszczególnych portów GPIO z poziomu biblioteki libftdi. Ewentualnie linię DI podpiąć do nieużywanej linii RSa, np. RTS,CTS.

    Której drogi byś nie wybrał, sterowania bezpośrednio z Basha jest słabe, cięzko będzie dopilnować zależności czasowych, a i tak zmiana kierunku będzie wymagać wywołania zewnętrznego programu. Skłaniałbym się ku C, Perlowi lub Pythonowi, są gotowce i przykłady.

    0
  • #3 04 Paź 2014 21:48
    Eagle
    Poziom 23  

    Nie wiem jak jest w systemach linux, natomiast w systemach windows standardem jest sterownie kierunkiem transmisji za pomocą linii RTS. W strukturze DBC wystarczy ustawić pole fRtsControl na wartość RTS_CONTROL_TOGGLE aby otrzymać automatyczne sterowanie kierunkiem transmisji.
    Specifies that the RTS line will be high if bytes are available for transmission. After all buffered bytes have been sent, the RTS line will be low.
    Czyli w jednym zdaniu, linia RTS dla nadawania będzie miała logiczny stan wysoki i gdy dane zostaną wysłane powróci do stanu niskiego.
    Zakładam, że jest to standard i podobnie będzie w linux'ie, więc musisz szukać jak sterować linią RTS.

    0
  • #4 05 Paź 2014 09:32
    piterek-23
    Poziom 32  

    Najpierw miałem konwerter RS232 -> RS485 (AVT530) były z nim problemy z prędkością max 4800.Pomyślałem, że zrobię konwerter na ATtiny2313, MAX485 i NE555-konwerter działał, ale prędkość max 19200.
    Parę osób polecało właśnie sterować MAX485 wprost z komputera. Naczytałem się różnych opinii, opisów i wydało mi się, że nie jest to takie "hop-siup" dlatego kupiłem konwerter USB -> RS485 na FT232RL i wszystko działa jak należy, w tej chwili przy prędkości 115200 zero jakiegokolwiek błędu i problemu.

    Mój konwerter podobno obsługuje prędkość 300-9216000bps. Jaka prędkość będzie "bezpieczna" dla konwertera, ATtiny2313/Atmega8 i sieci RS485 (długość max 100m)?

    0