69377

Архітектура паралельних портів та підсистема переривань

Лекция

Коммуникация, связь, радиоэлектроника и цифровые приборы

Існує два способи обміну даними між зовнішніми пристроями (ЗВПР) і мікропроцесорною системою (МПС): паралельний, коли одночасно передаються всі біти або декілька біт слова даних; послідовний, коли біти слова даних пересилаються по черзі, починаючи, наприклад, з його молодшого розряду.

Украинкский

2014-10-04

910.5 KB

1 чел.

РОЗДІЛ 3 ОСОБЛИВОСТІ АРХІТЕКТУРИ ОКРЕМИХ ФУНКЦІОНАЛЬНИХ МОДУЛІВ МІКРОКОНТРОЛЕРА

Тема 3.2 Паралельні порти та підсистема переривань

леКЦІЯ 6 Архітектура Паралельних портів та підсистема переривань


  1.  місце паралельних портів у структурі мікроконтролера

Існує два способи обміну даними між зовнішніми пристроями (ЗВПР) і мікропроцесорною системою (МПС):

  •  паралельний, коли одночасно передаються всі біти або декілька біт слова даних;
  •  послідовний, коли біти слова даних пересилаються по черзі, починаючи, наприклад, з його молодшого розряду.

ЗВПР зв'язується з МПС лініями зв'язку, довжина яких при паралельному обміні обмежена і складає кілька метрів.

Мікроконтролер типу МК-51, наприклад, AT89C51, містить 4 паралельних 8-розрядних порти введення/виведення дискретної інформації: P0, P1, P2, P3 (рисунок 1). Ці порти можна запрограмувати.

Порти Р0, Р1, Р2, Р3 є двонаправленими портами введення/виведення і призначені для забезпечення обміну інформацією МК-ра із зовнішніми пристроями, створюючи 32 лінії введення/виведення. Кожний з портів містить фіксатор-защіпку, що являє собою восьмирозрядний регістр, який має байтову і бітову адресацію для встановлення/скидання його розрядів за допомогою відповідних команд.

Фізичні адреси фіксаторів Р0, Р1, Р2, Р3 становлять для:

Р0 – 80Н, при бітовій адресації 80Н – 87Н;

Р1 – 90Н, при бітовій адресації 90Н – 97Н;

Р2 – А0Н, при бітовій адресації А0Н – А7Н;

Р3 – В0Н, при бітовій адресації В0Н – В7Н.

Крім роботи в якості звичайних портів введення/виведення лінії портів Р0-РЗ можуть виконувати ряд додаткових функцій, описаних нижче.

Рисунок 1 – Структурна схема МК АТ89С51

Через порт Р0:

  •  виводиться молодший байт адреси А0-А7 при роботі з зовнішньою пам'яттю програм і зовнішньою пам'яттю даних;
  •  видається з МК-ра і приймається в МК-р байт даних при роботі з зовнішньою пам'яттю (при цьому обмін байтом даних і виведення молодшого байта адреси зовнішньої пам'яті мультиплексовані в часі);
  •  задаються дані при програмуванні внутрішнього ПЗП, і читається вміст внутрішньої пам'яті програм.

Через порт Р1:

  •  задається молодший байт адреси при програмуванні внутрішнього ПЗП і при читанні внутрішньої пам'яті програм.

Через порт Р2:

  •  виводиться старший байт адреси А8-А15 при роботі з зовнішньою пам'яттю програм і зовнішньою пам'яттю даних (для зовнішньої пам'яті даних – тільки при використанні команд МОVХ  А, @DРТR і МОVХ  @DРТR, А, що формують 16-розрядну адресу);
  •  задаються старші розряди А8–А11 адреси при програмуванні внутрішнього ПЗП і при читанні внутрішньої пам'яті програм.

Кожна лінія порту Р3 має індивідуальну альтернативну функцію:

Р3.0 – RxD, вхід послідовного порту, призначений для введення послідовних даних у приймач послідовного порту;

Р3.1 – ТхD, вихід послідовного порту, призначений для виведення послідовних даних із передавача послідовного порту;

Р3.2 – , використовується як вхід 0 зовнішнього запиту переривання;

Р3.3 – , використовується як вхід 1 зовнішнього запиту переривання;

Р3.4  Т0, використовується як вхід лічильника зовнішніх подій Т/Л0;

Р3.5  Т1, використовується як вхід лічильника зовнішніх подій Т/Л1;

Р3.6 – , строб запису в зовнішню пам'ять даних, вихідний сигнал, який супроводжує виведення даних через порт Р0 при використанні команд МОVХ  @Ri, А і МОVХ  @DРТR, А;

Р3.7 – , строб читання із зовнішньої пам'яті даних, вихідний сигнал, який супроводжує введення даних через порт Р0 при використанні команд МОVХ  А, @Ri і МОVХ  А, @DРТR.

Альтернативна функція будь-якої з ліній порту Р3 реалізується тільки в тому випадку, якщо у відповідному цій лінії фіксаторі-защіпці міститься сигнал "лог. 1". Інакше на лінії порту Р3 буде присутній сигнал "лог. 0".

  1.  використання паралельних портів введення/виведення
  2.  Загальні відомості

Як зазначено в р. 1, порти Р0…Р3 можуть використовуватись як:

  •  8-розрядні паралельні порти введення/виведення інформації;
  •  однорозрядні лінії введення/виведення;
  •  при роботі з зовнішньою пам’яттю програм і даних;
  •  в режимі альтернативних функцій (8 ліній порту Р3);
  •  при програмуванні та перевірці РПП.

Сигналом “RESET” в регістри-защіпки всіх портів автоматично записуються одиниці, що налаштовує усі 32 лінії портів на введення інформації, а вісім ліній порту Р3, крім цього, – на режим “альтернативних” функцій.

  1.  Особливості роботи порту P0

На рисунку 2 наведена спрощена структурна схема i-го розряду порту Р0, яка пояснює його роботу в двох основних режимах:

  •  робота з зовнішньою пам’яттю програм або даних (ЗПП або ЗПД);
  •  робота в якості порту введення/виведення.

В залежності від типу команд, які виконуються в даний час, (робота з портами або із запам’ятовуючим пристроєм (ЗП)) внутрішній сигнал «керування» приймає значення: “лог. 0” – Р0 використовується як порт введення/виведення; “лог. 1” – порт використовується для роботи з ЗП.

  1.  Особливості роботи P0 із ЗП (ЗПП або ЗПД)

При роботі із ЗП сигнал “керування” дорівнює “лог. 1”. Мультиплексор МХ знаходиться у верхньому положенні. На вхід інвертора та один із входів кон’юнктора надходить значення i-го розряду молодшого байта адреси ЗП: 1/0. Після інвертора воно приймає значення 0/1. У зв’язку з тим, що на другому вході кон’юнктора присутній сигнал “лог. 1”, вихідний сигнал кон’юнктора повторює значення i-го розряду адреси: 1/0. Таким чином, на затворах транзисторів VT1 і VT2 присутні дві протилежні комбінації логічних сигналів:

1/0 на затворі VT1

                                  при значенні i-го біта адреси 1/0

0/1 на затворі VT2

В схемі використані МОН-польові транзистори з каналом типу n. Якщо на затворі такого VT присутній сигнал “лог. 1”, то транзистор відкритий, а якщо сигнал “лог. 0” –  закритий. Отже, якщо в i-му біті адреси видається сигнал “лог. 1”, то VT1 – відкритий, а VT2 – закритий, і з i-го виводу порту 0 знімається також сигнал “лог. 1”. Якщо ж у i-му біті адреси присутній сигнал “лог. 0”, то VT1 – закритий, а VT2 – відкритий. З виходу при цьому знімається сигнал “лог. 0”. Сказане ілюструє таблиця 1.

Рисунок 2 – Спрощена структурна схема порту Р0 (і-го виводу)

Таблиця 1 – Значення вихідних сигналів транзисторів

Значення i-го біта молодшого байта адреси виведених даних

Сигнали на затворах транзисторів

Стан транзисторів

Значення вихідного сигналу

VT1

VT2

VT1

VT2

0

0

1

закритий

відкритий

0

1

1

0

відкритий

закритий

1

Виводи порту Р0 при роботі з ЗП використовуються в режимі мультиплексування: спочатку видається молодший байт МБ адреси ЗП, а потім через виводи видаються або приймаються дані (видаються при роботі з ЗПД, а приймаються при роботі з ЗПП або ЗПД). Необхідно звернути увагу на те, що при зчитуванні ЗПП або ЗПД на нижній транзистор VT2 апаратно автоматично подається сигнал “лог. 0”, VT2 закривається і не шунтує i-й вивід Р0, через який відбувається зчитування з пам’яті. Необхідно відзначити також, що при виконанні команд роботи із зовнішньою пам'яттю в тригери-защіпки порту Р0 автоматично записуються сигнали “лог. 1”.

  1.  Особливості роботи P0 в якості портів введення/виведення

Сигнал “керування” дорівнює нулю (рисунок 2). МХ знаходиться в нижньому положенні. На затворі VT1 постійно присутній сигнал “лог. 0” і він закритий.

  1.  Виведення даних через P0

Через РШД внутрішнім сигналом “запис в тригер” значення i-го виведеного біта запам’ятовується в тригері-защіпці. При виведенні  значення “лог. 0” сигналом високого рівня, що знімається з виходу  тригера-защіпки, транзистор VT2 відкривається (VT1 закритий постійно), і з i-го виводу порту Р0 видається значення “лог. 0”. При виведенні значення “лог. 1” сигналом низького рівня, що знімається з виходу  тригера-защіпки, транзистор VT2 закривається (VT1 закритий постійно), а i-й вивід Р0 виявляється “обірваним” – знаходиться в z-стані. Тому для виведення сигналу “лог. 1” через i-й вивід, коли Р0 працює як порт виведення, необхідно включати зовнішній резистор стоку  між  та i-м виводом порту Р0 (рисунок 2). Такий резистор називається «таким, що підтягує вивід до джерела ».

  1.  Введення даних через P0

При введенні даних відповідний тригер-защіпка повинний бути встановлений в 1. У протилежному випадку (якщо він встановлений в 0) VT2 – відкритий і шунтує i-й вивід, тобто постійно буде вводитись значення “лог. 0”.

В тригерах-защіпках встановити значення “лог. 1” на виході можна різними засобами:

  •  сигналом “RESET” автоматично у всі тригери-защіпки записується сигнал “лог. 1”;
  •  при виконанні команд, які працюють із ЗП (ЗПП чи ЗПД), автоматично в тригери-защіпки записується сигнал “лог. 1”;
  •  командами, які працюють із портом Р0 в цілому;
  •  командами, які працюють з окремими бітами Р0.

При виконанні команд “введення” формується внутрішній сигнал “зчитування виводів”, який через буфер В2 передає значення i-го виводу Р0 на РШД.

  1.  Спеціальний режим використання порту P0: режим “зчитування - модифікація – запис”

В цьому режимі порт Р0 працює в тих випадках, коли при виконанні команд порт є одночасно операндом і місцем призначення результату. При цьому інформація зчитується не з зовнішніх виводів, а з тригерів-защіпок. Це відбувається при формуванні внутрішнього сигналу “зчитування ТГ” через буфер В1 (рисунок 2). Всередині мікроконтролера відбувається модифікація вмісту i-го розряду тригера-защіпки відповідно до команди, що виконується, а потім запис нового значення знову в тригер-защіпку.

Якщо зчитувати інформацію не з тригерів-защіпок, а з зовнішніх виводів, то можлива помилка. Наприклад, якщо одиничний вихідний сигнал керує якимось потужним виконавчим елементом, то цей сигнал може падати за рівнем і при зчитуванні з виводу Р0, а не із защіпки, може сприйматися як сигнал “лог. 0” замість сигналу “лог. 1”.

  1.  Особливості роботи порту P1

Порт Р1 не використовується при роботі з зовнішньою пам'яттю, тому на відміну від портів P0 і P2 є “чистим” портом введення/виведення.

Структура Р1 наведена в [] і дуже подібна на розглянуту вище схему порту Р0 (рисунок 2).

Порт Р1 містить 8 тригерів-защіпок, буфери введення/виведення, декілька МОН-транзисторів, один із яких виконує функцію зовнішнього (“підтягуючого”) резистора Rc, групу додаткових логічних елементів для підвищення швидкодії.

Порт Р1 може використовуватися в режимі “зчитування – модифікація – запис”, який описаний при розгляді структури і особливостей функціонування порту Р0.

Крім застосування в якості порту введення/виведення порт Р1 застосовується при програмуванні та перевірці РПП [].

Кожна з восьми ліній порту Р1 може програмуватись незалежно одна від одної на введення або виведення інформації.

  1.  Особливості роботи порту P2

Структура порту Р2 наведена в [] і виконана аналогічно за схемами портів Р0, Р1. Крім введення/виведення порт Р2 використовується для видачі старшого байта адреси при роботі з зовнішньою пам’яттю, тому його схема також, як і схема порту Р0, містить мультиплексор. Порт Р2 бере участь у програмуванні та перевірці РПП і також може використовуватися у режимі “зчитування – модифікація – запис”, який описаний вище. Кожна з восьми ліній порту Р2 може програмуватись незалежно одна від одної на введення або виведення інформації.

  1.  Особливості роботи порту P3

Спрощена структура i-го виводу (i = 0, 1, …, 7)  порту Р3 наведена на рисунку 3.

Рисунок 3 – Спрощена структурна схема порту Р3 (і-го виводу)

Р3 може працювати як двонаправлений 8-розрядний порт введення/виведення інформації або виконувати альтернативні функції.

  1.  Робота Р3 в режимі “альтернативних функцій”

Р3 може виконувати три альтернативні функції виходу і п'ять альтернативних функцій входу (рисунок 3).

  1.  Виконання портом Р3 альтернативних функцій виходу

Порт Р3 може виконувати три альтернативні функції виходу. При цьому використовуються такі його виводи:

  •  Р3.1 (TxD) – вихід послідовного порту, призначений для виведення послідовних даних із передавача послідовного порту;
  •  Р3.6 (WR) – вихід, з якого знімається сигнал – строб запису у ЗПД при виконанні команд MOVX  @Ri, A; MOVX  @DPTR, A;
  •  P3.7 (RD) – вихід, з якого знімає сигнал  – строб зчитування з ЗПД при виконанні команд MOVX  A, @Ri; MOVX  A, @DPTR.

Щоб одна з 3-х ліній Р3 могла виконувати названі функції, у відповідний тригер-защіпку регістра порту повинен бути записаний сигнал “лог. 1”, який з одиничного виходу тригера подається на нижній вхід кон’юнктора (рисунок 3).

Якщо значення альтернативної функції виходу 0/1, то після елемента І-НІ воно перетвориться в 1/0 і поступає на затвор МОН-транзистора VT1 з n-каналом. Якщо на вході транзистора присутній сигнал “лог. 1”, то він відкритий, а якщо сигнал “лог. 0” – то закритий. Таким чином, з виходу транзистора і відповідного виходу порту знімається значення 0/1, яке дорівнює значенню альтернативної функції.

  1.  Виконання портом Р3 альтернативних функцій входу

Порт Р3 може виконувати п’ять альтернативних функцій входу. При цьому використовуються такі його виводи:

  •  Р3.0 (RxD) – вхід послідовного порту, призначений для введення послідовних даних у приймач послідовного порту;
  •  P3.2 (INT0) – використовується як вхід 0 зовнішнього запиту на переривання;
  •  P3.3 (INT1) – використовується як вхід 1 зовнішнього запиту на переривання;
  •  P3.4 (T0) – вхід лічильника зовнішніх подій T/C0;
  •  P3.5 (T0) – вхід лічильника зовнішніх подій T/C1.

В схемах вказаних п’ятьох ліній порту Р3 сигнал “альтернативна функція виходу” приймає одиничне значення. В тригери-защіпки порту повинен бути записаний сигнал “лог. 1”. Сигналом “лог. 0” на затворі вихідний транзистор закритий і не шунтує вхід порту (рисунок 3).

  1.  Робота Р3 у якості порту виведення

У трьох розрядах порту Р3: Р3.1, Р3.6 і Р3.7, які використовуються у якості альтернативних функцій виходу, внутрішній сигнал “альтернативна функція виходу” дорівнює “лог. 1”, якщо в даний момент не виконується команда MOVX і немає виведення даних із передавача послідовного порту. В інших п'ятьох розрядах Р3 вказаний сигнал постійно приймає значення “лог. 1”. У цьому випадку сигналом на виході порту керує відповідний тригер-защіпка. Якщо тригер встановлений в 1, то Р3.i = 1, а якщо тригер знаходиться в 0, то Р3.i = 0.

  1.  Робота Р3 у якості порту введення

В цьому випадку у відповідний тригер-защіпку повинен бути записаний сигнал “лог. 1”, щоб вихідний транзистор VT1 був закритий і не шунтував i-й вивід порту. Внутрішнім сигналом “зчитування виводів” (введення) через буфер В2 сигнал, який вводиться, передається на резидентну шину даних (РШД).

Аналогічно іншим портам Р3 може використовуватись в режимі “зчитування – модифікація – запис” (описаний при розгляді роботи порту Р0).

Варто підкреслити, що кожен біт порту Р3 може програмуватися незалежно один від одного і використовуватися, як вхід чи вихід, або виконувати одну з альтернативних функцій.

  1.  характеристика підсистеми переривань Мікроконтролера
  2.  Загальні відомості

Система переривань у мікропроцесорних системах (МПС) призначена для прийому, пріоритетної обробки і обслуговування запитів переривань. В загальному випадку запити переривань можуть формуватися по командам програми, внутрішніми та зовнішніми джерелами. Прийом та обробку програмних і внутрішніх переривань виконують внутрішні засоби процесора. При проектуванні системи переривань для обробки програмних і внутрішніх переривань процесорів, виконаних на однокристальних МП або МК необхідно розробити підпрограми обслуговування переривань. Для обробки зовнішніх переривань потрібно розробити зовнішні апаратні засоби. Джерелами зовнішніх переривань в МПС є пристрої введення/виведення; пристрої, що задають час; аварійні ситуації (наприклад, аварія живлення та подібні). Вихідною інформацією при проектуванні системи переривань є число запитів переривань, які обслуговуються, розподілення їх пріоритетів, час на обслуговування і т.ін. При проектуванні системи переривань від зовнішніх чинників вирішують задачі обробки запитів переривань і формування сигналу переривання для процесора; відмови та дозволу прийому запитів переривань під час виконання програм; ідентифікації джерел запитів переривань; передачі керування підпрограмам обслуговування запитів переривань; збереження поточного стану процесора при переході до підпрограм обслуговування запитів переривань і його відновлення після завершення підпрограм; обробки пріоритетів запитів переривань; сполучення засобів підтримки системи переривань з процесором.

Засоби, які реалізують обмін за перериванням в мікропроцесорних системах, називаються підсистемою переривання.

Переривання МП-в та МК-в можуть програмно маскуватися. Для цього використовуються прапорці (тригери), які приймають два значення:

  •  нуль, переривання заборонено;
  •  одиниця, переривання дозволено.

Існують два види прапорців маскування переривань:

  •  прапорець глобального (загального) маскування переривань від периферійних пристроїв (модулів);
  •  прапорці маскування переривань від окремих периферійних модулів мікроконтролера.

Для кожного можливого переривання при проектуванні МПС розроблюється відповідна підпрограма, яка зберігається в пам’яті МПС. Для того, щоб викликати потрібну підпрограму обробки переривання треба визначити її адресу. Як це зробити, залежить від типу конкретного МП-ра або МК-ра, який використовується в МПС.

При одночасному надходженні переривань від декількох джерел діє система пріоритетів, особливості якої залежать від типу конкретного МП-ра або МР-ра.

Загальний підхід призначення пріоритетів переривань полягає в тому, що, як правило, існують дві ступені розподілу пріоритетів. Перша ступінь реалізована апаратно і дозволяє при одночасному запиті від декількох джерел обрати одне із більш високим пріоритетом.

Друга ступінь реалізується програмно. При цьому для кожного джерела переривання в мікроконтролері використовується окремий прапорець (тригер), який програмно або встановлюється в 1, що задає цьому перериванню високий пріоритет, або складається в 0, що задає низький пріоритет. Очевидно, що переривання із більш високим програмно заданим пріоритетом перерве підпрограму обслуговування переривання із більш низьким програмно встановленим пріоритетом.

  1.  Підсистема переривань мікроконтрлера AT89C51
  2.  Загальні відомості

МК AT89C51 має підсистему переривань із п'ятьма векторами (адресами підпрограм обробки переривань) і двома рівнями пріоритетів. Джерелами переривань являються: два зовнішніх переривання, що надходять через порт 3; два переривання від переповнення таймерів-лічильників Т/С0 і T/C1 та переривання при завершенні передавання або прийому даних при обміні через послідовний порт.

Підсистема переривань включає два керуючих регістри, за допомогою яких програмується підсистема, а також схему логічної обробки прапорців переривань, яка здійснює пріоритетний вибір запиту переривання, скидання його прапорця та ініціює формування апаратно реалізованої команди переходу на підпрограму обслуговування переривання LCALL.

Схема вироблення вектора переривання формує двобайтові адреси підпрограм обслуговування переривання в залежності від джерела переривання.

  1.  Структура підсистеми переривань

На рисунку 4 зображені всі можливі джерела переривання і порядок їхньої обробки.

Кожне з зовнішніх переривань  може бути активоване за рівнем ("0") або за фронтом (перехід з "1" в "0") сигналів на лініях МК-ра Р3.2, Р3.3, що визначається станом бітів IT0 та IT1 регістра TCON. При надходженні запиту зовнішнього переривання  (х = 0, 1) встановлюється прапорець IЕх (х = 0, 1) регістра TCON.

Встановлення прапорців IЕх у регістрі TCON викликає відповідне переривання, якщо воно не замасковане.

Скидання прапорця IЕх здійснюється наступним чином: при перериванні за фронтом IЕх скидається апаратно (автоматично внутрішніми засобами МК-ра) при зверненні до відповідної підпрограми обробки переривання; при перериванні за нульовим рівнем прапорець очищаується при знятті запиту зовнішнього переривання, тобто в IЕх відслідковується стан виводу .

Рисунок 4 – Спрощена схема системи переривань

Щоб зовнішнє переривання за рівнем було розпізнано, необхідно, щоб низький рівень на виводі  утримувався протягом не менше 12 періодів сигналу тактової частоти МК-ра. Це пояснюється тим, що перевірка виводів МК-ра  виконується його внутрішніми апаратними засобами один раз у кожному машинному циклі. У випадку зовнішнього переривання за фронтом прапорець IЕх буде встановлений, якщо дві послідовні перевірки входу  покажуть в одному машинному циклі "1", а в наступному "0".

Тому, якщо зовнішнє переривання активується за переходом зі стану високого рівня у стан низького рівня, то мінімум одному машинному циклу низького рівня повинний передувати мінімум один машинний цикл високого рівня на виводі . Якщо зовнішнє переривання активується за рівнем, запит повинен утримуватися до початку обслуговуючої підпрограми і зніматися до завершення цієї підпрограми для запобігання повторного обслуговування.

Переривання від таймерів/лічильників викликаються встановленням прапорців TF0 і TF1 регістра TCON, які встановлюються при переповненні відповідних регістрів таймерів/лічильників. Скидання прапорців TF0 і TF1 здійснюється внутрішньою апаратурою МК-ра при переході до підпрограми обслуговування переривання.

Переривання від послідовного порту викликається встановленням прапорця переривання приймача RI або прапорця переривання передавача TI у регістрі SCON. На відміну від всіх інших прапорців, RI і TI скидаються тільки програмним шляхом, як правило, в межах підпрограми обробки переривання, де визначається, якому з прапорців RI або TI відповідає переривання.

Кожне з перерахованих джерел переривань може бути індивідуально дозволене або заборонене встановленням або скиданням відповідного біта у регістрі дозволу переривань IE. Регістр IE містить також біт ЕА, скидання якого у "0" забороняє відразу всі переривання. Необхідною умовою переривання є його дозвіл у регістрі IE.

Усі біти, що викликають переривання (IE0, IE1, TF0, TF1, RI, TI), можуть бути програмно встановлені або скинуті з тим же результатом, що й у випадку їхнього апаратного встановлення або скидання. Тобто переривання можуть програмно викликатися або переривання, які очікують обслуговування, можуть програмно ліквідуватися. Крім того, переривання за  можуть викликатися програмним встановленням Р3.2 = 0 і Р3.3 = 0, як показано в наведеному нижче прикладі:

MAIN:  MOV IE, # 00000101B ;дозвіл переривання від .

MOV IP, # 04H ;присвоєння  старшого пріоритету.

SETB EA ;загальний дозвіл переривання.

MOV P3; # 11110011В ;імітація зовнішніх переривань.

SUBR:  ORG013H ;перехід до підпрограми обслуговування .

У запропонованому прикладі запити переривання  і , що мають різний пріоритет, надходять одночасно. При цьому обслуговується переривання з вищим пріоритетом.

У випадку, коли переривання за  (x = 0, 1) викликається низьким рівнем сигналу на відповідному вході МК-ра, прапорець IЕх (х = 0, 1) при переході до підпрограми обробки переривання автоматично скидається, а потім, якщо відповідний вивід МК-ра Р3.2 або Р3.3 все ще знаходиться у стані логічного "0", знову встановлюється. Тому, у випадку, коли переривання за входами  викликається рівнем, програмне встановлення в "1" прапорців IE0, IE1 викличе переривання, після чого відповідний прапорець IЕх (х = 0, 1) буде автоматично скинутий при переході до підпрограми обробки переривання.

Прапорці IE0, IE1, TF0, TF1, RI, TI встановлюються незалежно від того, дозволено або ні відповідне переривання у регістрі IE.

Структура пріоритетів переривань є двоступінчатою. Кожному джерелу переривання може бути індивідуально привласнений один з двох рівнів пріоритету: високий або низький. Виконується це встановленням (високий рівень пріоритету) або скиданням (низький рівень пріоритету) відповідного біта у регістрі пріоритетів переривань IP (описаний вище). Програма обробки переривання з низьким рівнем пріоритету може бути перервана запитом переривання з високим рівнем пріоритету, але не може бути перервана іншим запитом переривання з низьким рівнем пріоритету. Програма обробки переривання з високим рівнем пріоритету не може бути перервана ніяким іншим запитом переривання від жодного з джерел. Якщо два запити з різними рівнями пріоритету прийняті одночасно, спочатку буде обслугований запит з високим рівнем пріоритету. Якщо одночасно прийняті запити з однаковим рівнем пріоритету, то їх обробка буде здійснюватися у порядку, що задається послідовністю внутрішнього опиту прапорців переривань. Таким чином, у межах одного пріоритетного рівня існує ще одна структура пріоритетів:

Джерело

Пріоритет усередині рівня

1. IE0

(вищий)

2. TF0

3. IE1

4. TF1

5. RI + TI

(нижчий)

Необхідно окремо підкреслити, що структура "Пріоритет всередині рівня" працює тільки у тих випадках, коли визначається послідовність обслуговування запитів на переривання, які прийняті одночасно і при цьому мають однаковий рівень пріоритету, який заданий програмно.

Обробка переривань і час відгуку. Програмно встановлені рівні на виводах  і  встановлюють прапорці переривання IE0 і IE1 у фазі S5 P2 кожного машинного циклу. У фазі S5 P2 встановлюються прапорці переривань послідовного порту RI і TI. Прапорці TF0 і TF1 таймерів/лічильників встановлюються у фазі S5 P2 машинного циклу, в якому відбувається переповнення Т/С. Аналіз (опитування) прапорців виконується внутрішніми засобами МК-ра в наступному після встановлення (защіпання) прапорців машинному циклі (цикл опитування прапорця). І тільки після виконання останнього циклу поточної команди здійснюється апаратний виклик відповідної підпрограми обслуговування, еквівалентний команді LCALL [].

Апаратно реалізована команда LCALL завантажує вміст лічильника команд PC у стек (при цьому PSW у стек не записується), після чого записує у PC адресу відповідної підпрограми обробки переривання (таблиця 2).

Таблиця 2 – Адреси підпрограм (вектор переривання)

Джерело переривання

Адреса підпрограми

(вектор переривання)

IE0

0003 Н

TF0

000В Н

IE1

0013 Н

TF1

001В Н

TI + RI

0023 Н

При виконанні апаратно реалізованої команди LCALL у комірку стека з молодшою адресою завантажуються розряди 0-7 лічильника команд, а у наступну комірку стека – розряди 8-15 лічильника команд.

Підпрограма обслуговування переривання продовжується до виконання команди RETI. Команда RETI відновлює стан логіки обробки переривань і завантажує у лічильник команд PC 2 байти адреси повернення з двох верхніх комірок стека. Відновлення стану логіки обробки переривань полягає в наступному: при переході за вектором на підпрограму обробки переривання автоматично до виконання команди RETI незалежно від стану бітів регістра IE забороняються всі переривання з рівнем пріоритету, що дорівнює рівню пріоритету переривання, яке обслуговується. Тобто вкладені переривання з рівними рівнями пріоритету неможливі. Команда RETI знімає цю заборону. При використанні команди RET відновлюється тільки стан лічильника команд, тобто відбувається повернення у перервану програму. Стан логіки обробки переривань команда RET не змінює, тобто логіка управління обслуговуванням переривань, як і раніше, вважає, що продовжує обслуговуватися переривання, підпрограма обробки якого була закінчена командою RET. Це може привести до того, що наступні переривання будуть заборонені, якщо команда RET завершувала підпрограму із високим програмно встановленим рівнем пріоритету.

  1.  Керуючі регістри та алгоритм обробки переривань

Для програмування і керування роботою системи переривань служать два регістри: РМП (IE) – регістр масок переривань і РП (IP) – регістр пріоритетів переривань, а також чотири молодших біти регістра РКСТ (таблиці 3, 4).

Регістр пріоритетів переривань (IP) призначений для встановлення рівня пріоритету переривання для кожного з п'ятьох джерел переривань. Позначення розрядів регістра IP показано в таблиці 3, а їхнє призначення зазначене нижче.

Таблиця 3 – Позначення розрядів регістра IP

Біти

7

6

5

4

3

2

1

0

Позначення

Х

Х

Х

PS

РТ1

РХ1

РТ0

РХ0

РХ0 (IP0) – встановлення рівня пріоритету переривання від зовнішнього джерела .

РТ0 (IP1) – встановлення рівня пріоритету переривання від Т/С0.

РХ1 (IP2) – встановлення рівня пріоритету переривання від зовнішнього джерела .

РТ1 (IP3) – встановлення рівня пріоритету переривання від Т/С1.

PS (IP4) – встановлення рівня пріоритету переривання від послідовного порту.

Х (IP7, IP6, IP5) – резервний розряд.

Наявність у розряді IP сигналу "лог. 1" встановлює для відповідного джерела високий рівень пріоритету, а наявність у розряді IP сигналу "лог. 0" – низький рівень пріоритету. При читанні резервних розрядів відповідні лінії магістралі даних не визначені. Користувач не повинен записувати "1" у резервні розряди, тому що вони зарезервовані для подальшого розширення сімейства МК-51.

Регістр дозволу переривань (IE) призначений для дозволу або заборони переривань від відповідних джерел. Позначення розрядів регістра IE показано в таблиці 4, а їхнє призначення зазначене нижче.

Таблиця 4 – Позначення розрядів регістра IE

Біти

7

6

5

4

3

2

1

0

Позначення

ЕА

X

X

ES

ЕТ1

ЕХ1

ЕТ0

ЕХ0

ЕА (IE7) – керування всіма джерелами переривань одночасно. Якщо ЕА = 0, то переривання заборонені. Якщо ЕА = 1, то переривання можуть бути дозволені індивідуальними дозволами ЕХ0, ЕТ0, ЕХ1, ЕТ1, ES.

Х (IE6, IE5) – резервний розряд.

ES (IE4) – керування перериванням від послідовного порту: ES = 1 – дозвіл, ES = 0 – заборона.

ЕТ1 (IE3) – керування перериванням від Т/С1: ЕТ1 = 1 – дозвіл, ЕТ1 = 0 – заборона.

ЕХ1 (IE2) – керування перериванням від зовнішнього джерела : ЕХ1 = 1 – дозвіл, ЕХ1 = 0 – заборона.

ЕТ0 (IE1) – керування перериванням від Т/С0: ЕТ0 = 1 – дозвіл, ЕТ0 = 0 – заборона.

ЕХ0 (IE0) – керування перериванням від зовнішнього джерела : ЕХ0 = 1 – дозвіл, ЕХ0 = 0 – заборона.

При зчитуванні резервних розрядів відповідні лінії магістралі не визначені. Користувач не повинний записувати сигнал "лог. 1" у резервні розряди, тому що вони зарезервовані для подальшого розширення сімейства МК-51.

Керуючі біти IТ0, IТ1, які визначають вид переривання за входами INТ0, INТ1, та прапорці зовнішніх переривань IE0, IE1 знаходяться у молодшій тетраді регістра TCON, який розглянутий у лекції 5.

Прапорці IE0 і IE1 встановлюються апаратно від зовнішніх переривань (відповідно входи МК INТ0 і INТ1) або програмно й ініціюють викрик програми обробки відповідного переривання. Скидання цих прапорців виконується апаратно при обслуговуванні переривання тільки в тому випадку, коли переривання було викликано за фронтом сигналу. Якщо переривання було викликано рівнем сигналу на вході INТ0 (INТ1), то скидання прапорця IE повинна виконувати програма обслуговування переривання, впливаючи на джерело переривання для зняття ним запиту.

Алгоритм обробки переривання при виявленні запиту переривання поданий на рисунку 5.

Рисунок 5 – Схема алгоритму обробки переривання
КОНТРОЛЬНІ ЗАПИТАННЯ

  1.  Охарактеризуйте способи обміну даними між зовнішніми пристроями і мікропроцесорною системою
  2.  За відповідними схемами опишіть:
    1.  Роботу Р0 із ЗПП
    2.  Роботу Р0 в якості порту введення/виведення
  3.  Назвіть спільні та відмінні риси в конфігуруванні та роботі портів Р1 і Р2
  4.  Опишіть основні та альтернативні функції порту Р3
  5.  Призначення системи переривань у МПС, їх загальна характеристика
  6.  Назвіть можливі джерела переривань і порядок їх обробки
  7.  Якою є структура пріоритетів переривань?
  8.  Які регістри використовуються в керуванні роботою системи переривань? Назвіть позначення та призначення цих регістрів
  9.  Опишіть алгоритм обробки переривання

ЛІТЕРАТУРА


САМОСТІЙНА РОБОТА СТУДЕНТІВ

1 РОЗШИРЕННЯ РЕЗИДЕНТНОЇ (ВНУТРІШНЬОЇ) СИСТЕМИ ВВЕДЕННЯ/ВИВЕДЕННЯ (РСВВ/ВИВ)

Для сполучення розглянутого МК-ра з об'єктом, який має велике число входів/виходів, можна розширити резидентну систему введення/виведення, підключивши до мікроконтролера необхідну кількість зовнішніх портів. Таке розширення може бути виконано, наприклад, такими способами:

з використанням стандартного розширювача введення/виведення (РВВ) КР580ВР43;

із застосуванням інтерфейсних великих інтегральних схем (ВІС) типу КР580ВВ55, КР580ВВ51.

Нижче зупинимося на другому.

У наведеному на рисунку 1 прикладі до МК-ра підключені 64 мікросхеми КР580ВВ55, що є паралельним програмованим інтерфейсом (ППІ). Кожний ППІ містить три 8-розрядних порти введення-виведення інформації: порт А (РА7…РА0); порт В (РВ7…РВ0) і порт С (РС7…РС0). Це дозволяє організувати (64x3) = 192 8-розрядних порти введення/виведення. Для вибору (адресації) усередині ППІ одного з 3-х портів або регістра керуючого слова (РКС) використовуються два його входи: А1, А0. Переведення одного з обраних ППІ в активний стан здійснюється нульовим сигналом на вході CS (вибір кристала).

Звернення до інтерфейсів виконується командами роботи з ЗПД:

MOVX @Ri, A;  ЗПД (Ri) A – при виведенні;

MOVX  A, @Ri;  A ЗПД (Ri) – при введенні даних.

При цьому порт Р0 МК-ра використовується у режимі “мультиплексування”.

Рисунок 1 – Розширення РС ВВ/ВИВ за допомогою мікросхем КР580ВВ55

Спочатку на виходи Р0 видається вміст регістра Ri (i = 0,1), який запам'ятовується (“защіпається”) у зовнішньому буферному 8-розрядному регістрі адреси (БРА). Потім через лінії Р0 здійснюється обмін інформацією між МК і обраним портом ППІ. Два молодших розряди адреси з виходу БРА через підсилювачі надходять на виходи А1, А0 ППІ і вибирають у ньому необхідний порт або РКС (при програмуванні ППІ). Інші шість старших розрядів з виходу БРА подаються на входи дешифратора адреси (ДША), який перетворює шестирозрядний паралельний двійковий код (ДК) у шістдесятичотирьохпозиційний унітарний код. В залежності від комбінації ДК на входах ДША активний сигнал низького рівня з'являється тільки на одному з виходів ДША, номер якого відповідає десятковому еквіваленту вхідного ДК. Цей сигнал подається на вхід CS обраного ППІ і підключає його виводи D0…D7 до ліній порту Р0. Інші необрані ППІ відключаються від Р0 (переводяться у 3й, високоімпедансний стан). Шинний формувач служить для підсилення сигналів, що знімаються з виходів порту Р0.

При використанні команд MOVX  @DPTR, A;  MOVX A, @DPTR і деякому ускладненні схеми число ППІ, які підключаються, а отже число портів введення/виведення, може бути значно збільшено.

З виходів Р3.6 та Р3.7 МК-ра знімаються керуючі сигнали, які визначають напрямок обміну інформацією між МК-ром та обраним портом або РКС ППІ, який є активним (обраний сигналом ).

Якщо МК-р записує дані у ППІ, то WR (P3.6) = 0, а RD (P3.7) = 1, а якщо читає дані з ППІ, то WR = 1, а RD = 0.

Обмін інформацією між ППІ та МК-ром здійснюється через порт P0, який працює у режимі “мультиплексування”: спочатку через P0 видається молодший байт адреси ЗПД, потім здійснюється обмін (читання або запис).

2 РОЗВИТОК АРХІТЕКТУРИ ПАРАЛЕЛЬНИХ ПОРТІВ ТА ПІДСИСТЕМИ ПЕРЕРИВАНЬ В СУЧАСНИХ МІКРОКОНТРОЛЕРАХ СІМЕЙСТВА МК-51

2.1 Паралельні порти на прикладі сімейства мікроконтролера SiLab(Cygnal)

Ознайомимося із вищезазначеною темою на прикладі сучасних мікроконтролерів виробництва компанії SiLab

Мікроконтролери різних сімейств МК-51  мають різну кількість стандартних 8-ми розрядних портів вводу/виводу (від 1 до 8). Нагадаємо, що стандартний мікроконтролера 8051 має чотири порти (Ports 0,1,2 і 3). Порти, що не мають зовнішніх виводів (за браком фізичних висновків корпусів), можуть бути використані, як регістри загального призначення. Порти вводу/виводу поводять себе так само, як порти стандартного 8051, але мають додаткові функціональні якості.

Кожна лінія порта вводу/виводу може бути налаштована як звичайна вхідна або вихідна лінія, як лінія з "третім" високоімпедансним станом або як лінія з "відкритим витоком" через відповідні регістри (Port Configuration Registers) PRT0CF, PRT1CF, PRT2CF, PRT3CF ... Плюс до цього, підтяжки рівнів "Pull-Up", які зазвичай використовуються в стандартних 8051 мікроконтролерах, можуть бути програмно заборонені з метою додаткового енергозбереження.

Безсумнівним досягненням архітектури мікроконтролерів фірми Cygnal є наявність функціонального вузла, званого "Crossbar", що виконує роль програмно-керованого комутаційного вузла, перемикаючого периферійні внутрішні ресурси на лінії вводу/виводу портів 0,1 і 2. Іншими словами, вузол "Crossbar" - це комутатор внутрішніх ресурсів. Це нововведення значно підвищує гнучкість розробки мікроконтролерної системи. Внутрішні периферійні вузли, такі як таймери, послідовні інтерфейси, переривання, входи запуску ADC, виходи компараторів та інші цифрові сигнали, а в деяких родинах і аналогові входи ADC, можуть бути програмно призначені на висновки вищевказаних портів. Специфікація портів здійснюється шляхом програмування спеціальних регістрів XBR0, XBR1 і XBR2 і так званої таблиці пріоритетною перекодування (Priority Decode Table). Рисунок 2 ілюструє функціональне призначення Crossbar (на прикладі двох сімейств C8051F0xx і C8051F018-9).

Головним завданням розробників комутатора ресурсів CrossBar було створення гнучкої і зручної архітектури, що дозволяє проектувальникові контролерів оперативно вибирати і перерозподіляти багаті внутрішні аналогові і цифрові ресурси на обмежене число зовнішніх висновків корпусу. Таблиця пріоритетного дешифратора комутатора ресурсів індивідуальна для кожного сімейства мікроконтролерів через різний склад внутрішньої периферії. Однак, методика вибору периферії однакова для всіх родин. В таблиці 1  як приклад, показана таблиця пріоритетів дешифратора комутатора ресурсів C8051F0xx і C8051F018-9 родин.

Рисунок 2 – Crossbar – комутатор ресурсів

В таблиці по вертикалі перераховані висновки всіх периферійних пристроїв, які можуть бути виведені на входи/виходи портів Р0...Р2. Виводи периферійних пристроїв перераховані в порядку убування пріоритету. Наприклад, найвищий пріоритет має інтерфейс SMBus, що має сигнали SDA і SCL, потім слід інтерфейс SPI, що має сигнали SCK, MISO, MOSI і NSS, потім послідовний порт UART з сигналами TX і RX, потім програмований таймер/лічильник PCA, що має виходи CEX0, ..., CEX4, і т.д.

Як вже було сказано вище, вибір периферійних пристроїв здійснюється шляхом програмування спеціальних регістрів XBR0, XBR1 і XBR2. Ці регістри містять біт (або біти), що визначають активність кожного з наведених на таблиця 1 периферійних пристроїв. Наприклад, включення до складу або виключення зі складу периферійних пристроїв інтерфейсів SMBus, SPI і UART здійснюється установкою або стиранням одного біта (для кожного інтерфейсу). Для програмованого масиву - лічильника PCA є три біта, що визначають кількість включаються каналів.

Таблиця 1 – Приклад пріоритетного дешифратора ресурсів

Методика визначення активної периферії і співвіднесення її до конкретних портів вводу/вивода наступні: 

1. Проектувальник в регістрах XBR0, XBR1 і XBR2 встановлює в логічну одиницю біти, що відповідають за активність тих чи інших периферійних пристроїв. Біти невикористовуваних периферійних пристроїв встановлюються в стан логічного 0. 

2. Призначення виводів активних периферійних пристроїв завжди починається з молодших бітів порту Р0. Далі, при повному заповненні порту Р0, починається заповнення порту Р1, а якщо його не вистачить, то і Р2. Заповнення відбувається у відповідності з пріоритетом зі зрушенням в бік вільних молодших виводів. Наприклад, якщо пристрій SMBus активний, то його сигнали займають молодші розряди порту Р0: SDA - P0.0; SCL - P0.1. Якщо ж пристрій SMBus пасивний (вимкнено), а наступне активний пристрій - SPI, то його сигнали займають молодші розряди: SCK - P0.0; MISO - P0.1; MOSI-P0.2; NSS - P0.3.Якщо і пристрій SPI пасивно, а активно пристрій UART, то його сигнали займуть молодші розряди: TX - P0.0; RX - P0.1. 

3. Наступні активні пристрої завжди займають більш молодші вільні висновки портів Р0 ... Р2. Наприклад, якщо першим активним пристроєм був інтерфейс SPI, і його сигнали зайняли молодші розряди: SCK - P0.0; MISO - P0.1; MOSI-P0.2; NSS - P0.3, а наступне активний пристрій - PCA із заданим одним каналом, його канал буде призначений на перший молодший вільний вивід: CEX0 - P0.4. 

4. Виводи, що залишилися вільними після призначення активних периферійних пристроїв можуть бути використані, як програмовані входу/ виходу загального призначення. 

5. Після призначення активних периферійних пристроїв необхідно дозволити роботу (встановити активність) CrossBar шляхом установки біта XBARE в регістрі XBR2. Поки CrossBar не активна, всі лінії портів залишаються в режимі введення незалежно від призначень регістрів XBRn. 

 Вихідні характеристики портів вводу/виводу встановлюються в регістрах конфігурації портів (Port Configuration Registers): PRTOCF, PRT1CF, PRT2CF і PRT3CF. Кожен вивід може бути призначений як вивід "з відкритим витоком" або як тристабільний вивід. Таке призначення потрібно навіть для ліній вводу/виводу інтерфейсів, призначених у регістрах XBRn. Слід пам'ятати, що тільки лінії SDA і SCL інтерфейсу SMBus і лінія RX в режимі 0 інтерфейсу UART автоматично встановлюються як лінії "з відкритим витоком". Біт WEAKPUD в регістрі XBR2 відповідає за "слабку підтяжку" вихідного рівня, якщо цей біт встановлений в 0, то "слабка підтяжка" виходів здійснюється для всіх ліній портів, встановлених в режим "з відкритим витоком". З іншого боку, цей біт не діє на лінії вводу/виводу, встановлені як тристабільні. Крім того, "слабка підтяжка" вимикається для виводів, що у стані логічного нуля, для виключення непотрібних втрат потужності. На рисунку 3  показана функціональна схема однієї лінії порту. 

Рисунок 3 – Функціональна схема лінії порта

Як видно з цієї функціональної схеми, так звана "слабка підтяжка" (weak) являє собою злегка відкритий польовий транзистор з високим опором каналу у відкритому стані.

Мікроконтролери фірми Silicon Laboratories можуть мати від 1 до 5 8-ми розрядних портів введення / виводу (в залежності від типу корпусу), які можуть використовуватися для призначення ліній введення / виводу периферійних вбудованих пристроїв або як порти введення / виводу загального призначення. Звернення до кожного такого порту здійснюється через відповідний регістр SFR (P0, P1, ...), доступний як побайтно, так і побітно. При запису в порт, записане значення замикається і виводиться на відповідні висновки. При читанні, логічні рівні порту можуть бути прочитані незалежно від призначень, зроблених у регістрах XBRn. Винятком є дії з інструкціями, які виконують "читання - модифікацію - запис" (read-modify-write): ANL, ORL, XRL, JBC, CPL, INC, DEC, DJNZ і При виконанні цих інструкцій стан регістра порту (а не стан виводі ) читається, модифікується і записується назад в регістр.

У деяких мікроконтролерах, що мають корпуси з обмеженою кількістю виходів, деякі з портів можуть не мати своїх виходів. Наприклад, порти P2 і P3 не мають виводів в мікроконтролерах F001/06/11/16, порти PI, P2 і P3 не мають виводів в мікроконтролерах F002/07/12/17. Однак ці порти залишаються доступними для ядра CIP-51. У цьому випадку, розробнику слід дбати самому про коректне написанні програми. MOV, CLR або SET, при яких адресується безпосередній біт в порту SFR.


2.2 Підсистема переривань на прикладі мікроконтролерів SiLab

Розширений контролер переривань ядра CIP-51 може обслужити досить велику кількість джерел переривання (середнє - 22 джерела переривань), яке залежить від складу вбудованої периферії сімейства. Внутрішня периферія може генерувати до 12 переривань. Ще до 10 зовнішніх джерел переривань можуть бути пов'язаними з лініями портів вводу/виводу. Навіть найбільш "слабкі" з мікроконтролерів вигідно відрізняються від стандартного ядра 8051, обслуговуючого всього 7 джерел. Наявність великої кількості джерел переривання дозволяє підвищити загальну продуктивність системи за рахунок обслуговування переривань від багаточисельних аналогових вузлів та звільнення потужності процесора для основного завдання. Очевидно, що це якість дуже корисно для систем управління і контролю реального часу. Джерела переривань можуть мати два рівні пріоритети. Кожне джерело переривань має один або кілька прапорців (бітів) в регістрі спеціальних функцій. При дотриманні сконфігурованих умов у внутрішній периферії або на вхідних лініях зовнішніх входів переривань прапорець, відповідаючий джерелу переривань, встановлюється в стан логічної одиниці. Зведення відповідного прапорця переривання викликає власне переривання, якщо воно дозволено для відповідного джерела. Це, в свою чергу, викличе генерацію інструкції LCALL на заздалегідь визначену адресу підпрограми обробки переривання відповідного джерела - ISR (Interrupt Service Routine) відразу ж після завершення поточної інструкції. Кожна ISR повинна завершитися інструкцією RETI, яка повертає програму на інструкцію, наступну безпосередньо за інструкцією, що виконується в момент генерації переривання. Якщо переривання для відповідних джерела заборонено, відповідний прапорець переривання ігнорується, а виконання програми триває в нормальному режимі. Очевидно, що кожне джерело переривання може бути дозволений (заборонений) шляхом встановлення відповідного біта в регістрі спеціальних функцій SFR (IE-EIE2). Всі переривання також можуть бути або дозволені, або заборонені відповідною установкою біта EA (IE.7). Деякі з прапорців переривань встановлюються в 0 ("знімаються", "стираються") автоматично. Інші прапорці необхідно знімати програмно.

Два зовнішніх джерела переривань (INT0 / і INT1 /) можуть бути налаштовані на сприйняття нульового рівня (потенціалу) або перепаду з високого на низький рівень (задній фронт імпульсу) шляхом установки бітів IT0 (TCON.0) і IT1 (TCON.2), при цьому їм відповідають прапорці IEO (TCON.l) і IE1 (TCON.3). Якщо ці переривання налаштовані на сприйняття фронту, відповідні прапорці стираються автоматично, як тільки ядро мікроконтролера згенерує перехід на відповідну ISR підпрограму. Якщо ж переривання налаштовані на сприйняття рівня, то відповідний прапорець повторює стан на відповідному вході мікроконтролера. Необхідно враховувати, що якщо вхідний активний (низький) потенціал переривання не буде знятий до завершення виконання процедури переривання, ця процедура буде повторена знову. Ще чотири зовнішніх переривання (External Interrupts 4-7) налаштовані на сприйняття заднього фронту імпульсу (негативного перепаду рівнів з високого в низький). Відповідні прапорці цих переривань знаходяться в регістрі переривання першого порту (Port 1 Interrupt Flag Register).

Кожне з джерел переривань може бути індивідуально запрограмоване на один з двох пріоритетних рівнів: низький або високий. Підпрограми обробки переривань низького пріоритету можуть бути перервані джерелами переривань з високим пріоритетом. Очевидно, що підпрограми обробки переривань з високим пріоритетом не можуть бути перервані. Кожне джерело переривань має індивідуальний біт пріоритету в SFR (IP-EIP2), який використовується для установки рівня пріоритету. Після скидання всі пріоритети встановлюються низькими. Якщо ядро одночасно сприйняло два переривання з різними пріоритетами, переривання з високим пріоритетом обробляється першим. Якщо одночасно сприйняті переривання з однаковим пріоритетом, вступає в силу фіксований ордер пріоритетів (див. опис відповідних регістрів SFR). Час реакції на переривання залежить від стану процесора в момент виникнення переривання. Перевірка наявності переривань відбувається в кожному такті генератора, а час виконання інструкції LCALL дорівнює чотирьом тактам, отже, мінімально можливий час реакції на переривання становить 5 тактів. Якщо переривання виявлено в момент виконання інструкції RETI, то після її завершення виконується наступна команда основної програми, а лише потім генерується інструкція LCALL. Отже, максимальний час реакції на переривання буде в тому випадку, коли переривання виявлено при виконанні інструкції RETI, а слідом за нею йде сама "довга" (за часом) інструкція DIV. У цьому випадку час реакції складе 18 тактів: 1 на виявлення переривання, 5 тактів на виконання інструкції RETI, 8 тактів на виконання інструкції DIV і 4 такти на виконання LCALL. Якщо під час виконання підпрограми обробки переривання прийшло наступне переривання з рівним пріоритетом, це нове переривання буде обслуговано тільки після завершення виконання поточної підпрограми, включаючи інструкцію повернення RETI, і наступної інструкції основної програми.


3 ЗБІЛЬШЕННЯ ЧИСЛА ДЖЕРЕЛ ЗОВНІШНІХ ПЕРЕРИВАНЬ

В нових мікроконтролерах дещо більша система переривань.

Таблиця 2 – переривання мікроконтролерів Silicon Labs.

1

Скидання

2

Зовнішнє переривання 0

3

Переповнення таймера 0

4

Зовнішні переривання 1

5

Переповнення таймера 1

6

Послідовний інтерфейс UART0

7

Переповнення таймера 2

8

Послідовний інтерфейс SPI

9

Послідовний інтерфейс SMBus

10

Віконний компаратор перетворювача ADC0

11

Програмований масив лічильник PCA

12

Компаратор 0, падаючий фронт

13

Компаратор 0, наростаючий фронт

14

Компаратор 1, падаючий фронт

15

Компаратор 1, наростаючий фронт

16

Переповнення таймера 3

17

Кінець перетворення перетворювача ADC0

18

Переповнення таймера 4

19

Кінець перетворення перетворювача ADC1

20

Зовнішнє переривання 6

21

Зовнішнє переривання 7

22

Послідовний інтерфейс UART1

23

Готовність зовнішнього кристалічного генератора

PAGE   \* MERGEFORMAT 38


 

А также другие работы, которые могут Вас заинтересовать

32722. Реальные газы. Силы и потенциальная энергия межмолекулярного взаимодействия. Уравнение Ван-дер-Ваальса 44.5 KB
  Реальные газы Как известно уравнение состояния устанавливает функциональную связь между давлением Р объемом V температурой T и числом молей газа в состоянии равновесия. Самым простым и известным уравнением состояния является уравнение состояния идеального газа: 7.1 Реальные газы описываются уравнением состояния идеального газа только приближенно и отклонения от идеального поведения становятся заметными при высоких давлениях и низких температурах особенно когда газ близок к конденсации. Предпринималось много попыток для...
32723. Изотермы Ван-дер-Ваальса и их сопоставление с реальными изотермами. Критическая температура. Внутренняя энергия газа Ван-дер-Ваальса 81 KB
  Изотермы ВандерВаальса и их сопоставление с реальными изотермами. Внутренняя энергия газа ВандерВаальса. Изотермы ВандерВаальса Проанализируем изотермы уравнения Ван–дер–Ваальса – зависимости Р от V для реального газа при постоянной температуре. Умножив уравнение ВандерВаальса на V 2 и раскрыв скобки получаем PV 3 – RT bP vV 2 v2V bv3 = 0.
32724. Тепловые явления при низких температурах. Третье начало термодинамики 40.5 KB
  Расчет абсолютной энтропии Рассчитаем изменение энтропии некоторой системы при нагревании её от абсолютного нуля до температуры T при постоянном давлении. При нагревании вещества возможен его переход в жидкое и затем в газообразное состояние; для фазовых переходов происходящих в изобарноизотермических условиях изменение энтропии равно приведенной теплоте фазового перехода: I.65 Таким образом нагревание вещества без фазовых переходов сопровождается непрерывным ростом энтропии; при фазовом переходе происходит...
32725. Понятие фазы. Фазовые переходы 1 и 2 рода. Фазовые диаграммы. Тройная точка 57 KB
  Понятие фазы. В однокомпонентной системе разные фазы могут быть представлены различными агрегатными состояниями или разными полиморфными модификациями вещества. В многокомпонентной системе фазы могут иметь различный состав и структуру. Основные понятия Газ всегда состоит из одной фазы жидкость может состоять из нескольких жидких фаз разного состава Ликвация жидкостная несмешиваемость но двух разных жидкостей одного состава в равновесии сосуществовать не может.
32726. Материальная точка. Абсолютно твёрдое тело. Система отсчёта 27.5 KB
  Система отсчёта. Системы отсчёта. Для определения координат материальной точки следует прежде всего выбрать тело отсчёта и связать с ним систему координат. Для определения положения материальной точки в любой момент времени необходимо также задать начало отсчёта времени.
32727. Кинематика точки. Путь. Перемещение. Скорость и ускорение. Их проекции на координатные оси. Вычисление пройденного пути. Средние значения 28.5 KB
  Скорость и ускорение. Скорость векторная физическая величина характеризующая быстроту перемещения тела численно равная отношению перемещения за малый промежуток времени к величине этого промежутка. Промежуток времени считается достаточно малым если скорость при неравномерном движении в течение этого промежутка не менялась. Измеряют скорость спидометром.
32728. Скорость и ускорение при криволинейном движении. Тангенциальное и нормальное ускорения 37 KB
  Криволинейное движение с постоянным ускорением всегда происходит в той плоскости в которой находятся векторы ускорения и начальные скорости точки. В случае криволинейного движения с постоянным ускорением в плоскости xOy проекции vxи vy ее скорости на оси Ox и Oy и координаты x и y точки в любой момент времени t определяется по формулам vx=v0xxt x=x0v0xtxtxt2 2; vy=v0yyt y=y0v0ytyt2 2 Частным случаем криволинейного движения – является движение по окружности. Движение по окружности даже равномерное всегда есть движение...
32729. Кинематика твёрдого тела. Вращение вокруг неподвижной оси. Угловые скорость и ускорения. Связь между угловыми и линейными скоростями и ускорениями 39 KB
  Кинематика твёрдого тела. Движение тела может быть как поступательным так и вращательным. При поступательном движении все точки твердого тела за один и тот же промежуток времени совершают равные по величине и направлению перемещения. Следовательно скорости и ускорения всех точек тела в любой момент времени также одинаковы.
32730. Границы применимости ньютоновской механики. Первый закон Ньютона 28.5 KB
  Первый закон Ньютона. Вследствие развития физики в начале XX века определилась область применения классической механики: ее законы выполняются для движений скорость которых много меньше скорости света. Вообще законы классической механики Ньютона справедливы для случая инерциальных систем отсчета. При ускоренном движении неинерциальной системы координат относительно инерциальной системы первый закон Ньютона закон инерции в этой системе не имеет места – свободные тела в ней будут с течением времени менять свою скорость движения.