МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
Кафедра «Захист інформації»
ЗВІТ
про виконання лабораторної роботи №2
з курсу “ Мікропроцесори в системах технічного захисту інформації ”
Вивчення внутрішніх модулів та режимів роботи AVR-мікроконтролерів.
Варіант - 11
Мета роботи – ознайомитись з роботою периферійних модулів (каналового компаратора,EEEPROM-пам’яті),системою переривань та внутрішніми режимами роботи AVR-мікроконтролерів Розширити навики створення та відладки програтно-апаратних засобів на основі мікроконтролерів сімейства AVR в програмах AVR Studio та Proteus 7.
Завдання
Домашня підготовка до роботи :
1. Вивчити теоретичний матеріал.
2. Вивчити основні властивості МК необхідні для виконання лабораторної роботи.
3. Підготовити програму функціонування охоронної системи згідно індивідуального завдання.
Виконати в лабораторії
1. Створити проект в AVR Studio, ввести свою програму, провести її асемблювання.
2. В режимі покрокової відладки переконатися в правильності роботи програми.
3. Відкрити файл LR_2.dsn в програмі Proteus, внести зміни у схему відповідно до свого індивідуального завдання, підключити до МК отриманий в AVR Studio hex-файл.
4. Запустити режим симуляції схеми та перевірити правильність функціонування охоронної системи у всіх режимах роботи: відсутність спарцювання, спарцювання аналогового давача, спрацювання цифрового давача.
Лістинг програми
Параметри системи:
; Рівень спрацювання аналогового давача: 0.5 В
; Тип цифрового давача: НРЗ
; Вивід для підключення цифрового давача: PD2/INT0
; Вивід для підключення світлодіоду: РD3
; Адреса комірки ЕЕPROM для зберігання кількості спрацювань цифрового давача: 0x2E
; Адреса комірки ЕЕPROM для зберігання кількості спрацювань аналогового давача: 0x47
; Режим пониженого енергоспоживання: Idle
; Напруга живлення: 5 В
;////////////////////////////////////////////////////////////////////////////
.include "2313def.inc"
;////////////////////////////////////////////////////////////////////////////
.def temp = r16 ; Робочий регістр
.def EE_Addr_Reg = r17 ; Регістр зберігання адреси EEPROM
.def EE_Data_Reg = r18 ; Регістр зберігання даних EEPROM
;////////////////////////////////////////////////////////////////////////////
.equ Analog_Addr = 0x2E ; Адреса EEPROM для аналогового давача
.equ Digital_Addr = 0x47 ; Адреса EEPROM для цифрового давача
.equ LED_DDR = DDRD
.equ LED_PORT = PORTD
.equ LED_PIN = PD3
;////////////////////////////////////////////////////////////////////////////
.cseg ; Початок сегменту Flash-пам'яті
.org 0 ; Адреса початку програми
rjmp RESET ; Вектор скиду
rjmp INT0_EXT
reti ; rjmp INT1_EXT ; Вектор зовнішнього переривання 0 з виводу PD3
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
rjmp ANA_COMP ; Вектор переривання від аналогового компаратора
;////////////////////////////////////////////////////////////////////////////
.org 0x0B ; Початок основної програми
RESET:
; Ініціалізація стеку
ldi temp, low(0xDF)
out SPL, temp
; Налаштування виводів аналогового компаратора
cbi DDRB, PB0 ; Вивід РВ0 - вхід
cbi DDRB, PB1 ; Вивід РВ1 - вхід
cbi PORTB, PB0 ; Відключити внутрішній підтягуючий резистор для РВ0
cbi PORTB, PB1 ; Відключити внутрішній підтягуючий резистор для РВ1
; Налаштування виводів світлодіода
sbi LED_PORT, LED_PIN ; Світлодіод виключений
sbi LED_DDR, LED_PIN ; Вивід LED_PIN - вихід
; Налаштування виводу для підключення цифрового давача
cbi DDRD, PD2 ; Вивід РD2 - вхід
cbi PORTD, PD2 ; Відключити внутрішній підтягуючий резистор для РD2
ldi temp, (1<<ACIE) | (1<<ACIS1) | (1<<ACIS0) ; Дозволити переривання від АК,
; переривання генерується при
; переході з 0 в 1
out ACSR, temp ; Сконфігурувати аналоговий компаратор
; Налаштувати режим пониженого енергоспоживання і умову генерації переривання INT1
ldi temp, (1<<ISC00)|(1<<ISC01)| (1<<SE) ; Режим енергоспоживання Idle: SM = 0, ; зовнішні переривання по сзростаючому фронту
out MCUCR, temp ; Сконфігурувати регістр MCUCR
; Дозволити зовнішнє переривання INT1
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 ; Вихід з п/п запису байту в ЕEPROM
;////////////////////////////////////////////////////////////////////////////
;////////////////////////////////////////////////////////////////////////////
EEPROM_Read: ; П/п читання байту з EEPROM
sbic EECR, EEWE ; Чекати, доки прапорець EEWE не буде скинутий
rjmp EEPROM_Read
out EEAR, EE_Addr_Reg ; Завантажити адресу для читання
sbi EECR, EERE ; Встановити прапорець дозволу читання
in EE_Data_Reg, EEDR ; Прочитати дані
ret ; Вихід з п/п читання байту з ЕEPROM
;////////////////////////////////////////////////////////////////////////////
Схема симуляції
Висновок: ознайомились з роботою периферійних модулів (каналового компаратора,EEEPROM-пам’яті),системою переривань та внутрішніми режимами роботи AVR-мікроконтролерів Розширити навики створення та відладки програтно-апаратних засобів на основі мікроконтролерів сімейства AVR в програмах AVR Studio та Proteus 7.