МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
кафедра ЗІ
З В І Т
до лабораторної роботи №2
з навчальної дисципліни:
«Мікропроцесори в системах ТЗІ»
на тему:
“Вивчення внутрішніх модулів та режимів роботи
AVR-мікроконтролерів”
Варіант №1
Львів – 2012
Мета роботи: ознайомитись з роботою периферійних модулів (аналогового компаратора, EEPROM-пам’яті), системою переривань та внутрішніми режимами роботи AVR-мікроконтролерів. Розширити навики створення та відладки програмно-апаратних засобів на основі мікроконтролерів сімейства AVR в програмах AVR Studio та Proteus 7.
Текст завдання
1. Створити проект в AVR Studio, ввести свою програму, провести її асемблювання.
2. В режимі покрокової відладки переконатися в правильності роботи програми.
3. Відкрити файл LR_2.dsn в програмі Proteus, внести зміни у схему відповідно до свого індивідуального завдання, підключити до МК отриманий в AVR Studio hex-файл.
4. Запустити режим симуляції схеми та перевірити правильність функціонування охоронної системи у всіх режимах роботи: відсутність спарцювання, спрацювання аналогового давача, спрацювання цифрового давача.
Лістинг програми
; Параметри системи:
; Рівень спрацювання аналогового давача: 3.5 В
; Тип цифрового давача: НРЗ
; Вивід для підключення цифрового давача: PD3/INT1
; Вивід для підключення світлодіоду: РВ5
; Адреса комірки ЕЕPROM для зберігання кількості спрацювань цифрового давача: 0x43
; Адреса комірки ЕЕPROM для зберігання кількості спрацювань аналогового давача: 0x6D
; Режим пониженого енергоспоживання: Idle
; Напруга живлення: 5 В
;////////////////////////////////////////////////////////////////////////////
.include "2313def.inc"
;////////////////////////////////////////////////////////////////////////////
.def temp = r16 ; Робочий регістр
.def EE_Addr_Reg = r17 ; Регістр зберігання адреси EEPROM
.def EE_Data_Reg = r18 ; Регістр зберігання даних EEPROM
;////////////////////////////////////////////////////////////////////////////
.equ Analog_Addr = 0x43 ; Адреса EEPROM для аналогового давача
.equ Digital_Addr = 0x6D ; Адреса EEPROM для цифрового давача
.equ LED_DDR = DDRB
.equ LED_PORT = PORTB
.equ LED_PIN = PB6
;////////////////////////////////////////////////////////////////////////////
.cseg ; Початок сегменту Flash-пам'яті
.org 0 ; Адреса початку програми
rjmp RESET ; Вектор скиду
reti ;rjmp INT0_EXT ; Вектор зовнішнього переривання 0 з виводу PD2
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
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<<ISC01) | (1<<SE) | (1<<ISC11); Режим енергоспоживання Idle: SM = 0,
; ; зовнішні переривання по спадаючому фронту
out MCUCR, temp ; Сконфігурувати регістр MCUCR
; Дозволити зовнішнє переривання INT1
ldi temp, (1<<INT1)
out GIMSK, temp
; Загальний дозвіл переривань: І = 1
sei
Loop:
sleep ; Перехід в режим пониженого енергоспоживання
rjmp Loop ; Після спрацювання давача знову перейти в режим
; пониженого енергоспоживання
;////////////////////////////////////////////////////////////////////////////
;////////////////////////////////////////////////////////////////////////////
INT1_EXT: ; П/п обробки переривання INT1
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
;////////////////////////////////////////////////////////////////////////////
Схема симуляції в Proteus
Висновок
На даній лабораторній роботі, ми ознайомилися з роботою периферійних модулів (аналогового компаратора, EEPROM-пам’яті), системою переривань та внутрішніми режимами роботи AVR-мікроконтролерів. Розширити навики створення та відладки програмно-апаратних засобів на основі мікроконтролерів сімейства AVR в програмах AVR Studio та Proteus 7.