
Буклет Лабораторні роботи МСТЗІ
.pdf
|
|
|
|
|
|
|
Табл. 1 |
|
|
Кількість |
Кількість |
Виводи для підкл. |
Виводи для підкл. |
Час постановки |
Частота |
Вивід для |
|
|
охоронних |
охоронних |
блимання |
|||||
|
охоронних |
охоронних |
та зняття з |
|||||
№ |
шлейфів з |
шлейфів з |
світлодіода |
підкл. |
||||
шлейфів з НРЗ |
шлейфів з НЗМ |
охорони |
||||||
|
НРЗ |
НЗМ |
F_Blick, |
світлодіода |
||||
|
давачами |
давачами |
T_Alarm, с |
|||||
|
давачами |
давачами |
Гц |
|
||||
|
|
|
|
|
||||
1. |
1 |
2 |
PB7 |
PD4, PD6 |
5 |
5 |
PB3 |
|
2. |
3 |
1 |
PD1, PD2, PD3 |
PD0 |
2 |
7 |
PB2 |
|
3. |
2 |
2 |
PB3, PB5 |
PD0, PD4 |
2.5 |
12 |
PD3 |
|
4. |
0 |
1 |
-//- |
PB2 |
4.5 |
20 |
PD5 |
|
5. |
3 |
2 |
PB0, PB2, PB4 |
PD2, PD6 |
6 |
11 |
PB1 |
|
6. |
1 |
1 |
PB7 |
PD6 |
3 |
4 |
PD3 |
|
7. |
1 |
3 |
PB4 |
PD0, PD1, PD5 |
2.2 |
18 |
PB2 |
|
8. |
2 |
2 |
PD2, PD3 |
PB2, PB3 |
3.9 |
11 |
PB5 |
|
9. |
2 |
1 |
PB3, PB7 |
PD3 |
4.1 |
10 |
PD4 |
|
10. |
1 |
0 |
PB5 |
-//- |
5.5 |
19 |
PD1 |
|
11. |
0 |
2 |
-//- |
PD3, PB0 |
2.7 |
6 |
PB6 |
|
12. |
1 |
3 |
PD4 |
PB3, PB4, PB5 |
3.3 |
8 |
PB7 |
|
13. |
4 |
0 |
PB1, PB2, PB3, |
-//- |
4.8 |
13 |
PD3 |
|
|
PB7 |
|||||||
|
|
|
|
|
|
|
||
14. |
1 |
2 |
PD1 |
PB2, PB4 |
3.5 |
14 |
PD0 |
|
15. |
1 |
1 |
PB4 |
PD4 |
2.6 |
9 |
PD6 |
|
16. |
2 |
0 |
PB6, PB7 |
-//- |
4.9 |
14 |
PB5 |
|
17. |
1 |
2 |
PD2 |
PB2, PB6 |
2.1 |
|
PD1 |
|
18. |
2 |
2 |
PB3, PB5 |
PD2, PD4 |
3.2 |
15 |
PB1 |
|
19. |
0 |
4 |
-//- |
PD0, PD1, PD2, |
4.3 |
8 |
PB5 |
|
|
PD3 |
|||||||
|
|
|
|
|
|
|
||
20. |
3 |
1 |
PB1, PB2, PB6 |
PD3 |
5.2 |
4 |
PB0 |
|
21. |
3 |
1 |
PB2, PB3, PB4 |
PD4 |
2.8 |
16 |
PD1 |
|
22. |
2 |
1 |
PD1, PD3 |
PB5 |
3.6 |
10 |
PB2 |
|
23. |
3 |
0 |
PB0, PB2, PB4 |
-//- |
4.0 |
6 |
PD3 |
|
24. |
1 |
3 |
PB5 |
PD3, PD5, PD6 |
2.3 |
12 |
PB1 |
|
25. |
3 |
1 |
PD4, PD5, PD6 |
PB7 |
3.8 |
18 |
PB3 |
|
26. |
2 |
1 |
PD2, PD4 |
PB4 |
4.6 |
20 |
PB2 |
|
27. |
2 |
2 |
PB1, PB4 |
PD1, PD4 |
5.8 |
16 |
PB5 |
|
28. |
2 |
3 |
PD0, PD1 |
PB1, PB4, PB5 |
2.4 |
7 |
PD3 |
|
29. |
0 |
3 |
-//- |
PB2, PB5, PB6 |
3.1 |
5 |
PB4 |
|
30. |
1 |
2 |
PD2 |
PB3, PB6 |
4.4 |
11 |
PD4 |
|
31. |
3 |
0 |
PB4, PB5, PB7 |
-//- |
5.7 |
19 |
PD1 |
1)Тактова частота МК в мегагерцах рівна останній цифрі номера варіанту (для 0 – 10 МГц).
2)Перемикач вважати ідеальним.
3)Перемикач включення/виключення охорони підєднується до будь-якого вільного виводу МК.
20
НАВЧАЛЬНЕ ВИДАННЯ
Знайомство з інтегрованим середовищем розробки AVR Studio 4 та програмою симуляції Proteus 7.
Написання та відладка простих програм для AVR мікроконтролерів
МЕТОДИЧНІ ВКАЗІВКИ
до лабораторної роботи № 1 з курсу «Мікропроцесори в системах технічного захисту інформації»
для студентів напряму 6.170102 «Системи технічного захисту інформації»
Укладачі: Cовин Ярослав Романович, доц., к.т.н. Стахів Марта Юріївна, асист.
Комп’ютерне складання: Cовин Ярослав Романович, доц., к.т.н.
21

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
Кафедра «Захист інформації»
Вивчення внутрішніх модулів та режимів роботи AVR-мікроконтролерів
МЕТОДИЧНІ ВКАЗІВКИ до лабораторної роботи № 2
з курсу «Мікропроцесори в системах технічного захисту інформації» для студентів напряму 6.170102
«Системи технічного захисту інформації»
Затверджено
на засiданнi кафедри «Захист інформації» протокол № 2 вiд 06.09.2010 p.
Львів – 2010
22
Вивчення внутрішніх модулів та режимів роботи AVR-мікроконтролерів: Методичні вказівки до лабораторної роботи №2 з курсу «Мікропроцесори в системах технічного захисту інформації» для студентів напряму 6.170102 «Системи технічного захисту інформації» / Укл. Я. Р. Совин, М. Ю. Стахів – Львiв: Національний університет "Львівська політехніка", 2010. – 14 с.
Укладачі: |
Совин Я. Р., канд. техн. наук, доц. |
|
Стахів М. Ю., асист. |
Вiдповiдальний за випуск: Дудикевич В. Б., докт. техн. наук, проф.
Рецензенти: Хома В. В., докт. техн. наук, проф. Горпенюк А. Я., канд. техн. наук, доц.
23

Мета роботи – ознайомитись з роботою периферійних модулів(аналогового компаратора, EEPROM-пам’яті), системою переривань та внутрішніми режимами роботиAVRмікроконтролерів. Розширити навики створення та відладки програмно-апаратних засобів на основі мікроконтролерів сімейства AVR в програмах AVR Studio та Proteus 7.
1.ТЕОРЕТИЧНІ ВІДОМОСТІ
1.1.Обробка сигналів охоронних давачів аналоговим компаратором
Вохоронних системах, вимірювальній та спеціальній апаратурі для захисту інформації від витоку по технічних каналах використовуються давачі як з цифровими так і аналоговими виходами. Давачі з аналоговими виходами (ІЧ-давачі руху, піроелектричні давачі диму і вогню,
давачі |
розбиття |
скла, різні температурні давачі) формують на своєму виході неперервний |
сигнал, |
який в |
подальшому, як правило, оцифровується аналого-цифровим перетворювачем |
(АЦП) та обробляється мікроконтролером (МК) для визначення умови спрацювання. Мікроконтролер AT90S2313 не містить вбудованого АЦП, але у ньому присутній модуль
аналогового компаратора (АК), який може бути ефективно використаний для визначення умови спрацювання охоронного давача (мікроконтролери AVR сімейства Mega та деякі МК сімейства Classic мають вбудований 10-розрядний АЦП).
Аналоговий компаратор МК дозволяє порівнювати значення напруг, присутніх на двох
виводах: неінвертуючому |
– AIN0/PB0 та інтвертуючому– AIN1/PB1 МК. Результатом |
|
порівняння |
є логічне |
значення, ке може бути прочитане з програми. За результатами |
порівняння може бути згенероване переривання. |
||
Щоб |
вказані лінії |
могли використовуватись аналоговим компаратором, вони повинні |
бути сконфігуровані як входи. Крім того необхідно відключити внутрішні підтягуючі резистори, записавши логічний 0 у відповідні розряди регістраPORTB. Структурна схема аналогового компаратора МК AT90S2313 наведена на Рис. 1.
Рис. 1. Модуль аналогового компаратора МК AT90S2313
Управління компаратором і контроль його стану здійснюються з допомогою регістра вводу-виводу ACSR (Analog Comparator Status Register). Формат цього регістру представлено на
Рис. 2.
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
ACSR |
ACD |
- |
ACO |
ACI |
ACIE |
ACIC |
ACIS1 |
ACIS0 |
Читання(R)/Запис(W) |
|
|
|
|
|
|
|
|
R/W |
R |
R |
R/W |
R/W |
R/W |
R/W |
R/W |
|
Початкове значення |
0 |
0 |
N/A |
0 |
0 |
0 |
0 |
0 |
Рис. 2. Формат регістру ACSR МК AT90S2313
Розряди цього регістру мають наступне призначення:
ACD – включення компаратора (0 – компаратор включений, 1 – виключений); ACO – результат порівняння (вихід компаратора);
ACI – прапорець переривання від компаратора; ACIE – дозвіл переривання від компаратора;
ACIC – підключення компаратора до схеми захвату таймера/лічильника Т1 (1 – підключений, 0
24

– відключений);
ACIS1:ACIS0 – умова виникнення переривання від компаратора.
Якщо напруга на неінвертуючому виводіAIN0 більша за напругу на виводіAIN1, то
результат порівняння |
буде |
рівний1, |
інакше 0. Цей |
результат (стан виходу компаратора) |
||||||
зберігається в розряді ACO регістра ACSR. |
|
|
||||||||
Розряд |
ACD |
відповідає |
за |
включення |
і виключення компарат. Компаратор |
|||||
автоматично включається при подачі напруги живлення на МК. Щоб його виключити, розряд |
||||||||||
ACD слід встановити в 1. |
|
|
|
|
|
|||||
У відповідності з результатом порівняння схема компаратора може генерувати запит на |
||||||||||
переривання. |
Якщо |
стан |
виходу |
компаратора(розряд ACО) змінився заданим чином, |
||||||
встановлюється прапорець переривання АСІ регістра ACSR і генерується запит на переривання. |
||||||||||
Цей прапорець скидається |
апаратно при запуску підпрограми обробки переривання або |
|||||||||
програмно – записом в нього логічної1. Для дозволу переривання необхідно встановити в1 |
||||||||||
розряд АСІЕ регістра ACSR. |
|
|
|
|
|
|||||
Умова генерації запиту на переривання від компаратора визначається станом розрядів |
||||||||||
ACIS1:ACIS0. |
|
|
|
|
|
|
|
|
|
|
|
|
ACIS1 |
|
ACIS0 |
|
Умова |
|
|||
|
|
|
0 |
|
|
0 |
Будь-яка зміна виходу компаратора. |
|
||
|
|
|
0 |
|
|
1 |
Зарезервовано. |
|
|
|
|
|
|
1 |
|
|
0 |
Зміна стану виходу компаратора з 1 на 0. |
|
||
|
|
|
1 |
|
|
1 |
Зміна стану виходу компаратора з 0 на 1. |
|
Нехай, наприклад, аналоговий давач формує на своєму виході сигнал в межах від0 до 5 В. При досягненні напругою значення3.2 В вважається, що відбулося спрацювання давача і потрібно включити тривогу. Відстежувати досягнення значення3.2 В можна з допомогою наступної схеми (Рис. 3).
Рис. 3. Задання порогу спрацювання аналогового компаратора
Напруга |
на |
інвертуючому |
вході компаратораPB1/AIN1 |
рівна U AIN1 = |
R2 |
|
×5 . Якщо |
|
|||
|
|
|
|||||||||
прийняти, що |
|
|
|
|
|
U AIN1 = 3.2 В. |
|
R1 + R2 |
|
||
R1 = 3.6 кОм, |
R2 = 6.4 кОм, |
то |
Відповідно, якщо напруга на |
|
|||||||
неінвертуючому вході PB0/AIN0 перевищить 3.2 В, стан компаратора зміниться з 0 на 1 і може |
|
||||||||||
бути згенероване відповідне переривання. У підпрограмі обробки цього переривання потрібно |
|
||||||||||
передбачити включення сигналу тривоги. |
|
|
|
|
|
|
|
||||
Фрагмент |
програми, |
що |
здійснює |
ініціалізацію |
аналогового |
компаратора |
для |
||||
розглянутого випадку може виглядати наступним чином: |
|
|
|
|
|
||||||
cbi DDRB, PB0 |
|
|
; Вивід РВ0 - вхід |
|
|
|
|
|
|
||
cbi DDRB, PB1 |
|
|
; Вивід РВ1 - вхід |
|
|
|
|
|
|
||
cbi PORTB, PB0 |
|
; Відключити внутрішній підтягуючий резистор для РВ0 |
|
|
|
||||||
cbi PORTB, PB1 |
|
; Відключити внутрішній підтягуючий резистор для РВ1 |
|
|
|
||||||
ldi r16, (1<<ACIE) | (1<<ACIS1) | (1<<ACIS0) |
; Дозволити переривання від АК, |
|
|
|
|
||||||
|
|
|
|
|
; переривання генерується при переході з 0 в 1 |
|
|||||
out ACSR, r16 |
|
|
; Сконфігурувати аналоговий компаратор |
|
|
|
|
1.2. Обробка сигналів цифрових охоронних давачів
25
Стан давачів з цифровим виходом може бути безпосередньо зчитаний з ліній вводувиводу МК. Для цього потрібно періодично опитувати ці лінії, щоб визначити присутність на них логічного 0 або 1 (див. Лаб. роб. №1). Проте такий підхід має певні недоліки:
1)ядро МК постійно зайнято опитуванням ліній вводу/виводу і не може виконувати інші
операції;
2)збільшується енергоспоживання, оскільки ядро МК постійно включене.
Іншим способом контролю стану охоронних давачів з цифровими виходами використання зовнішніх переривань, які можуть генеруватися в залежності від сигналів на виводах PD2/INT0, PD3/INT1.
Умова генерування переривання визначається розрядамиISC01, ISC00 та ISC10, ISC11 регістра управління MCUCR (Рис. 4).
|
|
|
|
|
MCUCR |
|
|
- |
|
- |
|
SE |
|
SM |
|
ISC11 |
ISC10 |
ISC01 |
ISC00 |
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Читання(R)/Запис(W) R |
R |
|
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
||||||||||||||||
|
|
|
|
Початкове значення |
0 |
|
0 |
0 |
|
0 |
|
|
0 |
|
0 |
0 |
|
0 |
|
|
|
|
||||||
|
|
|
|
|
Рис. 4. Формат регістру MCUCR МК AT90S2313 |
|
|
|
|
|
||||||||||||||||||
ISC01, ISC00 – визначають умову генерації зовнішнього переривання по виводу PD2/INT0: |
||||||||||||||||||||||||||||
|
|
ISC01 |
ISC00 |
|
|
|
|
|
|
|
|
|
|
|
|
Опис |
|
|
|
|
|
|
|
|
||||
|
0 |
0 |
|
Запит на переривання генерується по низькому рівню на вході INT0 |
|
|||||||||||||||||||||||
|
0 |
1 |
|
Зарезервовано |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
1 |
0 |
|
Запит на переривання генерується по спадаючому фронті на вході INT0 |
|
|
|||||||||||||||||||||
|
|
1 |
1 |
|
Запит на переривання генерується по зростаючому фронті на вході INT0 |
|
|
|||||||||||||||||||||
ISC11, ISC10 – визначають умову генерації зовнішнього переривання по виводу PD3/INT1: |
||||||||||||||||||||||||||||
|
|
ISC11 |
ISC10 |
|
|
|
|
|
|
|
|
|
|
|
|
Опис |
|
|
|
|
|
|
|
|
||||
|
|
0 |
0 |
|
Запит на переривання генерується по низькому рівню на вході INT1 |
|
||||||||||||||||||||||
|
|
0 |
1 |
|
Зарезервовано |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
0 |
|
Запит на переривання генерується по спадаючому фронті на вході INT1 |
|
|
|||||||||||||||||||||
|
|
1 |
1 |
|
Запит на переривання генерується по зростаючому фронті на вході INT1 |
|
|
|||||||||||||||||||||
|
|
Для управління зовнішніми перериваннями призначенийрегістр маски глобальних |
||||||||||||||||||||||||||
переривань GIMSK (Global Interrupt MaSK) – Рис. 5. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
7 |
|
6 |
|
|
5 |
|
|
4 |
|
|
3 |
|
2 |
1 |
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
GIMSK |
|
INT1 |
INT0 |
|
- |
|
|
- |
|
|
- |
|
- |
- |
|
- |
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
Читання(R)/Запис(W) R/W |
R/W |
|
R |
R |
R |
R |
R |
R |
|||||||||||||||||
|
|
|
Початкове значення |
0 |
|
0 |
|
|
0 |
|
|
|
0 |
|
|
0 |
|
0 |
0 |
|
0 |
|
|
|
|
Рис. 5. Формат регістру GIMSK МК AT90S2313
INT1 – прапорець дозволу зовнішнього переривання INT1. Якщо в цьому розряді записана логічна 1 і прапорець І регістра стануSREG також встановлений в 1, то дозволяються зовнішні переривання з виводуINT1. Умова генерування переривання визначається розрядамиISC11, ISC10 регістра управління MCUCR.
INT0 – прапорець дозволу зовнішнього переривання INT0. Якщо в цьому розряді записана логічна 1 і прапорець І регістра стануSREG також встановлений в 1, то дозволяються зовнішні переривання з виводу INT0.
Регістр прапорців зовнішніх переривань GIFR (Global Interrupt Flags Register) призначений для індикації настання зовнішніх переривань (Рис. 6).
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
GIFR |
INTF1 |
INTF0 |
- |
- |
- |
- |
- |
- |
|
|
|
|
|
|
|
|
|
Читання(R)/Запис(W) R/W |
R/W |
R |
R |
R |
R |
R |
R |
|
Початкове значення |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Рис. 6. Формат регістру GIFR МК AT90S2313
26

INTF1 – прапорець зовнішнього переривання INT1. При виникненні на виводі INT1 події, яка викликає переривання, INTF1 встановлюється в 1. Якщо встановлений біт І регістра SREG і біт INT1 в регістрі GIMSK, відбувається перехід на вектор переривань за адресою0x002. Прапорець скидається після виконання підпрограми обробки переривання, або програмно – записом в нього 1.
INTF0 – прапорець зовнішнього переривання INT0. При виникненні на виводі INT0 події, яка викликає переривання, INTF0 встановлюється в 1. Якщо встановлений біт І регістра SREG і біт INT0 в регістрі GIMSK, відбувається перехід на вектор переривань за адресою0x001. Прапорець скидається після виконання підпрограми обробки переривання, або програмно – записом в нього 1.
Таким чином, якщо до виводу PD2/INT0 підключений давач з нормально розімкненими контактами, то умовою спрацювання давача є зміна сигналу на входіPD2/INT0 з логічної 1 на
логічний 0 (спадаючий фронт – ). Щоб налаштувати МК на обробку цієї події потрібно встановити ISC01 в 1, ISC00 – в 0, а в регістрі GIMSK розряд INT0 має бути рівний 1.
Налаштувавши таким чином ці виводи можна перевести МК в режим пониженого енергоспоживання, а МК буде виконувати певні дії лише тоді коли стан давачів зміниться.
1.3. Управління і обробка перериваннями в AVR-МК
Переривання – це виклики спеціальних підпрограм, при настанні певних подій. В результаті переривання виконання програми зупиняється і відбувається перехід до відповідної підпрограми обробки переривання. Переривання припиняють нормальний хід програми для виконання пріоритетної задачі, що визначається внутрішніми або зовнішніми подіями .МК Відповідно переривання бувають внутрішніми і зовнішніми. Джерелами внутрішніх переривань є вбудовані модулі МК. Зовнішні переривання викликаються скидом(сигналом на виводі
RESET ) або сигналами на виводах INT0, INT1. В AVR-МК всім перериванням поставлений у відповідність власний вектор переривання– адреса в початковій області пам’яті програм, за якою розташовується команда переходу до підпрограми обробки переривання.
МК AT90S2313 має багаторівневу систему пріоритетних переривань, а всього переривань
– 11. Молодші адреси пам’яті програм визначені як вектори переривань. Менші адреси відповідають більш високому рівню пріоритету. Самий високий рівень у скиду, наступний у INT0 – зовнішнього запиту переривання і т.д. При виникненні переривання після збереження в
стеці |
біжучого |
значення програмного лічильника |
РС |
відбувається виконання |
, команди |
|||||||||
розташованої |
за |
адресою відповідного вектора. Тому за цими адресами розташовуються |
||||||||||||
команди відносного переходу до підпрограм обробки переривань. Останньою командою |
||||||||||||||
підпрограми обробки переривання повинна бути командаRETI, яка забезпечує повернення в |
||||||||||||||
основну програму і відновлення збереженого вмісту РС. |
|
|
|
|
||||||||||
|
№ |
вектора |
|
Адреса |
|
Назва переривання |
Джерело |
|
з |
|||||
|
|
1 |
|
0х000 |
|
|
RESET |
Скид при включенні |
живлення, апаратний скид |
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
виводу RESET , |
скид від сторожового таймера |
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|||||
|
|
2 |
|
0х001 |
|
|
INT0 |
Зовнішнє переривання 0 |
|
|
|
|||
|
|
3 |
|
0х002 |
|
|
INT1 |
Зовнішнє переривання 1 |
|
|
|
|||
|
|
4 |
|
0х003 |
|
|
Timer 1 CAPT1 |
Захват таймера/лічильника 1 |
|
|
||||
|
|
5 |
|
0х004 |
|
|
Timer 1 COMP1 |
Співпадіння таймера/лічильника1 |
|
|
||||
|
|
6 |
|
0х005 |
|
|
Timer 1 OVF1 |
Переповнення таймера/лічильника 1 |
|
|
||||
|
|
7 |
|
0х006 |
|
|
Timer 0 OVF0 |
Переповнення таймера/лічильника 0 |
|
|
||||
|
|
8 |
|
0х007 |
|
|
UART, RX |
Прийом з послідовного порта завершений |
|
|
||||
|
|
9 |
|
0х008 |
|
|
UART, UDRE |
Регістр даних послідовного порта пустий |
|
|
||||
|
|
10 |
|
0х009 |
|
|
UART, TX |
Передача з послідовного порта завершена |
|
|
||||
|
|
11 |
|
0х00A |
|
|
ANA COMP |
Аналоговий компаратор |
|
|
|
1.4. Обробка переривань
Для дозволу переривань прапорець І регіструSREG повинен бути встановлений в1, а дозвіл або заборона (маскування) окремих переривань проводиться встановленням або скидом
27
відповідних розрядів регістрів масок переривань. Обробка переривань здійснюється наступним чином:
1)При виконанні умов, необхідних для генерації переривання, відповідний цьому перериванню прапорець встановлюється в1, а прапорець І регістра стануSREG апаратно скидається, забороняючи тим самим обробку наступних переривань. Проте в підпрограмі обробки переривання цей прапорець можна встановити в 1 для дозволу вкладених переривань.
2)Якщо переривання дозволене, поточний вміст РС зберігається в ,стеціа в РС завантажується адреса вектора відповідного переривання. При цьому прапорець переривання апаратно скидається. Якщо переривання заборонене (прапорець дозволу переривання скинутий),
прапорець переривання залишається в стані логічної1 до дозволу переривання або до програмного скиду цього прапорця.
3)Виконується підпрограма обробки переривання.
4)Виконується команда повернення з переривання RETI, при цьому прапорець І апаратно встановлюється в 1.
5)ЦП автоматично відновлює вміст РС зі стеку. Потім основна програма продовжує своє виконання з того місця, де вона була перервана.
AVR-МК підтримують чергу переривань. Вона працює таким: якщо умови генерації
одного або більше переривань виникають в той, количас прапорець загального дозволу скинутий, відповідні прапорці встановлюються в 1 і залишаються в цьому стані до встановлення прапорця загального дозволу переривань. Після дозволу переривань виконується їх обробка у відповідності з пріоритетом.
Час відгуку для будь-якого переривання становить4 такти. Протягом перших двох тактів відбувається зберігання лічильника команд в стеці, а протягом наступних двох виконується команда переходу до підпрограми обробки переривання. Якщо переривання відбудеться під час виконання команди, тривалістю декілька тактів то генерація переривання відбудеться тільки після виконання цієї команди. Повернення в основну програму також займає 4 такти.
1.5. Режими пониженого енергоспоживання
Для охоронних давачів та портативної апаратури важливим є максимальний час роботи від вбудованих джерел живлення(батареї, акумулятори). Тому слід намагатися, щоб МК знаходився в активному режимі(з максимальним енергоспоживанням) як можна менше часу. Усі моделі МК сімейства Classic підтримують два режими пониженого енергоспоживання: Idle і Power Down. Перехід в один з режимів пониженого енергоспоживання здійснюється командою SLEEP. При цьому прапорецьSE (Sleep Enable) регістра управління MCUCR повинен бути рівний 1. Вибір конкретного режиму визначається станом прапорцяSM (Sleep Mode) регістра управління MCUCR (див. регістр MCUCR): SM = 1 – Power Down, SM = 0 – Idle.
Вихід з режиму «сну» може бути здійснений:
1.У результаті переривання.
2.У результаті скиду.
1.5.1.Режим Idle
Уцьому режимі припиняє роботу центральний процесор МК, а всі периферійні пристрої
(таймери, компаратор, АЦП і т.д.), а також підсистема переривань продовжують функціонувати. Вихід з режимуIdle можливий як по зовнішньому так і по внутрішньому перериванню. Основною перевагою режиму Idle є швидка реакція на події, які пробуджують МК.
1.5.2.Режим Power Down
Врежимі Power Down робота всіх систем МК, включно з тактовим генератором
припиняється. Єдиними вузлами, які продовжують працювати є сторожовий таймер і підсистема обробки зовнішніх переривань. Вихід з режиму Power Down можливий лише при зовнішньому (апаратному) скиді, скиді від сторожового таймеру, виникненні зовнішнього переривання по рівню. Для виходу МК з режиму Power Down по зовнішньому перериванню тривалість активного сигналу (імпульс низького рівня) повинна перевищувати величину затримки скидуt-
28
OUT. Між настанням події, яка приводить до виходу МК з режиму Power Down, і початком роботи МК проходить певний час, на протязі якого тактовий генератор МК входить в робочий режим. По тривалості ця затримка рівна затримці скиду tOUT. Якщо сигнал, який викликав пробудження МК зникне раніше ніж МК перейде в робочий режим, обробник відповідного переривання викликаний не буде.
1.6. ЕEPROM
Часто в процесі функціонування охоронної системи чи пристрою виникає потреба зберігати певні дані, які можуть змінюватись під час роботи, в енергонезалежній пам’яті. Ці дані можуть представляти собою кількість або час настання певних подій, ключі користувачів, результати вимірювання тощо. Для цього можна використати зовнішню пам’ять, але якщо обсяг
даних невеликий можна скористатися вбудованою пам’ятю .МКAVR-МК мають у своєму складі енергонезалежну пам’ять даних EPROM,Е зокрема МК AT90S2313 містить ЕEPROM об’ємом 128 байт. Час запису байту в EPROMЕ лежить в діапазоні2.5…4 мс і залежить від напруги живлення. Енергонезалежна пам’ять розташована в окремому адресному просторі, а доступ до неї здійснюється з допомогою певних регістрів вводу-виводу: регістра управління ЕEPROM EECR, регістра адреси ЕEAR і регістра даних ЕEDR.
Регістр адреси ЕEPROM – ЕEAR (EEPROM Address Register) – задає адресу комірки в
128-байтовому просторі ЕEPROM до якої буде звертання.
Регістр даних ЕEPROM – EEDR (EEPROM Data Register) – містить дані, які потрібно записати в ЕEPROM або зчитати.
Регістр управління ЕEPROM – EEСR (EEPROM Control Register) – керує доступом до ЕEPROM (Рис. 7).
EECR |
- |
- |
|
- |
- |
|
- |
EEMWE |
EEWE |
EERE |
|
|
|||
Читання(R)/Запис(W) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
R |
R |
R |
R |
R |
|
R/W R/W |
R/W |
|
|||||||
Початкове значення |
0 |
0 |
|
0 |
0 |
|
0 |
|
0 |
|
0 |
|
0 |
|
|
Рис. 7. Формат регістру EEСR МК AT90S2313 |
|
|
|
||||||||||||
Розглянемо призначення прапорців цього регістру. |
|
|
|
|
|
|
|
|
|
||||||
EERE (EEPROM Read Enable) – дозвіл |
читання |
з |
EPROMЕ |
. При |
встановленні |
цього |
|||||||||
розряду в 1 відбувається читання |
даних |
з EPROMЕ . Після |
закінчення |
читання цей |
розряд |
скидається апаратно. Після встановлення цього біту в1 процесор пропускає 4 машинних такти перед початком виконання наступної інструкції.
EEWE (EEPROM Write Enable) – дозвіл запису в EPROMЕ . При встановленні цього розряду в 1 відбувається запис даних в ЕEPROM.
EEMWE (EEPROM Master Write Enable) – біт управління дозволом запису в EPROMЕ .
Визначає функціонування біту дозволу запису EEWE. Якщо даний біт встановлений в 1, то при запису в розрядEEWE одиниці відбувається запис даних в EPROMЕ . Інакше встановлення EEWE в 1 не має ніякого ефекту. Після програмного встановлення цей розряд скидається апаратно через 4 машинні такти.
Таким чином процедура запису одного байту в ЕEPROM-пам’ять складається з наступних етапів:
1. Дочекатися готовності ЕEPROM до запису – тобто чекати поки не обнулиться прапорець
EEWE.
2.Завантажити байт даних в регістр EEDR, а потрібну адресу – в регістр EEАR.
3.Встановити однією командою в 1 прапорець EEMWE регістра EEСR.
4.Не пізніше ніж через 4 такти після встановлення EEMWE встановити прапорець EEWE.
Процедура читання одного байту з ЕEPROM-пам’яті виконується за один машинний такт. Крім того, після встановлення розряду EERE в 1 процесор пропускає 4 машинних такти перед початком виконання наступної команди, тому слідкувати за станом прапорцяEERE немає необхідності.
Таким чином процедура читання одного байту з ЕEPROM-пам’яті складається з наступних етапів:
29