Re: Dwa COM'y na jednym IRQ

Autor: Krzysztof Halasa (khc_at_intrepid.pm.waw.pl)
Data: Mon 29 Jun 1998 - 23:58:58 MET DST


olafs_at_priv5.onet.pl (Olaf Swieca) writes:

> Od paru dni staram sie uruchomic programik, ktory wysyla i odbiera
> jednoczesnie przez dwa porty szeregowe. I wszystko OK jezeli sa to np. COM1
> i COM2, lub 1 i 4 itd, tzn. chodzace na roznych IRQ.
> Jak tylko probuje 1 i 3, to przestaje dzialac, ale tak strasznie dziwnie,
> tzn. gdy wysylam przez jeden port znak, to nie generuje mi to przerwania, a
> gdy wysle takze przez drugi, to przerwanie sie generuje (ktory pierwszy, to
> niewazne)( Moze byc takze odebranie znaku, niewazne co, wazne, aby tu i tu
> bylo zgloszenie). To tak, jakby musial wystapic warunek, gdy oba porty chca
> przerwania i wtedy jest ono generowane.

No coz. Tak to juz niestety ma prawo dzialac. Winni sa ludzie z IBMa,
ktorzy ten element PC zaprojektowali bardzo nieudolnie.

> Ogladalem linie IRQ w komputerze (sonda logiczna) i faktycznie przerwanie
> nie jest generowane gdy tylko jeden port chce, a jest, gdy oba. Malo tego,
> jezeli nie ma zgloszen, to na tej linii jest stan "0" logiczne, a gdy jest
> tylko jedno zgloszenie, to na tej linii wystepuje dziwne napiecie (ok. 0.9
> do 1.0 V) i jest ono dosyc stabilne (probowalem opornikiem 100om do masy i
> plusa i slabo oddzialuje).
> Pytanie: czy wyjscia z linii INT ukladow UART portow szeregowych sa ze soba
> zwarte ?

Tak. Porty powinny posiadac wyjscia trojstanowe, stan aktywny oczywiscie
wysoki, natomiast stan wysokiej impedancji wystepuje, jesli nie jest
ustawione uzywanie przez dany port IRQ (wtedy takze sterownik IRQ nie
jest odpowiednio zaprogramowany).

Oczywiscie mozna zaprogramowac oba porty, by generowaly IRQ - wtedy
oba wyjscia IRQ sa zwarte, a poniewaz zwarcie do masy jest zwykle
silniejsze od logicznej jedynki (np. nasycony tranzystor vs tranzystor
z rezystorem w kolektorze), to wygrywa IRQ nieaktywny.

> I co nalezy zrobic, aby te przerwania jednak chodzily.

Sa karty, ktore chodza - po prostu logiczna '1' jest silniejsza.
Sa karty, ktore maja kilka(nascie) portow, i ktore maja sumowanie IRQ
ze wszystkich portow (na jednej karcie). Wtedy jest tak, ze np. wszystkie
sygnaly IRQ przechodza przez jedna bramke OR.

Oczywiscie, jesli ktos bardzo by chcial, mozna zrobic malenki ukladzik,
ktory bedzie sumowal linie IRQ z roznych portow. Mysle, ze nawet wersja
z rezystorem do masy i diodami do poszczegolnych portow moglaby dzialac:

              ___|\|___
IRQ z karty 1 |/| |
                       |
              ___|\|___|_____ IRQ na slocie ISA
IRQ z karty 2 |/| |
                        | |
                        | | 500 ohm
                         |
                        ---
Inna sprawa, ze lepiej dac prawdziwa bramke trojstanowa OR - albo
nawet nie trojstanowa, jesli tylko te karty moga uzywac tego IRQ
(w ogole, nie w tym samym czasie).

-- 
Krzysztof Halasa
Network Administrator of The Palace of Youth in Warsaw


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