Програмируем контролер на прекъсвания I8259A Печат
Написано от sevda   
Вторник, 23 Април 2013 07:03

2 Теоретична постановка

2.1. Регистри

2.1.1. Регистър за заявки за прекъсвания (IRR)

В него се съхраняват всички заявки за прекъсвания, постъпващи по линии

IRQ0-IRQ7. В зависимост от установения режим на контролера, разредите му се

установяват по нарастващ фронт или при високо ниво на съответните входни

сигнали.

2.1.2. Регистър на обслужваните заявки (ISR)

В него се съхраняват всички заявки за прекъсвания, чието обслужване е

започнало.

2.1.3. Регистър за маски на прекъсванията (IMR)

Зарежда се програмно и съхранява индивидуалните маски на заявките за

прекъсвания, постъпващи по линиите IRQ0-IRQ7. Ако даден бит от маската е 1, то

съответната заявка се блокира.

2.1.4. Логика за определяне на приоритета

В зависимост от съдържанието на регистри IRR, ISR и IMR определя

необходимостта от изработване на сигнал за прекъсване INT към процесора.

Всеки от разредите на IRR е свързан с определен приоритет, който в зависимост

от установения режим на контролера може да бъде фиксиран или да се изменя

след всяко обработено прекъсване. Сигналът INT се формира след избиране на

най-приоритетната немаскирана заявка за прекъсване и постъпва директно на

вход INTR на процесора. Ако тази заявка се приеме по линия INTA към

контролера на прекъсвания се изпращат два последователни импулса за

разпознаване на прекъсването. По втория от тях контролерът предава към

процесора кода на приетото прекъсване по шина данни. Едновременно с това се

установява съответния бит на регистъра за обслужване на заявките ISR и се

смъква съответния бит в IRR. Нова заявка за прекъсване към контролера I8259A

се приема, в случай, че не е маскирана и има по-висок приоритет от обслужваните

в момента заявки.

2.1.5. Управляваща логика за четене и запис

По сигнал за запис WR при активен сигнал CS се извършва зареждане на

инициализиращи командни думи ICW и операционни командни думи OCW в

съответните регистри на контролера. По сигнал за четене RD при активен сигнал

CS към процесора се предава съдържанието на регистрите IRR, ISR и IMR. За

избор на вътрешните регистри се използва само адресна линия A0. Обръщенията

са в точно определена последователност.

2.1.6. Адресен компаратор

Използва се при каскадно свързване на няколко контролера. Един от

контролерите се дефинира като главен, а останалите като подчиниени.

2.2. Управляващи думи и режими на работа

Действието на контролера се програмира чрез два типа управляваща

информация, предавана от процесора: инициализиращи командни думи ICW и

операционни командни думи OCW. Първите се използват за начално

установяване на контролера в определено състояние, а вторите – за управление

на операциите в него и за изменение на работните режими. Вътрешните регистри

на контролера заемат два адреса от входно-изходното адресно пространство

(портове $020 и $021 за главния контролер и портове $0A0 и $0А1 за каскадно

свързания контролер). При активни сигнали CS и WR командните думи ICW и

OCW се предават за запис в съответните вътрешни регистри на контлера по шина

данни.

2.2.1. Инициализиращи командни думи (ICW)

Установяването на необходимото начално състояние и на режимите на

работа се извършва чрез запис u1085 на последователност от два до четири байта,

наречни ICW.

Инициализиращите командни думи са четири като ICW1 и ICW2 се задават от

процесора винаги, а ICW3 и ICW4 са необходими, само ако това е указано в ICW1.

След инициализиране на контролера изменения в ICW са възможни само при

изпълнение на цялата последователност по програмирането им.