[RS-232] Jaki stan na linii RTS?



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
From: voice <po.co_at_nospam_komu.dzis>
Subject: [RS-232] Jaki stan na linii RTS?
Date: Wed, 19 May 2004 20:54:25 +0200


Cześć!
Spotkałem się z dziwną rzeczą...
Mam w domu dwa komputery. Podłączam moje urządzonko do COM'a pierwszego
komputera i wszytstko jest ok. Transmisja działa.
Podłączam do drugiego komputera (identyczna konfiguracja) i transmisja
już nie działa.

Szukam więc błędu... Łączę dwa komputery przewodem (skrzyżowane TXD z
RXD i CTS z RTS, a DTR i DSR zwarte we wtyczce przewodu) i trasmisja jest!

Co do licha?

Pomierzyłem więc poziomy napięć na pinach portów.
W obu komputerach wszystko się zgadza, poza jedną rzeczą - w jednym
(tym, na którym transmisja jest ok) na RTS jest -10V, a w drugim jest
+10V. Jak więc powinno być?

I to chyba tego wina, bo jak zwarłem CTS i RTS to transmisja ruszyła.

Jednak muszę zrobić coś, żeby wszystko działało bez dodatkowych zworek.

Może wiecie jak zmusic port, żeby pracował w takiej konfiguracji jak na
pierwszym komputerze? Aha, pracuję pod linuksem.

Oto jak mam podłączone moje urządzenie:
komp: urządzenie:
TXD ----------- RXD
RXD ----------- TXD
RTS ----------- CTS
CTS ----------- RTS
DTR -+
|
DSR -+
GND ----------- GND

Proszę o rady!

Pozdrawiam,
voice


========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.ipartners.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "andrzej_wilk" <pisz.do.andrzej_at_nospam_sielanka.gda.pl.com>
Subject: Re: [RS-232] Jaki stan na linii RTS?
Date: Thu, 20 May 2004 08:14:23 +0200



Użytkownik "voice" <po.co_at_nospam_komu.dzis> napisał w wiadomości
news:c8ga3g$mok$1_at_nospam_inews.gazeta.pl...
Cześć!
Spotkałem się z dziwną rzeczą...
Mam w domu dwa komputery. Podłączam moje urządzonko do COM'a pierwszego
komputera i wszytstko jest ok. Transmisja działa.
Podłączam do drugiego komputera (identyczna konfiguracja) i transmisja
już nie działa.

Szukam więc błędu... Łączę dwa komputery przewodem (skrzyżowane TXD z
RXD i CTS z RTS, a DTR i DSR zwarte we wtyczce przewodu) i trasmisja jest!

Co do licha?

Pomierzyłem więc poziomy napięć na pinach portów.
W obu komputerach wszystko się zgadza, poza jedną rzeczą - w jednym
(tym, na którym transmisja jest ok) na RTS jest -10V, a w drugim jest
+10V. Jak więc powinno być?

...
Może wiecie jak zmusic port, żeby pracował w takiej konfiguracji jak na
pierwszym komputerze? Aha, pracuję pod linuksem.

A jaki program uruchamiasz na linuksie - prostego minicom'a, czy jakiś
dedykowany.
Czy te programy ustawiają identycznie hardware flow control ??

Andrzej



========
Path: news-archive.icm.edu.pl!news.gazeta.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "voice" <po.co_at_nospam_komu.dzis>
Subject: Re: [RS-232] Jaki stan na linii RTS?
Date: Fri, 21 May 2004 00:06:49 +0200


A jaki program uruchamiasz na linuksie - prostego minicom'a, czy jakiś
dedykowany.
Czy te programy ustawiają identycznie hardware flow control ??

Odpalam własny soft.
Jeśli wyłączę kontrolę przepływu

options.c_cflag &= ~CRTSCTS;

to transmisja na tym drugim kompie działa (+10V na RTS).
Jeśli natomiast kontrola przepływu jest włączona:

options.c_cflag |= CRTSCTS;

to już mi na tym komputerze nie działa... Ale na tym pierwszym jest ok!

Oto jak konfiguruje port w programie:

#v+
// open port
fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY);

tcflush(fd, TCIOFLUSH);

// set blocking mode
fcntl(fd, F_SETFL, 0);

// get current options and store them in old_options
tcgetattr(fd, &options);
tcgetattr(fd, &old_options);

// set flow rates
cfsetispeed(&options, B57600);
cfsetospeed(&options, B57600);

// enable receiver and set local mode
options.c_cflag |= (CLOCAL | CREAD);

// set no parity
options.c_cflag &= ~PARENB;
options.c_cflag &= ~CSTOPB;

// set character size
options.c_cflag &= ~CSIZE;
options.c_cflag |= CS8;

// hardware flow control
options.c_cflag |= CRTSCTS;

// set raw input
options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);

// set raw output
options.c_oflag &= ~OPOST;

// set new options
tcsetattr(fd, TCSANOW, &options);
#v-

Zatem który UART jest ok? Ten z +10V czy -10V na RTS?

Pozdrawiam,
voice

--
unsigned int gg = 2627828;


========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!news.onet.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: J.F. <jfox_nospam_at_nospam_poczta.onet.pl>
Subject: Re: [RS-232] Jaki stan na linii RTS?
Date: Fri, 21 May 2004 02:30:28 +0200


On Fri, 21 May 2004 00:06:49 +0200, voice wrote:
Zatem który UART jest ok? Ten z +10V czy -10V na RTS?

Oba :-)

Linia RTS, Request To Send, teoretycznie ustawia sie w stan aktywny
[+10V, dokladniej +3 do +15V] gdy komputer [DTE] chce wyslac dane.
Urzadzenie z drugiej strony [DCE] potwierdza gotowosc do przyjecia
danych stanem aktywnym na linii CTS [wejsciowa w komputerze].

Komputer powinien byc tak oprogramowany, zeby nie wysylal danych
o ile CTS nie jest w stanie aktywnym.

Ale teraz mamy pelna gale mozliwosci:
a) twoje urzadzenie wymaga +10V na linii RTS, np do zasilania ... albo
nie.

b) komputer nie aktywuje RTS bo zapomniales tego zrobic.
c) komputer deaktywuje, bo nie ma nic do wyslania [cos pod modemy
half duplex]

d) RTS nie ma znaczenia, urzadzonko nie wystawia CTS
e) spalony pin CTS w komputerze i program nie widzi stanu aktywnego.

chociaz ruszenie po zwarciu CTS z RTS sugeruje port jest dobry,
cos z urzadzeniem lub kablem.
A moze wylacz kontrole przeplywu ?

J.


========
Path: news-archive.icm.edu.pl!news.gazeta.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "voice" <po.co_at_nospam_komu.dzis>
Subject: Re: [RS-232] Jaki stan na linii RTS?
Date: Fri, 21 May 2004 13:52:25 +0200


Linia RTS, Request To Send, teoretycznie ustawia sie w stan aktywny
[+10V, dokladniej +3 do +15V] gdy komputer [DTE] chce wyslac dane.
Urzadzenie z drugiej strony [DCE] potwierdza gotowosc do przyjecia
danych stanem aktywnym na linii CTS [wejsciowa w komputerze].

Zgadza się.

Komputer powinien byc tak oprogramowany, zeby nie wysylal danych
o ile CTS nie jest w stanie aktywnym.

Tak, ale to jest zadanie sterownika portu szeregowego. Ja nie mam na to
wpływu.

Ale teraz mamy pelna gale mozliwosci:
a) twoje urzadzenie wymaga +10V na linii RTS, np do zasilania ... albo
nie.

Nie, nie wymaga. "Urządzenie" to moduł bluetooth podczepiony do koputera
przez MAX'a 3232. Moduł ma wyprowadzone TXD, RXD, CTS i RTS -- zakładam
więc, że ma sprzętową kontrolę przepływu.

b) komputer nie aktywuje RTS bo zapomniales tego zrobic.

No właśnie to jest zadanie sterownika. Ja tylko piszę do pliku (portu) a
sterownik powinien zająć się kontrolą przepływu.
Spróbuję pisać do portu non stop i zobaczę na oscyloskopie czy cokolwiek
dzieje się na RTS czy TXD.

A moze wylacz kontrole przeplywu ?

No właśnie kiedy ją wyłączam
options.c_cflag &= ~CRTSCTS;
to wszystko gra...

Nie rozumiem tylko tego, dlaczego na dwóch komputerach w tej samej
konfiguracji port działa inaczej :/

Pozdrawiam,
voice

--
unsigned int gg = 2627828;


========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: J.F. <jfox_nospam_at_nospam_poczta.onet.pl>
Subject: Re: [RS-232] Jaki stan na linii RTS?
Date: Fri, 21 May 2004 19:19:36 +0200


On Fri, 21 May 2004 13:52:25 +0200, voice wrote:
Komputer powinien byc tak oprogramowany, zeby nie wysylal danych
o ile CTS nie jest w stanie aktywnym.

Tak, ale to jest zadanie sterownika portu szeregowego. Ja nie mam na to
wpływu.

Zazwyczaj masz - ty ustawiasz jak sterownik ma dzialac.


b) komputer nie aktywuje RTS bo zapomniales tego zrobic.
No właśnie to jest zadanie sterownika. Ja tylko piszę do pliku (portu) a
sterownik powinien zająć się kontrolą przepływu.
Spróbuję pisać do portu non stop i zobaczę na oscyloskopie czy cokolwiek
dzieje się na RTS czy TXD.

Warte sprawdzenia.

A moze wylacz kontrole przeplywu ?

No właśnie kiedy ją wyłączam
options.c_cflag &= ~CRTSCTS;
to wszystko gra...

Nadal nie wiesz czy problemem jest nieaktywny stan widziany na CTS
i komp nic nie wysyla, czy moze urzadzenie nie wysyla.

Nie rozumiem tylko tego, dlaczego na dwóch komputerach w tej samej
konfiguracji port działa inaczej :/

Tak samo oprogramowane [dysk przekladasz ?] ?

Bo jeszcze sa mozliwe niekompatybilnosci napieciowe - np +2V na jednym
komputerze to stan aktywny, na drugim nieaktywny.


J.


========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai