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

Autor: Andrzej Popowski (popej_at_priv1.onet.pl)
Data: Thu 21 Dec 2000 - 22:02:18 MET


Thu, 21 Dec 2000 16:37:13 +0100, "Bartek Dajewski"
<bartek_at_tradiss.com.pl> piszesz:

>>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ż.

Chyba patrzysz na to wylacznie od strony oprogramowania kontrolerow
PC, ktore akurat nie stanowi problemu. Natomiast sprzet nie jest
przystosowany do wspoldzielenia przerwan. Styki kazdego IRQ na szynie
ISA sa zwarte miedzy slotami i prowadza wprost do kontrolera 8259A (w
XT/AT). Jak ustawisz 2 karty na jedno przerwanie, to moze sie okazac,
ze jedna karta ma silniejsze wyjscie i druga nie jest w stanie wymusic
jedynki, aby zasygnalizowac przerwanie.

>>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).

Zapomniales, ze zegar jest programowalny z rozdzielczoscia rzedu 1 us.
Kiedys obslugiwalem COMa bez FIFO na 9600. To chodzilo na komputerze
klasy XT 12MHz, o ile dobrze pamietam.

Pozdrowienia,

Andrzej Popowski



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