
- •Передмова
- •Intel 430lx
- •Intel 430nx
- •Intel 430fx
- •Intel 430hx
- •Intel 430vx
- •Intel 430tx
- •Intel 450gx/kx
- •Intel 440fx
- •Intel 440lx agPset
- •Intel 440ex
- •Intel 440bx agPset
- •Заняття 1. Поняття про систему переривання пеом
- •Принципи організації системи переривання програм
- •Слово стану процесора (програми)
- •Характеристики системи переривання
- •Організація переходу до перериваючої програми та пріоритетне обслуговування запитів переривання
- •Процедура переривання з опитуванням джерел (прапорців) переривання
- •Програмно-керований пріоритет перериваючих програм
- •Методи використання механізму переривань
- •Класи переривань пеом
- •Призначення контролера апаратних переривань пеом
- •Опис основних елементів і8259а
- •Стани програмованого контролера переривань
- •Заняття 5. Керування режимами роботи пкп
- •Void main (void){
- •Int mask;
- •Заняття 6. Керування пріоритетами переривань
- •Install proc near
- •Заняття 8. Особливості практичного використання апаратних та програмних переривань
- •Volatile long ticks;
- •Void main(void) {
- •Void _interrupt _far timer(void) {
- •Int8 proc near cli
- •Int09 proc near
- •Розділ 3. Підсистема таймера та годинника реального часу
- •Заняття 3. Системні засоби програмного доступу до ресурсів таймера
- •Void tm_delay(int ticks) {
- •Void main (void){
- •Void main(void){
- •Заняття 4. Приклади використання функціональних можливостей таймера в прикладних задачах
- •Void main(void){ int Frac; char k;
- •Void tm_sound(int freq, int time) {
- •Void tm_delay(int ticks) {
- •Void tm_sound(int freq, int time){
- •Void main(){
- •Void main() { int I,j; clrscr();
- •Заняття 5. Архітектура та принципи функціонування годинника реального часу
Void main (void){
unsigned i;
Int mask;
char c = 'y';
clrscr();
printf("\n\Ведучий контроллер (MASTER)"
"\n ");
//Встановлюємо режим опитування ведучого контролера. //Формуємо 0CW3 та передаємо за адресою 20h, тобто //дозволяємо читання регістра IRR
outp(0x20, 0x0a); //Читаємо стан регістра IRR
printf("\nCTaH регістра IRR :%02.2Х", іnр(0х20));
//Встановлюємо режим опитування ведучого //контролера.
//Формуємо 0CW3 та передаємо за адресою 20h, тобто //дозволяємо читання регістра ISR
outp(0x20, 0x0b); //Читаємо стан регістра ISR
printf("\nCтан регістра ISR :%02.2Х", іnр(0х20)); //Читаємо стан регістра IMR
printf("\nCTaH регістра IMR :%02.2Х", іnр(0х21)); while (c != 'п'){
printf("\n\nBBeAiTb шістнадцятковий код маски або код розмаскування '); scanf("%x", &mask); outp(0x21,mask);
printf("\nCTaH регістра IMR після маскування :%02.2X",inp(0x21));
printf("\n\nГотово !!!, бажаєте ще (Y/N)"); с = getch();
}
За текстом програми нарисуйте схему алгоритму.
На вінчестері створіть каталог РКР.
За допомогою редактора середовища програмування Borland C++ V3.01 створіть символьний файл тексту вивченої Вами програми та запишіть його в каталог РКР.
Виконайте налагодження програми та запустіть її на виконання. Увага!!! При вводі коду слова маски уникайте маскування переривання контролера клавіатури та відеосистеми. Зробіть висновки про Ваш досвід з маскування переривань.
Спробуйте розробити пропозиції з модернізації програми таким чином, щоб з її допомогою можна було б ідентифікувати та отримати на екрані список контролерів замаскованих пристроїв.
Зробіть відповідні зміни в програмі, що дозволять визначити вміст програмно доступних регістрів веденого ПКП.
Увага!!! У кінці роботи запустіть програму на виконання та розмаскуйте всі переривання.
Питання для самоконтролю знань
Яку структуру переривань підтримує режим фіксованих пріоритетів?
Яка послідовність обробки запитів на переривання в режимі фіксованих пріоритетів?
Наведіть приклад взаємодії програм оброблювачів переривань з різними рівнями пріоритетів у режимі повного вкладення та вкажіть порядок їх виконання.
За допомогою якої команди здійснюється скидання тригерів регістра ISR?
Які способи завершення переривання (ЕОІ) Ви знаєте?
Призначення та характеристики звичайної команди ЕОІ. В яких випадках доцільно її застосовувати?
Призначення та характеристики спеціальної команди ЕОІ. В яких випадках доцільно її застосовувати?
Призначення та характеристики команди автоматичного завершення переривання АЕОІ. В яких випадках доцільно її застосовувати?
Для яких цілей використовується режим маскування переривань?
10.Чим маскування переривань відрізняється від заборони переривань скиданням прапорця IF процесора?
Спеціальний режим маскування (SMM). В яких випадках його доцільно застосовувати?
Наведіть приклад обслуговування запитів на переривання в режимі спеціального маскування.
Поясніть відмінність між режимами ініціалізаціїзапитів фронтом та рівнем.
Для яких цілей використовується режим читання стану контролера І8259А?
Вкажіть порядок дій, необхідних для ініціалізації режиму читання стану контролера І8259А.
Призначення режиму опитування джерел переривань (POLL).
Призначення режиму спеціального повного вкладення (SFNM).
Резюме
Система переривань ПЕОМ є багаторежимною та програмно доступною для встановлення або зміни поточного режиму обслуговування.
Режим фіксованих пріоритетів підтримує багаторівневу структуру переривань з фіксованим порядком пріоритетів від вищого пріоритету до нижчого. В базовій конфігурації PC AT цей режим використовується як основний. Після ініціалізації вищий пріоритет може бути замінений та присвоєний і іншим входам IRQ при збереженні багаторівневої структури переривань режиму повного вкладення.
Після завершення виконання програми оброблювача переривання І8259А повинен бути сповіщений про це для скидання відповідних розрядів ISR. Користувачу доступні три різні формати команди кінця переривання ЕОІ:
звичайна команда ЕОІ;
спеціальна команда ЕОІ;
автоматичний режим ЕОІ (АЕОІ).
Вибір цих команд визначається користувачем для конкретних застосувань.
Основна перевага використання звичайних команд ЕОІ полягає в тому, що на відміну від спеціальних команд тут не вимагається вказувати рівень IRQ. Спеціальна команда
ЕОІ конкретно вказує, який розряд повинен бути скинутий в ISR. Перевага автоматичного режиму ЕОІ полягає в непотрібності формування та передавання контролеру спеціальних команд завершення обробки переривання.
У І8259А є регістр IMR (регістр маски переривання), який розширює можливості керування перериваннями. На відміну від тимчасової заборони або дозволу всіх переривань встановленням розряду IF у регістрі прапорців процесора, IMR дає можливість індивідуального маскування IRQ.
У випадках, коли необхідно дозволити переривання більш низького пріоритету порівняно з виконуваною програмою оброблювача або, іншими словами, дозволити пристроям з більш низьким пріоритетом генерувати переривання, можна використовувати спеціальний режим маскування (SMM).
Шляхом програмного керування користувач може запитувати стан І8259А. Це дозволяє читати внутрішні регістри переривань, що може бути корисним для керування перериваннями під час виконання сервісних програм. З цією метою використовується режим опитування джерел переривань (POLL).
Ваш наступний крок
У цьому занятті Ви побачили, які існують режими функціонування системи переривання і як вони дозволяють користувачам самим встановлювати найбільш раціональний поточний режим для підвищення ефективності обчислювальної системи по обробці запитів переривання. Але для більш повного оволодіння принципами програмного керування системою переривання, необхідно навчитись динамічно змінювати дисципліни обслуговування переривань у заданому режимі ініціалізації. Ці принципи та технологія їх застосування будуть розглянені у наступному занятті.