115200 baud, win95 i overrun



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
From: gr <gred_at_nospam_kki.net.pl>
Subject: 115200 baud, win95 i overrun
Date: Wed, 30 May 2001 23:35:35 +0200


Cześć!

Ma tu ktos moze praktyczne doswiadczenia z odbiorem 115200 baud pod
win95 i chcialby sie tymi doswiadczeniami podzielic?
Czy ma to szanse chodzic bez przepelniania bufora FIFO w 16650A?
Bajty nadchodza duzymi paczkami (ponad 500 bajtow) bez najmniejszych
przerw w takiej paczce, a jeden bajt to 10 taktow (bez parzystosci, 1
bit stop). Pecet to dajmy na to Pentium 200MHz. Miedzy paczkami
wolnego czasu jest ok. 20%.

Zalozmy, ze ustawiamy w UART-cie zglaszanie przerwania juz po
odebraniu 1 bajtu. W rezerwie pozostaje 15 bajtow FIFO czyli ok. 1.3
ms. Wydaje sie to byc wiecznoscia przy procesorze 200MHz. Niemniej,
jak wiadomo, winda jest nieobliczalna i nie zdziwilbym sie, ze cos tam
w niej blokuje przerwania na tak dlugi czas.

Dane maja charakter strumienia i wlasciwie ich retransmitowanie byloby
klopotliwe. Mozna by paczki podzielic na mniejsze ale wowczas dojda
dodatkowe naglowki, sumy kontrolne itp. a czasu na retransmisje bedzie
jeszcze mniej.

Konkretnie to cos takiego juz niby chodzi (na windowsowym API) ale
wlasnie z czestymi "overrunami" z UART-a. Nie wiem czy "ten typ tak
ma", czy tez mozna tego uniknac? Program Terminal (Tadeusza
Baranczyka) odbiera to bez zaciec, wiec jednak da sie to jakos zrobic.
Tylko w czym moze tkwic problem?

Pisanie programow na PC-ta nie jest tym czym na co dzien sie zajmuje,
a obsluge RS-a na PC pisalem troche lat temu jeszcze pod DOS-a,
dlatego chetnie poczytam o Waszych doswiadczeniach. Tak po prawdzie,
to nie ja pisze ten program lecz mlodszy kolega, ktory szczerze mowiac
dopiero poznaje ten temat i chcialbym mu jakos pomoc. Ja mam
latwiejsze zadanie, bo pisze program, ktory to nadaje (na DSP56002).

gr


Poprzedni Następny
Wiadomość
Spis treści
From: "korinsj" <korinsj_at_nospam_poland.com>
Subject: Re: 115200 baud, win95 i overrun
Date: Thu, 31 May 2001 07:01:51 +0200



Użytkownik gr <gred_at_nospam_kki.net.pl> w wiadomości do grup dyskusyjnych
napisał:01dahtcflp22lbkfvhnr514o9vs345p8st_at_nospam_news.tpi.pl...
Cześć!

Ma tu ktos moze praktyczne doswiadczenia z odbiorem 115200 baud pod
win95 i chcialby sie tymi doswiadczeniami podzielic?
Czy ma to szanse chodzic bez przepelniania bufora FIFO w 16650A?
Bajty nadchodza duzymi paczkami (ponad 500 bajtow) bez najmniejszych
przerw w takiej paczce, a jeden bajt to 10 taktow (bez parzystosci, 1
bit stop). Pecet to dajmy na to Pentium 200MHz. Miedzy paczkami
wolnego czasu jest ok. 20%.

Zalozmy, ze ustawiamy w UART-cie zglaszanie przerwania juz po
odebraniu 1 bajtu. W rezerwie pozostaje 15 bajtow FIFO czyli ok. 1.3
ms. Wydaje sie to byc wiecznoscia przy procesorze 200MHz. Niemniej,
jak wiadomo, winda jest nieobliczalna i nie zdziwilbym sie, ze cos tam
w niej blokuje przerwania na tak dlugi czas.

Dane maja charakter strumienia i wlasciwie ich retransmitowanie byloby
klopotliwe. Mozna by paczki podzielic na mniejsze ale wowczas dojda
dodatkowe naglowki, sumy kontrolne itp. a czasu na retransmisje bedzie
jeszcze mniej.

Konkretnie to cos takiego juz niby chodzi (na windowsowym API) ale
wlasnie z czestymi "overrunami" z UART-a. Nie wiem czy "ten typ tak
ma", czy tez mozna tego uniknac? Program Terminal (Tadeusza
Baranczyka) odbiera to bez zaciec, wiec jednak da sie to jakos zrobic.
Tylko w czym moze tkwic problem?

Pisanie programow na PC-ta nie jest tym czym na co dzien sie zajmuje,
a obsluge RS-a na PC pisalem troche lat temu jeszcze pod DOS-a,
dlatego chetnie poczytam o Waszych doswiadczeniach. Tak po prawdzie,
to nie ja pisze ten program lecz mlodszy kolega, ktory szczerze mowiac
dopiero poznaje ten temat i chcialbym mu jakos pomoc. Ja mam
latwiejsze zadanie, bo pisze program, ktory to nadaje (na DSP56002).

gr


Ja na 115200 pod winem komunikuje sie z Nokia 5110. No ale paczki maja co
najwyzej kilkadziesiat bajtow i leca w dlugich odstepach.
Czy wasza procedurka pod wina obsluguje transmisje szeregowa synchronicznie,
czy asynchronicznie? Jesli asynchronicznie, to moze ustawic zadania taska na
maxa? (TimeCritical)

Slawek




Poprzedni Następny
Wiadomość
Spis treści
From: "Jacek Poźniak" <j.pozniak_at_nospam_metron.torun.pl>
Subject: Re: 115200 baud, win95 i overrun
Date: Thu, 31 May 2001 07:53:20 +0100



Użytkownik "gr" <gred_at_nospam_kki.net.pl> napisał w wiadomości
news:01dahtcflp22lbkfvhnr514o9vs345p8st_at_nospam_news.tpi.pl...
Cześć!

Ma tu ktos moze praktyczne doswiadczenia z odbiorem 115200 baud pod
win95 i chcialby sie tymi doswiadczeniami podzielic?
Czy ma to szanse chodzic bez przepelniania bufora FIFO w 16650A?
Bajty nadchodza duzymi paczkami (ponad 500 bajtow) bez najmniejszych
przerw w takiej paczce, a jeden bajt to 10 taktow (bez parzystosci, 1
bit stop). Pecet to dajmy na to Pentium 200MHz. Miedzy paczkami
wolnego czasu jest ok. 20%.

Nie ma problemu
Pozdrawiam
JP



Poprzedni Następny
Wiadomość
Spis treści
From: Andrzej =?ISO-8859-2?Q?Zy=B6k?= <azysk_at_nospam_st.com.pl>
Subject: Re: 115200 baud, win95 i overrun
Date: Thu, 31 May 2001 12:14:58 +0200


gr wrote:

Cześć!

Ma tu ktos moze praktyczne doswiadczenia z odbiorem 115200 baud pod
win95 i chcialby sie tymi doswiadczeniami podzielic?
Czy ma to szanse chodzic bez przepelniania bufora FIFO w 16650A?
Bajty nadchodza duzymi paczkami (ponad 500 bajtow) bez najmniejszych
przerw w takiej paczce, a jeden bajt to 10 taktow (bez parzystosci, 1
bit stop). Pecet to dajmy na to Pentium 200MHz. Miedzy paczkami
wolnego czasu jest ok. 20%.

Zalozmy, ze ustawiamy w UART-cie zglaszanie przerwania juz po
odebraniu 1 bajtu. W rezerwie pozostaje 15 bajtow FIFO czyli ok. 1.3
ms. Wydaje sie to byc wiecznoscia przy procesorze 200MHz. Niemniej,
jak wiadomo, winda jest nieobliczalna i nie zdziwilbym sie, ze cos tam
w niej blokuje przerwania na tak dlugi czas.

IMHO ustaw próg zgłaszania przerwania na 12 bajtów, tak jak jest to
zrobione domyślnie w w95, teraz masz po prostu 11520 przerwań na sekundę co
daje ci 87us na obsługę przerwania, sama zmiana kontekstu na przełączanie
zadania to normalnie kilkadziesiąt mikrosekund, operacje typu czytaj_port,
zapisz_port to 1us na każdą a będzie ich trochę, poza tym masz jeszcze inne
ważne przerwania które nie lubią czekać: IDE, timer, klawiatura.
Przesyłanie dużych paczek z tą szybkością niczym się nie różni od używania
modemu na porcie szeregowym, z tą różnicą że transmisja z modemem jest
realizowana najczęściej z użyciem sprzętowej kontroli przepływu.
[ciach]

Pozdrawiam
--
Andrzej Zyśk Tel: +48 22 668 75 50
Security Technologies Sp. z o.o. Fax: +48 22 668 99 67
ul. Joteyki 20 Email: azysk_at_nospam_st.com.pl
02-317 Warszawa, Poland

Poprzedni Następny
Wiadomość
Spis treści
From: "Jacek Poźniak" <j.pozniak_at_nospam_metron.torun.pl>
Subject: Re: 115200 baud, win95 i overrun
Date: Thu, 31 May 2001 14:23:21 +0100



IMHO ustaw próg zgłaszania przerwania na 12 bajtów, tak jak jest to
zrobione domyślnie w w95, teraz masz po prostu 11520 przerwań na
sekundę...
chyba ok 1152
....z tą różnicą że transmisja z modemem jest
realizowana najczęściej z użyciem sprzętowej kontroli przepływu.
Ale chyba tylko w stronę modemu.
Pozdrawiam
JP



Poprzedni Następny
Wiadomość
Spis treści
From: Andrzej =?ISO-8859-2?Q?Zy=B6k?= <azysk_at_nospam_st.com.pl>
Subject: Re: 115200 baud, win95 i overrun
Date: Thu, 31 May 2001 16:04:57 +0200


Jacek Poźniak wrote:


IMHO ustaw próg zgłaszania przerwania na 12 bajtów, tak jak jest to
zrobione domyślnie w w95, teraz masz po prostu 11520 przerwań na
sekundę...
chyba ok 1152
Na pewno nie, błąd rachunkowy każdemu może się przydarzyć, ale konsekwencje
mogą być przykre, więc:

szybkość: 115200 bps
popularna ramka transmisji asynchronicznej 8N1: 8bitów danych, 1 start, 1
stopu razem 10
szybkość[bps]/długość_ramki[bits]=szybkość[bytes]
115200/10=11520

....z tą różnicą że transmisja z modemem jest
realizowana najczęściej z użyciem sprzętowej kontroli przepływu.
Ale chyba tylko w stronę modemu.
Nie spotkałem się z żadnym urządzeniem, które nadawałoby i odbierało na
różnych szybkościach.
Oczywiście to z jaką modulacją pracuje modem(czyli w praktyce jak szybko
może przesyłać dane w jedną i w drugą stronę) nijak się ma do szybkości z
jaką komunikuje się z UART'em.
Dorwałem kiedyś taki modem wewnętrzny 2400bps, bez kompresji, bez korekcji
błędów, a zgłaszał że ma UART zgodny z 16550A i komunikował się z nim na
115200bps.
Kontrola przepływu jest dwukierunkowa (RTS/CTS).

Pozdrawiam

--
Andrzej Zyśk Tel: +48 22 668 75 50
Security Technologies Sp. z o.o. Fax: +48 22 668 99 67
ul. Joteyki 20 Email: azysk_at_nospam_st.com.pl
02-317 Warszawa, Poland

Poprzedni Następny
Wiadomość
Spis treści
From: jfox_at_nospam_friko6.onet.pl (J.F.)
Subject: Re: 115200 baud, win95 i overrun
Date: 31 May 2001 14:22:33 GMT


On Thu, 31 May 2001 16:04:57 +0200, Andrzej Zyśk <azysk_at_nospam_st.com.pl> wrote:
Jacek Poźniak wrote:
IMHO ustaw próg zgłaszania przerwania na 12 bajtów, tak jak jest to
zrobione domyślnie w w95, teraz masz po prostu 11520 przerwań na
sekundę...
chyba ok 1152
Na pewno nie, błąd rachunkowy każdemu może się przydarzyć, ale konsekwencje
mogą być przykre, więc:

szybkość: 115200 bps
popularna ramka transmisji asynchronicznej 8N1: 8bitów danych, 1 start, 1
stopu razem 10
szybkość[bps]/długość_ramki[bits]=szybkość[bytes]
115200/10=11520

No - tyle nadchodzi bajtow na sekunde. Ale nie po to masz 16550A, zeby
przerwanie bylo co kazdy bajt zglaszane ..
To by sie trzeba bylo w klubie SDI pytac - oni tam maja pelna predkosc
na okraglo. Raczej sobie winda radzi ..

....z tą różnicą że transmisja z modemem jest
realizowana najczęściej z użyciem sprzętowej kontroli przepływu.
Ale chyba tylko w stronę modemu.
Nie spotkałem się z żadnym urządzeniem, które nadawałoby i odbierało na
różnych szybkościach.

Specyfikacja chyba V.23 - modem 1200, kanal powrotny 75.
Ale to prehistoria. No i w przypadku peceta mozemy o tym zapomniec.

J.