МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
Кафедра “Захист інформації”
Совин Я. Р., Стахів М. Ю.
МЕТОДИЧНІ ВКАЗІВКИ
до виконання лабораторних робіт з курсу
“Мікропроцесорні пристрої”
для студентів базового напряму 6.1601
“Інформаційна безпека”
Затверджено
на засiданнi кафедри
"Захист інформації"
протокол № хх вiд хх.хх.2009 p.
Львів 2009
ЗМІСТ
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
Кафедра “Захист інформації”
Знайомство з інтегрованим середовищем розробки AVR Studio та
програмою симуляції Proteus.
Написання та відладка простих програм для AVR-мікроконтролерів
МЕТОДИЧНІ ВКАЗІВКИ
до лабораторної роботи № 1
з курсу “Мікропроцесорні пристрої”
для студентів базового напряму 6.1601
“Інформаційна безпека”
Затверджено
на засiданнi кафедри
"Захист інформації"
протокол № хх вiд хх.хх.2009 p.
Львів 2009
Знайомство з інтегрованим середовищем розробки AVR Studio та програмою симуляції Proteus. Написання та відладка простих програм для AVR мікроконтролерів: Методичні вказівки до лабораторної роботи № 1 з курсу ”Мікропроцесорні пристрої” для студентів базового напрямку ”Інформаційна безпека” / Укл. Я. Р. Совин, М. Ю. Стахів - Львiв: Національний університет "Львівська політехніка", 2008. - 19 с.
Укладачі: Я. Р. Совин, канд. техн. наук, доцент
М. Ю. Стахів, асистент
Вiдповiдальний за випуск: Дудикевич В. Б., д.т.н., професор
Рецензенти:
Мета роботи – ознайомитись з послідовністю створення та відладки програмно-апаратних засобів на основі мікроконтролерів сімейства AVR в програмах AVR Studio та Proteus 7.
1. ТЕОРЕТИЧНІ ВІДОМОСТІ
AVR Studio 4 є інтегрованим середовищем розробки (Integrated Development Environment - IDE) для написання та відладки програмного забезпечення мікроконтролерів сімейства AVR в операційних системах Windows 9x/ME/NT/2000/XP/VISTA. AVR Studio 4 надає засоби управління проектами, редагування та асемблювання вихідних кодів, симуляції роботи програми, підтримки мов високого рівня С/С++, програмування кристалу мікроконтролера, а також апаратної відладки.
Робота в інтегрованому середовищі розробки AVR Studio 4
1.1.1. Створення проекту та ввід програми
Запустіть AVR Studio. Виберіть розділ меню Project/New Project. Вікно, яке з’явиться при цьому (рис. 1) дає змогу створити новий проект. Присвоїмо ім’я 1 назві проекту (поле Project Name) та асемблерному файлу (поле Initial File). Оскільки прапорець Create Folder встановлений, то при натисненні кнопки Next>> AVR Studio автоматично створить папку з назвою 1, асемблерним файлом 1.asm та файлом проекту 1.aps в каталозі, який задається полем Location. Бажано проекти зберігати в тому ж каталозі де інстальована програма AVR Studio.
Рис. 1. Створення проекту в AVR Studio
В полі Project Type виберіть тип проекту Atmel AVR Assembler і натисніть кнопку Next>>. У вікні Select debug platform and device, що при цьому появиться (рис. 2), виберіть в полі Debug Platform рядок AVR Simulator, потім в полі Device рядок AT90S2313 – мікроконтролер, для якого створюється програма і натисніть кнопку Finish.
Рис. 2. Налаштування проекту в AVR Studio
Тепер на екрані активне вікно G:\Program Files\AVR Studio\Work\1.asm. В ньому набирається і редагується текст програми на асемблері.
При наборі програми можна використовувати всі способи роботи з фрагментами тексту, знайомі з досвіду роботи з Microsoft Office та іншими текстовими редакторами, що підтримуються пунктами меню Edit.
Щоб переглянути всю систему команд МК AT90S2313, або особливості виконання певної команди потрібно в AVR Studio вибрати пункт меню Help/AVR Tools User Guide. При цьому з’явиться вікно AVR Tools (рис. 3), де потрібно спочатку вибрати пункт AVR Assembler/Parts/AT90S2313 Instruction Set. Натиснувши мишкою на певну команду можна отримати детальну інформації про виконання команди та типові приклади використання.
Рис. 3. Вікно довідки по системі команд МК AT90S2313
1.1.2. Асемблювання програми
Після завершення вводу програми, перед її симуляцією або записом в пам’ять МК, необхідно провести її асемблювання. Результат асемблювання програми може виводитись в різних форматах. За замовчуванням результат зберігається в файл з розширенням *.hex, і саме цей формат файлу (Intel Intellec 8/MDS) може використовуватись програматорами для завантаження програм в пам’ять МК. Формат файлу задається через пункт меню Project/AVR Assembler Setup, при цьому з’являється вікно (рис. 4), де в полі Additional Output file format вибирається потрібне значення.
Рис. 4. Вікно управління асемблюванням
Для асемблювання програми можна скористатися пунктом меню Project/Build, кнопкою F7 або кнопкою Build панелі інструментів. У нижньому вікні Output виводиться інформація про результати асемблювання (рис. 5).
Рис. 5. Вікно Output з повідомленнями про результат асемблювання програми
У вікні виводиться така інформація:
Assembling 'G:\Program Files\AVR Studio\Work\1\1.asm' – ім’я файлу, що асемблюється;
Including 'G:\Program Files\AVR Studio\AvrAssembler\Appnotes\2313def.inc' – файли, включені в програму директивою .include.
Code: 325 words – розмір програми в 16-розрядних словах;
Constants (dw/db): 0 words – кількість констант розміщених в пам’яті програм директивами .dw або .db;
Total: 325 words – загальний розмір використаної пам’яті програм;
Assembly complete with no errors – повідомлення про те, що помилки не виявлені.
Попередження виводяться в рядках позначених жовтими кружками, помилки – червоними.
Якщо в програмі виявлені помилки, вміст вікна Output дає змогу їх локалізувати та визначити причину помилки. Кожній помилці (error) відповідає повідомлення, представлене одним рядком у вікні Output (рис. 6).
Рис. 6. Вид вікна Output з повідомленнями про помилки
Наприклад:
G:\Program Files\AVR Studio\Work\1\1.asm(53) : error : Register R0-R31 expected
Це означає, що у файлі G:\Program Files\AVR Studio\Work\1\1.asm в рядку 53 виявлена помилка: можуть бути використані регістри r0…r31, а є спроба використати неіснуючий регістр r36.
Якщо двічі клацнути мишкою по рядку з повідомленням про помилку у вікні Output то курсор автоматично встановиться на рядок програми з помилкою, а також напроти цього рядку у вікні 1.asm з’явиться синя стрілка. Номер рядку в якому розташовано курсор також можна визначити по значенню Ln 53, Col 1 (рядок 53, колонка 1), яке виводиться в нижньому правому куті вікна AVR Studio (рис. 5).
У разі наявності повідомлень про помилки, необхідно усунути всі помилки і повторити асемблювання.
Після успішного асемблювання у вікні Workspace на вкладці Project появиться папка Output, в якій буде розміщено файл лістингу 1.lst і карти пам’яті та констант 1.map. Файл лістингу містить поряд з рядками асемблерного тексту також адреси комірок пам’яті в яких буде розташовано дану команду (перша колонка), а також її шістнадцятковий код (друга колонка) - рис. 7. Дозволити або заборонити створення цих файлів можна через пункт меню Project/AVR Assembler Setup при цьому з’являється вікно (рис. 4), де в полях Map file та List file потрібно встановити або зняти галочку.
Рис. 7. Формат файлу лістингу *.lst
1.1.3. Відладка програми
Відладка програми полягає у її покроковому виконанні з контролем стану внутрішніх змінних МК, правильності конфігурації периферійних модулів, послідовності виклику підпрограм і переривань та реакції на зовнішні події.
Після успішного асемблювання для запуску покрокової відладки виберіть пункт меню Debug/Start Debugging. У вікні програми, зліва від першої команди, з’явиться жовта стрілка, яка вказує поточну команду, що виконується.
Після цього можна задати опції симулятора AVR Studio. Для цього потрібно вибрати пункт меню Debug/AVR Simulator Options (рис. 8).
Рис. 8. Вікно налаштування параметрів симуляції
В полі Frequency вікна Simulator Options можна вказати робочу частоту МК. Для нашого випадку ця частота рівна 4 МГц і відповідає резонансній частоті кварцового резонатора підключеного до виводів XTAL1-XTAL2 МК.
У вікні Processor виводиться детальна інформація про стан ядра МК (рис. 9, а).
У цьому вікні відображається: вибрана тактова частота МК (поле Frequency), значення лічильника кількості тактів (поле Cycle Counter), вміст індексних регістрових пар X (r26-r27), Y(r28-r29), Z (r30-r31), вказівника стеку (поле Stack Pointer), лічильника команд (поле Program Counter), регістру стану (поле SREG) і часу виконання (поле Stop Watch). Причому ці значення можна змінювати в процесі відладки. Наприклад, щоб визначити час або кількість тактів, за яку виконується певний фрагмент програми, потрібно спочатку клацнути правою клавішею мишки по вікну Processor і в спливаючому вікні вибрати пункт Reset Cycle Counter (рис. 9, а), що обнулить значення в полів Cycle Counter, це також автоматично обнуляє значення в полі часу виконання Stop Watch. Після виконання фрагменту програми в рядку Cycle Counter буде знаходитися кількість тактів, а в рядку Stop Watch час виконання даного фрагменту.
У вікні Processor також можна переглядати та змінювати при потребі вміст 32 регістрів загального призначення (рис. 9, а), які знаходяться в рядках Registers (регістри R0-R31).
У вікні I/O View зібрані регістри всіх периферійних блоків МК, а також регістри стану SREG та управління МК MCUCR. Регістри вводу-виводу згруповані по функціональним блокам і також доступні не тільки для перегляду, але і для редагування (рис. 9, б). Наприклад, щоб налаштувати вивід РВ5 як вихід з одиничним станом, потрібно клацнути на розряді 5 напроти регістра DDRB та на розряді 5 напроти регістра РОRTB. Навівши курсор на певний біт регістра також можна отримати контекстну підказку про призначення цього біту (рис. 9, б).
а) б)
Рис. 9. Вікна відображення поточного стану ядра МК (а) та периферійних модулів (б)
Для покрокового виконання програми можна скористатися клавішами Debug/Step Into (F11) або Debug/Step Over (F10). Різниця між ними полягає в тому, що F11 при виклику підпрограми здійснює перехід всередину тіла підпрограми, а при F10 підпрограма лише виконується і ви переходите до наступної команди. Якщо потрібно перескочити якийсь фрагмент програми, наприклад цикл, можна скористатися командою Debug/Run to Cursor (Ctrl+F10). Для цього потрібно розмістити курсор в тому рядку, на який ви хочете перейти і натиснути Ctrl+F10 або вибрати цю команду через меню.
Для автоматичного виконання програми потрібно вибрати команду меню Debug/Run (F5). Для виходу з режиму автоматичного виконання програми та переходу в покроковий режим потрібно вибрати команду меню Debug/Break (Ctrl+F5). Для скидання МК в процесі виконання програми (формування сигналу EMBED Equation.3 ) потрібно вибрати команду меню Debug/Reset (Shift+F5).
AVR Studio дає змогу встановлювати точки зупину. Зупин може відбуватися при досягненні певної адреси (програмний зупин) або настанні певної події. Точка зупину за адресою встановлюється напроти певної команди, при досягненні якої автоматичне виконання програми зупиниться і програма перейде в режим покрокової відладки. Щоб встановити точку зупину на певній команді потрібно розташувати в рядку з командою курсор і вибрати пункт меню Debug/Toggle Breakpoint (рис. 10, а). В рядку напроти вибраної команди появиться червоний кружок. Тепер якщо при відладці включити автоматичний режим (командою Run) відладчик при досягненні точки зупину зупиниться і буде очікувати наступних дій.
Також програмний зупин можна встановити вибравши пункт меню Debug/New Breakpoint/Program Breakpoint (рис. 10, а). У вікні Add Program Breakpoint можна задати назву файлу, адресу чи назву функції при досягненні яких відбудеться зупин (рис. 10, б).
а) б)
Рис. 10. Встановлення точки зупину (а) та вікно параметрів програмної точки зупину (б)
Для встановлення зупину при досягненні регістром МК певного значення потрібно вибрати пункт меню Debug/New Breakpoint/Data Breakpoint (рис. 10, а). У вікні Add Data Breakpoint можна задати подію, при якій відбудеться зупин (поле Break when:), а також регістр який буде причиною зупину (поле Location:, вікно Symbol Browser) (рис. 11).
а) б)
Рис. 11. Вибір умови (а) та джерела зупину (б)
При відладці можна переглядати та змінювати вміст регістрів загального призначення, оперативної пам’яті, регістрів периферійних пристроїв, пам’яті програм та енергонезалежної пам’яті даних використовуючи команду меню View/Memory, View/Memory 2 або View/Memory 3. При цьому з’являється вікно Memory (рис. 12), де зі списку можна вибрати потрібну для перегляду ділянку пам’яті. В стовпцях виділених синім кольором відображається початкова адреса, далі ідуть дані, що знаходяться за цими адресами в шістнадцятковому та символьному представлені.
Рис. 12. Вікно перегляду вмісту областей пам’яті МК
Також можна спостерігати за значеннями змінних вибравши команду меню View/Watch. При цьому появиться вікно Watch. У ньому потрібно клацнути правою клавішею мишки і у меню, що з’явиться, вибрати пункт Add Item (рис. 13).
Рис. 13. Додавання змінних для спостереження в процесі відладки
Курсор автоматично переміститься в клітинку стовпця Name вікна Watch в якому потрібно набрати ім’я змінної, за якою ви хочете спостерігати. Напр.
Рис. 14. Вид вікна Watch в процесі відладки
Тепер поточне значення змінної Delay1 буде відображатися в стовпці Value вікна Watch (рис. 14). Дані можна відображати як в шістнадцятковій так і десятковій системах числення встановлюючи або скидаючи прапорець Display all Values as Hex (рис. 13).
Вийти з режиму відладки можна командою меню Debug/Stop Debugging (Ctrl+Alt+F5).
Якщо в процесі відладки виявлено неточності в роботі програми, потрібно зупинити відладку, внести потрібні зміни, повторити асемблювання програми і знову запустити відладку.
Відладка дає змогу переконатися в синтаксичній правильності створеної програми для МК, конфігурації периферійних блоків та взаємодії їх з підпрограмами і головною програмою. Проте відладка стосується лише роботи самого МК і не дозволяє повністю проконтролювати роботу МК при взаємодії з зовнішніми пристроями. Частково вирішити цю задачу дає змогу програма-симулятор Proteus. Розглянемо як здійснюється відладка та симуляція в програмі Proteus v7.1.
1.2. Відладка та симуляція роботи схеми в програмі Proteus
Спочатку потрібно скопіювати ваш *.hex файл програми з каталогу проекту в AVR Studio до каталогу проекту в програмі Proteus.
Далі запустіть програму Proteus при цьому появиться вікно представлене на рис. 15. Відкрийте файл LR_1.dsn через пункт меню File/Open Design.
Рис. 15. Основне вікно програми Proteus
Завантажиться схема для моделювання роботи пристрою (рис. 16). На схемі зображені наступні елементи: U1 – МК AT90S2313; SW11 SW12, SW13 – охоронні давачі з нормально розімкненими контактами підключені до шлейфу SHL0 (вивід РВ0 МК); SW21 SW22, SW23 – охоронні давачі з нормально замкненими контактами підключені до шлейфу SHL1 (вивід РВ1 МК); D1 – світлодіод; SPEAKER – сирена підключена до МК через підсилювач на транзисторі Q1; ON/OFF – перемикач постановки/зняття з охорони.
Рис. 16. Схема для симуляції охоронної системи в Proteus
В правій частині знаходиться вікно DEVICES в якому відображені елементи, використані в схемі. Щоб додати елемент до схеми потрібно натиснути кнопку Р (вказівник 1 на рис. 15), при цьому появиться вікно вибору елементів Pick Devices, які згруповані за функціональним призначенням (рис. 16):
Рис. 16. Бібліотека компонентів Proteus
У підвікні Category вибирається тип елементу (напр. мікросхеми мікропроцесорів – Microprocessors ICs), підвікно Sub-category дає змогу уточнити категорію елементу (напр. сімейство МК AVR – AVR Family), а підвікно Manufacturer – вибрати фірму-виробника потрібної мікросхем. Результат пошуку виводиться у підвікні Results. Якщо в цьому вікні вибрати конкретну мікросхему (напр. МК AT90S2313) то появиться спливаюче віконце з короткою інформацією про мікросхему, у підвікні Preview – її умовне графічне зображення, а у підвікні PCB Preview – тип і зовнішній вигляд корпусу мікросхеми.
Слід відзначити, що програма Proteus володіє великою бібліотекою самих різних сучасних електронних компонентів, зокрема: пасивних і активних аналогових елементів, цифрових мікросхем, мікросхем пам’яті, АЦП та ЦАП, мікропроцесорів та мікроконтролерів, програмованих логічних матриць, реле, ключів, дисплеїв, роз’ємів, кнопок і т. д.
З’єднувати провідники на схемі можна або з допомогою провідників (ліній) або з допомогою спеціальних з’єднувачів. Якщо натиснути на піктограму Terminals Mode на панелі інструментів (вказівник 2 на рис. 15) то у вікні Terminals (рис. 17, а) можна вибрати тип з’єднувача: живлення, земля або загальний. Якщо двічі клацнути по з’єднувачу, то у вікні Edit Terminal Label (рис. 17, б) вказується його назва: наприклад SHL0 і далі всі виводи під’єднанні до терміналу з аналогічною назвою вважаються електрично з’єднаними.
а) б)
Рис. 17. Набір з’єднувачів (а) та вікно для вказання назви провідника (б)
Після того, як на схемі розставлені, налаштовані та підключені всі потрібні елементи потрібно задати тактову частоту МК і програму, яку він повинен виконувати. Тактову частоту можна задати або підключивши кварцовий резонатор на відповідну частоту з бібліотеки Proteus до виводів XTAL1-XTAL2 МК, або через налаштування МК. Для цього потрібно натиснути правою кнопкою мишки по МК і у спливаючому меню вибрати пункт Edit Properties (рис. 18, а) після чого появиться вікно Edit Component (рис. 18, б). В рядку Clock Frequency і вказується потрібна тактова частота. В цьому ж вікні в полі Program File вказується файл з програмою для МК в форматі *.hex, який отримується при компіляції програми на асемблері в AVR Studio.
а) б)
Рис. 18. Контекстне меню (а) та вікно налаштувань МК (б)
В Proteus можна здійснювати симуляцію роботи схеми як в покроковому режимі (команда меню Debug/Start/Restart Debugging) так і автоматичному (команда меню Debug/Execute або кнопка під вказівником 3).
При відладці в покроковому режиму для перегляду поточної команди, а також вмісту внутрішніх регістрів і пам’яті, потрібно в меню Debug/AVR/ вибрати відповідні пункти (рис. 19).
Рис. 19. Перегляд стану МК при відладці
При цьому якщо вибрати пункт 1, то у вікні AVR CPU Registers – U1 буде відображатися поточна команда (поле INSTRUCTION), вміст лічильника команд (поле РС), кількість тактів, стан прапорців регістру стану SREG та вміст 32 РЗП.
Для покрокового виконання команд можна скористатися пунктами меню Debug/Step Over (виконання команди без входження в тіло підпрограми), Debug/Step Into (виконання команд з входженням в тіло підпрограми) та Debug/Step Out (вихід з підпрограми) або клавішами F10, F11 та Ctrl+F11 відповідно.
Щоб почати відладку з певного моменту часу можна вибрати пункт меню Debug/Execute for Specified Time і у вікні що з’явиться задати потрібний час (рис. 20). При досягненні заданого часу автоматична симуляція зупиниться і перейде в покроковий режим.
Рис. 20. Вікно задання часу симуляції
Щоб зупинити автоматичну симуляцію та перейти в покроковий режим можна натиснути кнопки Step або Pause на панелі інструментів (вказівники 4 та 5) або використати команду меню Debug/Pause Animation. Завершити симуляцію можна через пункт меню Debug/Stop Animation (або через кнопку Stop на панелі інструментів – вказівник 6).
Рекомендується спочатку запустити симуляцію в автоматичному режимі, щоб перевірити працездатність схеми, при цьому з допомогою стрілок напроти перемикачів можна задавати їх стан (вкл./викл.) та спостерігати реакцію системи.
Якщо схема не працює або працює з помилками необхідно запустити відладку в покроковому режимі для з’ясування і усунення причини неполадок.
2. Основи побудови охоронних систем на базі МК
При побудові охоронних сигналізацій використовуються охоронні давачі (ОД) як з нормально розімкненими (НРЗ) (з’єднані паралельно в колі шлейфа сигналізації), так і нормально замкненими контактами (НЗМ) (з’єднані послідовно в колі шлейфа сигналізації), які розташовуються на об’єкті і підключаються до МК з допомогою охоронних шлейфів. В якості ОД можуть виступати, наприклад, сенсори руху, розбиття скла, полум’я і диму, інфрачервоні бар’єри, тощо.
Типовий варіант підключення охоронних шлейфів SHL0 та SHL1 показаний на рис. 21.
Для ОД з НРЗ контактами (рис. 21.а) при відсутності спрацювання на виводі Рх МК наявний високий рівень напруги, обумовлений підтягуючим резистором R1. При спрацюванні охоронного давача, його контакти замикають вивід МК на землю, і на виводі Рх буде присутній низький рівень напруги. Для давачів з НЗМ контактами (рис. 21.б) при відсутності спрацювання на виводі Рх МК наявний відповідно низький рівень напруги. При спрацюванні ОД, його контакти від’єднують вивід МК від землі, і на виводі Рх буде присутній високий рівень напруги.
а) б)
Рис. 21. Підключення охоронних давачів з НРЗ (а) та НЗМ (б) контактами до МК
Розглянемо алгоритм функціонування простої охоронної системи (рис. 16).
В початковому стані (режим очікування) МК опитує стан замаскованого (секретного) перемикача Постановки/Зняття з охорони. При натисканні перемикача, МК вичікує певний час (T_Alarm), потрібний для того щоб покинути об’єкт, включає світлодіод і переходить в режим охорони. В режимі охорони МК з певним періодом (T_Scan) опитує стан виводів, до яких підключені охоронні шлейфи. При виявленні спрацювання охоронного давача МК вичікує певний час, потрібний для того щоб вимкнути охорону і якщо протягом цього часу не було натиснуто секретного перемикача, включає мигання світлодіода та формує послідовність прямокутних імпульсів для звукової сигналізації з періодом T_Blick. Якщо протягом вказаного часу (T_Alarm) секретний перемикач було натиснуто, МК переходить в режим очікування.
Для реалізації вказаних функцій потрібно налаштувати виводи портів МК. МК AT90S2313 має 8-розрядний порт В і 7-розрядний порт D. Звертання до портів відбувається через регістри вводу-виводу, причому під кожний порт в адресному просторі вводу/виводу зарезервовано 3 адреси. За цими адресами розташовуються регістри даних портів PORTB, PORTD, регістри напрямку даних DDRB, DDRD і регістри виводів портів PINB, PIND. Регістри PINx насправді регістрами не є, по цим адресам здійснюється доступ до фізичних значень сигналів на виводах порта. Відповідно вони доступні лише для читання, тоді як PORTx і DDRx доступні і для читання, і для запису. При скиді МК регістри DDRx і PORTx очищуються. Можна задавати конфігурацію кожного виводу незалежно від решти, так що в одному порті будуть знаходитись одночасно як входи так і виходи.
Порядковий номер виводу порта відповідає порядковому номеру розряду регістрів цього порта.
Порти мають дві можливості по конфігуруванню:
- задання напрямку передачі даних (вхід або вихід);
- підключення/відключення внутрішнього підтягуючого резистора.
Напрямок передачі даних визначається вмістом регістра передачі даних DDRx (Data Direction Register). Якщо розряд DDxn цього регістра встановлений в 1, відповідний n-й вивід порта є виходом. Якщо розряд DDxn цього регістру скинутий в 0, відповідний вивід порта є входом.
Управління підтягуючим резистором здійснюється з допомогою регістра даних порта PORTx. Якщо розряд Pxn регістра PORTx встановлений в 1 і відповідний вивід порта є входом, між цим виводом і джерелом живлення підключається підтягуючий резистор. Щоб відключити підтягуючий резистор, необхідно або скинути відповідний розряд регістра PORTx, або зробити вивід порта виходом.
n = 0…7 – номер виводу (розряд порта).
Управляти світлодіодом можна просто підключивши його до вихідної лінії порта послідовно з обмежуючим струм резистором. Другий вивід цього кола слід підключити до додатної лінії живлення (рис. 16). Світлодіод світиться при протіканні через нього струму певного значення, порядку одиниць-десятків мА. Відповідно для того, щоб світлодіод світився, потрібно сформувати на виводі МК напругу низького рівня, тобто записати у відповідний розряд порта (регістр PORTx) значення 0. Щоб погасити – записати 1.
Типова схема підключення кнопок або перемикачів наведена на рис. 21. Вивід “підтягнутий” до високого логічного рівня обмежувальним резистором, величина опору якого може становити від 4.7…100 кОм, завдяки чому забезпечується мале споживання струму (рис. 21, а).
Рис. 21. Підключення кнопок/перемикачів до МК з зовнішніми (а) та внутрішніми (б) підтягуючими резисторами
Коли контакти розімкнуті на вході Рх буде високий логічний рівень, при натисканні кнопки на вході Рх з’являється сигнал логічного нуля.
МК AVR мають внутрішні підтягуючі резистори, тоді схема включення кнопок або перемикачів не потребує додаткових елементів (рис. 21, б).
Необхідні часові затримки в програмі доцільно формувати програмним чином, з допомогою підпрограми.
Блок схема функціонування охоронної системи наведена на рис. 22.
EMBED Visio.Drawing.11
Рис. 22. Блок-схема роботи охоронної системи
3. ЗАВДАННЯ
3.1 Домашня підготовка до роботи
Вивчити теоретичний матеріал.
Вивчити основні властивості МК необхідні для виконання лабораторної роботи.
Підготовити програму функціонування охоронної системи згідно індивідуального завдання в табл. 1.
3.2 Виконати в лабораторії
Створити проект в AVR Studio, ввести свою програму, провести її асемблювання.
В режимі покрокової відладки переконатися в правильності роботи програми, перевірити дотримання заданих в завданні часових параметрів.
Відкрити файл LR_1.dsn в програмі Proteus, внести зміни у схему відповідно до свого індивідуального завдання, підключити до МК отриманий в AVR Studio hex-файл.
Запустити режим симуляції схеми та перевірити правильність функціонування охоронної системи у всіх режимах роботи. У випадку виявлення відхилень в роботі внести потрібні виправлення.
4. ЗМІСТ ЗВІТУ
Мета роботи.
Повний текст завдання.
Лістинг програми одержаної в AVR Studio та необхідні розрахунки.
Схема симуляції в Proteus.
Висновок.
5. КОНТРОЛЬНІ ЗАПИТАННЯ
Яке призначення програм AVR Studio та Proteus ?
Схема підключення охоронних давачів з НРЗ і НЗМ контактами до МК ?
Поясніть як відбувається конфігурування портів вводу-виводу AVR-МК ?
Як здійснюється відладка в AVR Studio ?
Що таке точка зупину ? Які ви знаєте типи точок зупину ?
Як здійснюється контроль стану перемикача в програмі ?
Які є прапорці регістра стану та їх призначення ?
6. СПИСОК ЛІТЕРАТУРИ
Евстифеев А. В. Микроконтроллеры AVR семейства Classic фирмы «ATMEL». – М. Издательский дом “Додэка-ХХI”, 2002. – 288 с.
Практическое программирование микроконтроллеров Atmel AVR на языке ассемблера. – СПб.: БХВ-Петербург, 2008. – 384 с.
Баранов В. Н. Применение микроконтроллеров AVR: схемы, алгоритмы, программы. – М.: Издательский дом “Додэка-ХХI”, 2004. – 288 с.
Голубцов М. С., Кириченкова А. В. Микроконтроллеры AVR: от простого к сложному. – М.: СОЛОН-Пресс, 2006. – 304 с.
Трамперт В. Измерение, управление и регулирование с помощью микроконтроллеров.: Пер. с нем. – К.: МК-Пресс, 2006. – 208 с.
Белов А. В. Конструирование устройств на микроконтроллерах. – СПб.: Наука и Техника, 2005. – 256 с.
Написати на відладити програму охоронної сигналізації з такими параметрами
Табл. 1
1) Тактова частота МК в мегагерцах рівна останній цифрі номера залікової книжки (для 0 – 10 МГц).
2) Перемикач вважати ідеальним.
НАВЧАЛЬНЕ ВИДАННЯ
Знайомство з інтегрованим середовищем розробки AVR Studio 4 та
програмою симуляції Proteus 7.
Написання та відладка простих програм для AVR мікроконтролерів
МЕТОДИЧНІ ВКАЗІВКИ
до лабораторної роботи № 1
з курсу “Мікропроцесорні пристрої”
для студентів базового напряму 6.1601
“Інформаційна безпека”
Укладачі: Cовин Ярослав Романович
Стахів Марта Юріївна
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
Кафедра “Захист інформації”
Вивчення внутрішніх модулів та режимів роботи
AVR-мікроконтролерів
МЕТОДИЧНІ ВКАЗІВКИ
до лабораторної роботи № 2
з курсу “Мікропроцесорні пристрої”
для студентів базового напряму 6.1601
“Інформаційна безпека”
Затверджено
на засiданнi кафедри
"Захист інформації"
протокол № xx вiд xx.xx.2009 p.
Львів 2009
Вивчення внутрішніх модулів та режимів роботи AVR-мікроконтролерів: Методичні вказівки до лабораторної роботи № 2 з курсу ”Мікропроцесорні пристрої” для студентів базового напрямку ”Інформаційна безпека” / Укл. Я. Р. Совин, М. Ю. Стахів - Львiв: Національний університет "Львівська політехніка", 2009. - 14 с.
Укладачі: Я. Р. Совин, канд. техн. наук, доцент
М. Ю. Стахів, асистент
Вiдповiдальний за випуск: Дудикевич В. Б., д.т.н., професор
Рецензенти:
Мета роботи – ознайомитись з роботою внутрішніх модулів (таймерів, компаратора, EEPROM), системою переривань та внутрішніми режимами роботи AVR-мікроконтролерів. Розширити навики створення та відладки програмно-апаратних засобів на основі мікроконтролерів сімейства AVR в програмах AVR Studio та Proteus 7.
1. ТЕОРЕТИЧНІ ВІДОМОСТІ
1.1. Обробка сигналів охоронних давачів аналоговим компаратором
В охоронних системах, вимірювальній та спеціальній апаратурі для захисту інформації від витоку по технічних каналах використовуються давачі як з цифровими так і аналоговими виходами. Давачі з аналоговими виходами (п’єзоелектричні давачі руху, піроелектричні давачі диму і вогню, давачі розбиття скла, різні температурні давачі) формують на своєму виході неперервний сигнал, який в подальшому, як правило, оцифровується аналого-цифровим перетворювачем (АЦП) та фільтрується мікроконтролером (МК) для визначення умови спрацювання.
Мікроконтролер AT90S2313 вбудованого АЦП немає, але в ньому присутній модуль аналогового компаратора, який може бути ефективно використаний для визначення умови спрацювання охоронного давача (мікроконтролери AVR сімейства Mega та деякі МК сімейства Classic мають вбудований 10-розрядний АЦП).
Аналоговий компаратор МК дозволяє порівнювати значення напруг, присутніх на двох виводах: неінвертуючому - AIN0/PB0 та інтвертуючому - AIN1/PB1 МК. Результатом порівняння є логічне значення, яке може бути прочитане з програми. За результатами порівняння може бути згенероване переривання.
Щоб вказані лінії могли використовуватись аналоговим компаратором, вони повинні бути сконфігуровані як входи. Крім того необхідно відключити внутрішні підтягуючі резистори, записавши логічний 0 у відповідні розряди регістра PORTB. Структурна схема аналогового компаратора наведена на рис. 1.
EMBED Visio.Drawing.6
Рис. 1. Модуль аналогового компаратора МК AT90S2313
Управління компаратором і контроль його стану здійснюються з допомогою регістра вводу-виводу ACSR (Analog Comparator Status Register). Формат цього регістру:
EMBED Visio.Drawing.6
ACD – включення компаратора (0 – включений, 1 – виключений).
ACO – результат порівняння (вихід компаратора).
ACI – прапорець переривання від компаратора;
ACIE – дозвіл переривання від компаратора;
ACIC – підключення компаратора до схеми захвату таймера/лічильника Т1 (1 – підключений, 0 – відключений);
ACIS1:ACIS0 – умова виникнення переривання від компаратора.
Якщо напруга на неінвертуючому виводі AIN0 більша за напругу на виводі AIN1, то результат порівняння буде рівний 1, інакше 0. Цей результат (стан виходу компаратора) зберігається в розряді ACO регістра ACSR.
Розряд ACD відповідає за включення і виключення компаратора. Компаратор автоматично включається при подачі напруги живлення на МК. Щоб його виключити, розряд ACD слід встановити в 1.
У відповідності з результатом порівняння схема компаратора може генерувати запит на переривання. Якщо стан виходу компаратора (розряд ACО) змінився заданим чином, встановлюється прапорець переривання АСІ регістра ACSR і генерується запит на переривання. Цей прапорець скидається апаратно при запуску підпрограми обробки переривання або програмно – записом в нього логічної 1. Для дозволу переривання необхідно встановити в 1 розряд АСІЕ регістра ACSR.
Умова генерації запиту на переривання від компаратора визначається станом розрядів ACIS1:ACIS0.
Нехай наприклад, аналоговий давач формує на своєму виході сигнал в межах від 0 до 5 В. При досягненні напругою значення 3.2 В вважається, що відбулося спрацювання давача і потрібно включити тривогу. Відстежувати досягнення значення 3.2 В можна з допомогою наступної схеми (рис. 2).
EMBED Visio.Drawing.11
Рис. 2. Задання порогу спрацювання аналогового компаратора
Напруга на інвертуючому вході компаратора PB1/AIN1 рівна EMBED Equation.3 . Якщо прийняти, що EMBED Equation.3 кОм, EMBED Equation.3 кОм, то EMBED Equation.3 В. Відповідно, якщо напруга на неінвертуючому вході PB0/AIN0 перевищить 3.2 В, стан компаратора зміниться з 0 на 1 і може бути згенероване відповідне переривання. В підпрограмі обробки цього переривання потрібно передбачити включення сигналу тривоги.
1.2. Обробка сигналів цифрових охоронних давачів
Стан давачів з цифровим виходом може бути безпосередньо зчитаний з ліній вводу-виводу МК. Для цього потрібно періодично опитувати ці лінії, щоб визначити присутність на них логічного 0 або 1 (див. Лаб. роб. №1). Проте такий підхід має певні недоліки:
1) ядро МК постійно зайнято опитуванням ліній вводу/виводу і не може виконувати інші операції;
2) збільшується енергоспоживання, оскільки ядро МК постійно включене.
Іншим способом контролю стану охоронних давачів з цифровими виходами є використання зовнішніх переривань, які можуть генеруватися в залежності від сигналів на виводах PD2/INT0, PD3/INT1.
Умова генерування переривання визначається розрядами ISC01, ISC00 та ISC10, ISC11 регістра управління MCUCR.
EMBED Visio.Drawing.6
Регістр управління МК MCUCR
ISC01, ISC00 – визначають умову генерації зовнішнього переривання по виводу PD2/INT0:
ISC11, ISC10 – визначають умову генерації зовнішнього переривання по виводу PD3/INT1:
Для управління зовнішніми перериваннями призначений регістр маски глобальних переривань GIMSK (Global Interrupt MaSK)
EMBED Visio.Drawing.6
INT1 – прапорець дозволу зовнішнього переривання INT1. Якщо в цьому розряді записана логічна 1 і прапорець І регістра стану SREG також встановлений в 1, то дозволяються зовнішні переривання з виводу INT1. Умова генерування переривання визначається розрядами ISC11, ISC10 регістра управління MCUCR.
INT0 – прапорець дозволу зовнішнього переривання INT0. Якщо в цьому розряді записана логічна 1 і прапорець І регістра стану SREG також встановлений в 1, то дозволяються зовнішні переривання з виводу INT0.
Регістр прапорців зовнішніх переривань GIFR (Global Interrupt Flags Register) призначений для індикації настання зовнішніх переривань.
EMBED Visio.Drawing.6
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-МК
Переривання – це виклики спеціальних підпрограм, при настанні певних подій. В результаті переривання виконання програми зупиняється і відбувається перехід до відповідної підпрограми обробки переривання. Переривання припиняють нормальний хід програми для виконання пріоритетної задачі, що визначається внутрішніми або зовнішніми подіями МК. Відповідно переривання бувають внутрішніми і зовнішніми. Джерелами внутрішніх переривань є вбудовані модулі МК (напр. сторожовий таймер). Зовнішні переривання викликаються скидом (сигналом на виводі EMBED Equation.3 ) або сигналами на виводах INT0, INT1. В AVR-МК всім перериванням поставлений у відповідність власний вектор переривання – адреса в початковій області пам’яті програм, за якою розташовується команда переходу до підпрограми обробки переривання.
МК AT90S2313 має багаторівневу систему пріоритетних переривань, а всього переривань – 11. Молодші адреси пам’яті програм визначені як вектори переривань. Менші адреси відповідають більш високому рівню пріоритету. Самий високий рівень у скиду, наступний у INT0 – зовнішнього запиту переривання і т.д. При виникненні переривання після збереження в стеці біжучого значення програмного лічильника РС відбувається виконання команди, розташованої за адресою відповідного вектора. Тому за цими адресами розташовуються команди відносного переходу до підпрограм обробки переривань. Останньою командою підпрограми обробки переривання повинна бути команда RETI, яка забезпечує повернення в основну програму і відновлення збереженого вмісту РС.
1.4. Обробка переривань
Для дозволу переривань прапорець І регістру SREG повинен бути встановлений в 1, а дозвіл або заборона (маскування) окремих переривань проводиться встановленням або скидом відповідних розрядів регістрів масок переривань.
Обробка переривань здійснюється наступним чином:
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.5.1. Режим Idle
В цьому режимі припиняє роботу ЦП МК, а всі периферійні пристрої (таймери, компаратор, АЦП і т.д.), а також підсистема переривань продовжують функціонувати. Вихід з режиму Idle можливий як по зовнішньому так і по внутрішньому перериванню. Основною перевагою режиму Idle є швидка реакція на події, які пробуджують МК.
1.5.2. Режим Power Down
В режимі Power Down робота всіх систем МК, включно з тактовим генератором припиняється. Єдиними вузлами, які продовжують працювати є сторожовий таймер і підсистема обробки зовнішніх переривань. Вихід з режиму Power Down можливий лише при зовнішньому (апаратному) скиді, скиді від сторожового таймеру (по тайм-ауту), виникненні зовнішнього переривання по рівню. Для виходу МК з режиму Power Down по зовнішньому перериванню тривалість активного сигналу (імпульс низького рівня) повинна перевищувати величину затримки скиду tOUT. Між настанням події, яка приводить до виходу МК з режиму 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 до якої буде звертання.
EMBED Visio.Drawing.6
Регістр даних ЕEPROM – EEDR (EEPROM Data Register) – містить дані, які потрібно записати в ЕEPROM або зчитати.
EMBED Visio.Drawing.6
Регістр управління ЕEPROM – EEСR (EEPROM Control Register) – керує доступом до ЕEPROM.
EMBED Visio.Drawing.6
Розглянемо призначення прапорців цього регістру.
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-пам’яті складається з наступних етапів:
1. Завантажити потрібну адресу в регістр EEАR.
2. Встановити в 1 прапорець EERE регістра EEСR.
3. Прочитати дані з регістру EEDR.
2. Хід виконання роботи
Розглянемо наступну задачу. Нехай потрібно розробити систему яка складається з аналогового давача з рівнем спрацювання UX В та одного цифрового сенсора з нормально розімкненими контактами, підключеного через шлейф до виводу INTx. При спрацюванні будь-якого давача повинен бути включений світлодіод, яким керує вивід Рx. Кількість спрацювань аналогового давача NA зберігається в пам’яті EEPROM МК в комірці з адресою Addr_1, цифрового ND - з адресою Addr_2. Реакція на події має бути організована через переривання. В проміжках між спрацюваннями давачів МК повинен знаходитися в режимі пониженого енергоспоживання Idle.
Блок-схема роботи системи представлена на рис. 3.
EMBED Visio.Drawing.11
Рис. 3. Основні функції охоронної системи
2.1. Відладка та симуляція роботи схеми
Створення та відладка програми в середовищі AVR Studio 4 здійснюється аналогічно як в лабораторній роботі № 1.
Після того як написана програма скомпільована та відлагоджена запустіть Proteus та відкрийте файл LR_2.dsn (рис. 4).
Рис. 4. Схема для симуляції охоронної системи
На схемі розташовані: подільник напруги R1-R2, який задає поріг спрацювання аналогового давача. Потенціометр ANALOG SENSOR дає змогу, з допомогою кнопок , змінювати напругу на неінвертуючому вході компаратора, імітуючи поведінку аналогового давача. З допомогою індикаторів і можна спостерігати напруги на інвертуючому та неінвертуючому входах компаратора відповідно. Кнопка DIGITAL SENSOR імітує давач з нормально розімкненими контактами, якими також можна управляти.
Внесіть зміни у схему відповідно до свого варіанту. Крім того, бажано розташувати всі файли проекту AVR Studio 4 та Proteus в одній папці. В цю папку також скопіюйте файл 2313def.inc, який знаходиться у папці …\\AVR Studio\AvrAssembler\Appnotes\.
Підключіть .hex файл до мікроконтролера на схемі, як описано в лабораторній роботі 1.
Тепер можна приступити до відладки системи як описано в попередній лабораторній роботі.
Крім відладки на рівні команд з використанням вікна Debug\AVR CPU Register можна також відладжувати програму на рівні асемблерного файлу. Для цього перед початком відладки виберіть пункт меню Source/Add/Remove Source Code Files. Появиться вікно представлене на рис.
Натисніть кнопку New і у вікні New Source File (рис. 5) вкажіть Ваш асемблерний файл (*.asm). Після чого натисніть кнопку ОК.
Далі виберіть пункт меню Source/Build All. Якщо файл не містить помилок появиться вікно BUILD LOG з рис. 6.
Рис. 5. Підключення асемблерного файлу до проекту
Рис. 6. Повідомлення про успішну компіляцію асемблерного файла
Тепер виберіть пункт меню Debug/Start/Restart Debugging, після чого виберіть пункт меню Debug/AVR Source Code. Появиться вікно (рис. 7) з текстом програми в якому можна здійснювати відладку.
Рис. 7. Вид вікна відладки з підключеним асемблер ним файлом
Тепер ви можете одночасно спостерігати за ходом виконання програми, міняти стан схеми та перевіряти реакцію програми.
Червоний курсор вказує на поточну команду, яка виконується. Покроково рухатися по програмі можна з допомогою клавіш F10/F11 або клавіш панелі інструментів, як це описано в лабораторній роботі № 1.
Також для відладки можна використовувати клавіші панелі інструментів вікна AVR Source Code (рис. 8).
Рис. 8. Кнопки управління відладкою
Клавіша 1 (Run Simulation) – запускає виконання програми в неперервному режимі.
Клавіша 2 (Step Over Source Line) – здійснює виконання поточної команди. Якщо це команда виклику підпрограми, то перехід в підпрограму не здійснюється – вона просто виконується і відбувається перехід на наступну команду.
Клавіша 3 (Step Into Source Line) – здійснює виконання поточної команди. Якщо це команда виклику підпрограми, то здійснюється перехід в підпрограму.
Клавіша 4 (Step Out from Source Line) – здійснює вихід з поточної підпрограми.
Клавіша 5 (Run to Source Line) – здійснює перехід до вказаного рядку.
Клавіша 6 (Toggle Breakpoint) – встановлює точку зупину на вказаному рядку.
3. ЗАВДАННЯ
3.1. Домашня підготовка до роботи
1. Вивчити теоретичний матеріал.
2. Вивчити основні властивості МК необхідні для виконання лабораторної роботи.
3. Підготовити програму функціонування охоронної системи згідно індивідуального завдання в табл. 1.
3.2. Виконати в лабораторії
1. Створити проект в AVR Studio, ввести свою програму, провести її асемблювання.
2. В режимі покрокової відладки переконатися в правильності роботи програми.
3. Відкрити файл LR_2.dsn в програмі Proteus, внести зміни у схему відповідно до свого індивідуального завдання, підключити до МК отриманий в AVR Studio hex-файл.
4. Запустити режим симуляції схеми та перевірити правильність функціонування охоронної системи у всіх режимах роботи.
4.