Przerwania, c++, isa



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "Marcin" <nicram_s_at_nospam_wp.pl>
Subject: Przerwania, c++, isa
Date: Mon, 19 May 2003 18:52:09 +0200


Moj problem:
moja karta prototypowa na magistrali isa ma generowac przerwania na linii
IRQ12 magistralii ISA.
Potrzebuje programowo wykryc i obsluzyc to przerwanie. Czy moglby mi ktos
cos poradzic jak to zrobic gdyz mecze sie z tym juz kilka dni?
Uzywam Borland C++ 3.1. Probowalem uzywac funkcjii getvect() oraz
setvect() - jak na razie bez pozytywnego skutku.

Bardzo licze na pomoc szanownych grupowiczow.

Marcin





========
Path: news-archive.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Piotr Nabielec" <eloy_at_nospam_go2.pl>
Subject: Re: Przerwania, c++, isa
Date: Mon, 19 May 2003 20:44:27 +0200


Moj problem:
moja karta prototypowa na magistrali isa ma generowac przerwania na linii
IRQ12 magistralii ISA.
Potrzebuje programowo wykryc i obsluzyc to przerwanie. Czy moglby mi ktos
cos poradzic jak to zrobic gdyz mecze sie z tym juz kilka dni?
Uzywam Borland C++ 3.1. Probowalem uzywac funkcjii getvect() oraz
setvect() - jak na razie bez pozytywnego skutku.

Przerwania sie na szczescie nie wykrywa :)

Po pierwsze ustaw wektor przerwania. Jesli pracujesz w BC3.1 to faktycznie
setintvec i getintvec, musisz zwrocic uwage, ze int12 != IRQ12.
Inty z kontrolera pierwszego (IRQ0-IRQ7) zazwyczaj w dosie ustawiane sa
08-0Fh, więc IRQ7 to int0F.
Inty z kontrolera drugiego (IRQ8-IRQ15) zazwyczaj w dosie mapowane sa na
70-77h.
Tak wiec Twoje IRQ12 magistrali ISA to przerwanie 74h tak naprawde i tym
numerkiem musisz sie posluzyc przy setintvec.
Uwazaj, bo IRQ12 zabierane jest przez myszki PS/2 zazwyczaj, wiec czasami
jakies sterowniki myszy lubia tam troche namieszac.

Wypadaloby Ci jeszcze w lapke wrzucic opis 8259A... szukaj opisu portow
A0-AF. (pierwszy kontroler wisi na porcie 20h).
Musisz generalnie wlaczyc to przerwanie IRQ12. A do tego w procedurze
obslugi przerwania musisz wyslac EOI (20h) do kontrolera przerwan, bo
inaczej zblokuje reszte intow o nie wyzszym priorytecie, wiec stana Ci
wszystkie urzadzenia wiszace na intach tego kontrolera.

Pozdrawiam

Piotrek





========
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!not-for-mai