Re: Dwa COM'y na jednym IRQ

Autor: Olaf Swieca (olafs_at_friko5.onet.pl)
Data: Tue 30 Jun 1998 - 21:08:55 MET DST


Dzieki!

Wszystkim, ktorzy odpisali na moj problem dziekuje serdecznie.
Doszedlem do podobnych wnioskow, jednak mialem nadzieje, ze jest to moj
fatalny blad, i ze po prostu czegos nie wiem. Teraz rozumiem, ze uklady
portow szeregowych zintegrowane z plyta glowna nie moga wspoldzieic linii
IRQ, bo moga byc przelaczane na rozne adresy (i przez to na rozne IRQ), co
pociaga za soba koniecznosc dolaczania ich (programowego z poziomu BIOS'a)
do jednej badz drugiej linii. Domyslam sie, ze zostalo to zrobione (w srodku
scalaka) w oparciu o brami trojstanowe, jednak wyjscie takiej bramki nie
jest dalej ORowane (nawet na drucie) lecz podlaczone bezposrednio do linii
IRQ. Malo tego. IRQ jest aktywne stanem wysokim, wiec orowanie nie moze byc
robione za pomoca wyjsc OC, bo te sa raczej do masy (dlaczego? - chyba
dlatego, ze w starych bramkach TTL stan "1" byl generowany z bardzo slabego
wyjscia pradowego i nawet obciazalnosc byla takigo wyjscia mniejsza, chociaz
z drugiej strony wejscia w stanie "1" potrzebowaly mniej pradu [nawet sie
same podciagaly] i wystarczalo jak w stanie "0").
Teraz (CMOS'y) mozna by co prawda zrobic OR'a na drucie, ale nie spotkalem
jeszcze takich bramek, z wyjsciem OC (OpenDrain?) dla stanu wysokiego.
Jedyne rozwiazanie jakie mi przyszlo do glowy i jakie mi radzicie, to pociac
sciezke, wlaczys szeregowa diode i opornik do masy. Ale wewnatrz ukladu to
ja tego nie zrobie, wiec niech mi nie pisza w opisie plyty, ze ma mozliwosc
przelaczania sie na dwa razy cztery COM'y, bo jest to takie polowiczne.
Oczywiscie istnieje rozwiazanie z poolingiem np. na timerze, ale zeby
utrzymac ciaglosc paczki, to przy predkosciach powyzej 19200 nawet po
wlaczeniu kolejek FIFO [a gdy dodatkowe karty sa stare to :-( ]moga byc
problemy z przerwami pomiedzy znakami. Problemem jest tutaj czestotliwosc do
jakiej mozna przyspieszyc przerwanie zegara w PC'cie. Tak nawiasem mowiac
czy ktos z Was nie wie jak dlugo mniej/wiecej trwa obsluga zegara z INT1C?
Przyspieszylem go 64 razy i co 64-ty wywoluje oryginalne przerwanie, ale nie
wiem, czy ono czasami nie trwa dluzej i powoduje, ze gubie niektore impulsy
z CTC.
Na koniec zostaje pooling w programie glownym, ale to moze gubic znaki.
Istnieje jednak rozwiazanie: znalazlem dzisiaj
140,37 zl + VAT + 25 zl przesylka z ELF'y (katalog nr 46, str. 1326) i juz:
dowolne przerwanie, dowolny zegar i predkosc, FIFO itd.
Swiat jest pekny, tylko jak dla mnie to za drogi.

Jeszcze raz dziekuje wszystkim za pomoc. A przy okazji, to jak obsluzyc port
szeregowy pod Win95? Nawet z jednum mam klopot, aby to zrobic ladnie. (BC4.5
lub C++Builder). Jezeli wiecie, to pomozcie. Z gory dziekuje.



To archiwum zostało wygenerowane przez hypermail 2.1.7 : Tue 18 May 2004 - 17:23:11 MET DST