МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА"
ІНСТИТУТ КОМП’ЮТЕРНИХ ТЕХНОЛОГІЙ, АВТОМАТИКИ ТА МЕТРОЛОГІЇ
КАФЕДРА ”ЗАХИСТ ІНФОРМАЦІЇ”
Звіт
до лабораторної роботи № 2
з курсу: "Мікропроцесори в системах технічного захисту інформації"
на тему: “Вивчення внутрішніх модулів та режимів роботи AVR-мікроконтролерів”
Варіант – 17
Мета роботи: Ознайомитись з роботою периферійних модулів (аналогового компаратора, EEPROM-пам’яті), системою переривань та внутрішніми режимами роботи AVR-мікроконтролерів. Розширити навики створення та відладки програмно-апаратних засобів на основі мікроконтролерів сімейства AVR у програмах AVR Studio та Proteus 7.
Повний текст завдання:
Домашня підготовка до роботи:
Вивчити теоретичний матеріал.
Вивчити основні властивості МК необхідні для виконання лабораторної роботи.
Підготувати програму функціонування охоронної системи згідно індивідуального завдання у табл. 1.
Виконання в лабораторії:
Створити проект в AVR Studio, ввести свою програму, провести її асемблювання.
В режимі покрокової відладки переконатися в правильності роботи програми.
Відкрити файл LR_1.dsn в програмі Proteus, внести зміни у схему відповідно до свого індивідуального завдання, підключити до МК отриманий в AVR Studio hex-файл.
Запустити режим симуляції схеми та перевірити правильність функціонування охоронної системи у всіх режимах роботи: відсутність спрацювання, спрацювання аналогового давача, спрацювання цифрового давача.
Табл. 1.
№
Напруга спрацювання аналогового давача, В
Виводи для підкл. охоронних шлейфів з цифровими давачами
Тип цифрового давача
Вивід для підкл. світлодіода
Адреса в EEPROM Addr_1
Адреса в EEPROM Addr_2
17
1.8
INT0
НРЗ
PD1
35
20
Лістинг програми одержаної в AVR Studio та необхідні розрахунки:
;////////////////////////////////////////////////
.include "2313def.inc"
;////////////////////////////////////////////////
.def temp = r16 ; ðîáî÷èé ðåã³ñòð
.def EE_Addr_Reg = r17 ; ðåã³ñòð çáåð³ãàííÿ àäðåñè EEPROM
.def EE_Data_Reg = r18 ; ðåã³ñòð çáåð³ãàííÿ äàíèõ EEPROM
;////////////////////////////////////////////////
.equ Analog_Addr = 0x23 ; Àäðåñà EEPROM äëÿ àíàëîãîâîãî äàâà÷à
.equ Digital_Addr = 0x14 ; Àäðåñà EEPROM äëÿ öèôðîâîãî äàâà÷à
.equ LED_DDR = DDRD
.equ LED_PORT = PORTD
.equ LED_PIN = PD1
;////////////////////////////////////////////////
.cseg ; ïî÷àòîê ñåãìåíòó Flash-ïàìÿò³
.org 0 ; àäðåñà ïî÷àòêó ïðîãðàìè
rjmp RESET ; âåêòîð ñêèäó
rjmp INT0_EXT ; âåêòîð çîâí³øíüîãî ïåðåðèâàííÿ 0 ç âèâîäó PD2
;reti ; rjmp INT1_EXT
;reti ; rjmp TIM_CAPT1
;reti ; rjmp TIM_COMP1
;reti ; rjmp TIM_OVF1
;reti ; rjmp TIM_OVF0
;reti ; rjmp UART_RXC
;reti ; rjmp UART_DRE
;reti ; rjmp UART_TXC
.org 10
rjmp ANA_COMP ; Âåêòîð ïåðåðèâàííÿ â³ä àíàëîãîâîãî êîìïàðàòîðà
;////////////////////////////////////////////////
.org 0x12 ; ïî÷àòîê îñíîâíî¿ ïðîãðàìè
RESET:
; ²í³ö³àë³çàö³ÿ ñòåêó
ldi temp, low(0xDF)
out SPL, temp
; íàëàøòóâàííÿ âèâîä³â àíàëîãîâîãî êîìïàðàòîðà
cbi DDRB, PB0 ; âèâ³ä PB0 - âõ³ä
cbi DDRB, PB1 ; âèâ³ä PB1 - âõ³ä
cbi PORTB, PB0 ; â³äêëþ÷èòè âíóòð³øí³é ï³äòÿãóþ÷èé ðåçèñòîð äëÿ PB0
cbi PORTB, PB1 ; â³äêëþ÷èòè âíóòð³øí³é ï³äòÿãóþ÷èé ðåçèñòîð äëÿ PB1
; íàëàøòóâàííÿ âèâîä³â ñâ³òëîä³îäà
sbi LED_PORT, LED_PIN ; ñâ³òëîä³îä âèêëþ÷åíèé
sbi LED_DDR, LED_PIN ; âèâ³ä LED_PIN - âèõ³ä
; íàëàøòóâàííÿ âèâîäó äëÿ ï³äêëþ÷åííÿ öèôðîâîãî äàâà÷à
cbi DDRD, PD2 ; âèâ³ä PD2 - âõ³ä
cbi PORTD, PD2 ; â³äêëþ÷èòè âíóòð³øí³é ï³äòÿãóþ÷èé ðåçèñòîð äëÿ PD2
ldi temp, (1<<ACIE) | (1<<ACIS1) | (1<<ACIS0) ; äîçâîëèòè ïåðåðèâàííÿ â³ä ÀÊ,
; ïåðåðèâàííÿ ãåíåðóºòüñÿ ïðè
; ïåðåõîä³ ç 0 â 1
out ACSR, temp ; ñêîíô³ãóðóâàòè àíàëîãîâèé êîìïàðàòîð
; íàëàøòóâàòè ðåæèì ïîíèæåíîãî åíåðãîñïîæèâàííÿ ³ óìîâó ãåíåðàö³¿ ïåðåðèâàííÿ INT0
ldi temp, (1<<ISC01) | (1<<SE) ; Ðåæèì åíåðãîñïîæèâàííÿ Idle: SM = 0,
; çîâí³øí³ ïåðåðèâàííÿ ïî ñïàäàþ÷îìó ôðîíòó
out MCUCR, temp ; ñêîíô³ãóðóâàòè ðåã³ñòð MCUCR
; äîçâîëèòè çîâí³øíº ïåðåðèâàííÿ INT0
ldi temp, (1<<INT0)
out GIMSK, temp
; çàãàëüíèé äîçâ³ë ïåðåðèâàíü: ² = 1
sei
Loop:
sleep ; ïåðåõ³ä â ðåæèì ïîíèæåíîãî åíåðãîñïîæèâàííÿ
rjmp Loop ; ï³ñëÿ ñïðàöþâàííÿ äàâà÷à çíîâó ïåðåéòè â ðåæèì
; ïîíèæåíîãî åíåðãîñïîæèâàííÿ
;//////////////////////////////////////////////////////////////
;//////////////////////////////////////////////////////////////
INT0_EXT: ; ϳäïðîãðàìà îáðîáêè ïåðåðèâàííÿ INT0
cbi LED_PORT, LED_PIN ; Âêëþ÷èòè ñâ³òëîä³îä
ldi EE_Addr_Reg, Digital_Addr ; Çàâàíòàæèòè â ðåã³ñòð àäðåñè EEPROM àäðåñó
; öèôðîâîãî äàâà÷à
rcall EEPROM_Read ; ïðî÷èòàòè ç EEPROM ê³ëüê³ñòü ñïðàöþâàíü
; öèôðîâîãî äàâà÷à
inc EE_Data_Reg ; çá³ëüøèòè ê³ëüê³ñòü ñïðàöþâàíü íà 1
rcall EEPROM_Write ; çáåðåãòè ê³ëüê³ñòü ñïðàöþâàíü öèôðîâîãî
; äàâà÷à â EEPROM
reti ; âèéòè ç ïåðåðèâàííÿ
;/////////////////////////////////////////////////////////////
;/////////////////////////////////////////////////////////////
ANA_COMP: ; ϳäïðîãðàìà îáîðáêè ïåðåðèâàííÿ â³ä àíàëîãîâîãî êîìïàðàòîðà
cbi LED_PORT, LED_PIN ; Âêëþ÷èòè ñâ³òëîä³îä
ldi EE_Addr_Reg, Analog_Addr ; Çàâàíòàæèòè â ðåã³ñòð àäðåñè EEPROM àäðåñó
; àíàëîãîâîãî äàâà÷à
rcall EEPROM_Read ; ïðî÷èòàòè ç EEPROM ê³ëüê³ñòü ñïðàöþâàíü
; àíàëîãîâîãî äàâà÷à
inc EE_Data_Reg ; çá³ëüøèòè ê³ëüê³ñòü ñïðàöþâàíü íà 1
rcall EEPROM_Write ; çáåðåãòè ê³ëüê³ñòü ñïðàöþâàíü àíàëîãîâîãî
; äàâà÷à â EEPROM
reti ; âèéòè ç ïåðåðèâàííÿ
;/////////////////////////////////////////////////////////////
;/////////////////////////////////////////////////////////////
EEPROM_Write: ; ï³äïðîãðàìà çàïèñó áàéòó â EEPROM
sbic EECR, EEWE ; ÷åêàòè äîêè ïðàïîðåöü EEWE íå áóäå ñêèíóòèé
rjmp EEPROM_Write
out EEAR, EE_Addr_Reg ; çàâàíòàæèòè àäðåñó äëÿ çàïèñó
out EEDR, EE_Data_Reg ; çàâàíòàæèòè äàí³ äëÿ çàïèñó
sbi EECR, EEMWE ; Âñòàíîâèòè ìàñòåð-á³ò äîçâîëó çàïèñó
sbi EECR, EEWE ; Âñòàíîâèòè á³ò äîçâîëó çàïèñó
ret ; Âèõ³ä ç ï³äïðîãðàìè çàïèñó áàéòó â EEPROM
;/////////////////////////////////////////////////////////////
;/////////////////////////////////////////////////////////////
EEPROM_Read: ; ï³äïðîãðàìà ÷èòàííÿ áàéòó ç EEPROM
sbic EECR, EEWE ; ÷åêàòè äîêè ïðàïîðåöü EEWE íå áóäå ñêèíóòèé ????????????
rjmp EEPROM_Read
out EEAR, EE_Addr_Reg ; çàâàíòàæèòè àäðåñó äëÿ ÷èòàííÿ
sbi EECR, EERE ; Âñòàíîâèòè ïðàïîðåöü äîçâîëó ÷èòàííÿ
in EE_Data_Reg, EEDR ; ïðî÷èòàòè äàí³
ret ; Âèõ³ä ç ï³äïðîãðàìè ÷èòàííÿ áàéòó ç EEPROM
;/////////////////////////////////////////////////////////////
; =>R1 = 6.4 кОм; R2 = 3.6 кОм
Схема симуляції в Proteus:
Висновок:
Виконавши лабораторну роботу ми ознайомились з роботою периферійних модулів (аналогового компаратора, EEPROM-пам’яті), системою переривань та внутрішніми режимами роботи AVR-мікроконтролерів. Розширили навики створення та відладки програмно-апаратних засобів на основі мікроконтролерів сімейства AVR у програмах AVR Studio та Proteus 7.
В даній лабораторній роботі ми вивчили основи побудови охоронних систем на базі AVR-МК, загальні принципи використання цифрових та аналогових охоронних давачів, елементів управління та індикації та принципи керування мікроконтролером роботою системи, а саме особливо слід відмітити роботу підсистеми обробки зовнішніх та внутрішніх переривань, та режими пониженого енергоспоживання, які дозволяють ефективніше керувати роботою мікроконтролера та всією системою загалом.