Re: 2 UARTy na jednym IRQ - czy da sie to zrobic w DOSie

Autor: Bartek Dajewski (bartek_at_tradiss.com.pl)
Data: Thu 21 Dec 2000 - 16:37:13 MET


Cześć,

Andrzej Popowski napisał(a) w wiadomości: <3a41198f.12681453_at_news.tpi.pl>...
[...]
>To niestety jest zalezne od sprzetu. Pierwotnie COM byl urzadzeniem na
>szynie ISA i wystawial przerwanie w postaci jedynki TTL. Oczywiscie
>dwa COM-y na jednym przerwaniu nie mogly pracowac, bo nastepuje
>zwarcie wyjsc - ISA nie przewiduje wspoldzielenia przerwan.

No nie wiem... Z dokumentacji do PC XT (sic!) wynika, że da się obsłużyć dwa
COM'y na jednym IRQ. Trzeba tylko rozpoznać, czy przerwanie pochodzi od
sprzętu, który chcemy obsługiwać i jeśli tak, to odpowiednio zareagować (i
wystawić EOI) a jeśli nie - oddać sterowanie do oryginalnej procedury
obsługi (bez wystawiania EOI). W ten sposób można poprawnie obsłużyć dwa
urządzenia w dwóch różnych programach pod warunkiem, że oba trzymają się tej
zasady. W jednym programie oczywiście też. Moje doświadczenia (w czystym
DOS'ie) nie wskazują na zależność działania obsługi IRQ od sprzętu lecz od
programów, ale muszę dodać, że konfiguracje sprzętowe były w zasadzie tylko
dwie, choć na wielu różnych komputerach: COM1 i 2 na płycie + COM3 i 4 na
karcie ISA albo wszystkie cztery COM'y na kartach ISA. Miałem natomiast
kiedyś sterownik do myszki, który obsługiwał przerwanie nie sprawdzając, czy
pochodzi od myszki i nie przekazywał sterowania dalej. W efekcie "odcinał"
program obsługi zainstalowany wcześniej.
    Do listu Michała dodałbym tylko, że najmłodszy bit IIR określa, czy w
ogóle wystąpiło przerwanie i jeśli jest jedynką (tzn. "nie generowałem
przerwania"), to w ogóle nie ma potrzeby sprawdzać pozostałych bitów
(przynajmniej u mnie to działa).

>Oczywiscie mozesz rowniez obslugiwac COM-y bez przerwan, np.
>podlaczajac sie do przerwania zegarowego. Przy dzisiejszych
>komputerach i RS z FIFO nie powinienes miec z tym wiekszego problemu.

IMHO to bardzo ryzykowne. Przerwanie zegarowe ma 18.2Hz, a UART (np. 16550)
ma 16-bajtową kolejkę. W efekcie kolejka się przepełnia już przy brędkości
ok. 2400 bodów (chyba, że coś pokręciłem w obliczeniach).

---
Pozdrawiam :-)
Bartek
PS. [OT] Coś mi się przypomniało ... Czy wiecie, że skrót XT oznacza
Extended Technology ? Naprawdę. A wcześniejsze modele PC (bez XT w nazwie)
były sprzedawane z 16kb RAM. To jest dopiero śmieszne :-)))


To archiwum zostało wygenerowane przez hypermail 2.1.7 : Tue 18 May 2004 - 21:04:12 MET DST