Термінова допомога студентам
Дипломи, курсові, реферати, контрольні...

Разработка програмної і апаратної підтримки до методичним вказівкам Програмування микроконтроллеров

РефератДопомога в написанніДізнатися вартістьмоєї роботи

Таблиця А.1. Арифметичні і логічні інструкції. |Мнемони|Опера|Описание |Операція |Прапори |Цвк| |ка |нды — | — |лы — |ADD |Rd, Rr|Суммирование без переноса|Rd = Rd + Rr |Z, C, N, V|1 — | — | — |, H, S — | |ADC |Rd, Rr|Суммирование з перенесення |Rd = Rd + Rr + З |Z, C, N, V|1 — | — | — |, H, S — | |SUB |Rd, Rr|Вычитание без перенесення |Rd = Rd — Rr |Z, C, N, V|1 — | — | — |, H, S — | |SUBI |Rd… Читати ще >

Разработка програмної і апаратної підтримки до методичним вказівкам Програмування микроконтроллеров (реферат, курсова, диплом, контрольна)

Міністерство ОСВІТИ РОСІЙСЬКОЇ ФЕДЕРАЦИИ.

Воронезький Державний Университет.

Фізичний факультет.

| |"До ЗАХИСТІ ДОПУЩЕНА" | |№______________________ |Зав. кафедрою фізики напівпровідників| |кафедральної реєстрації | | | |і мікроелектроніки | | |проф. __________ Петров Б. К. | | |"____"__________2002 р. |.

УДК.681.3 КОРОБОК Георгій Николаевич.

РОЗРОБКА ПРОГРАМНОЇ І АППАРАТНОЙ.

ПІДТРИМКИ До МЕТОДИЧНИМ УКАЗАНИЯМ.

«ПРОГРАМУВАННЯ МИКРОКОНТРОЛЛЕРОВ».

Магістерська дисертація в напрямі «Физика».

Науковий керівник доц. ___________ Клюкин В.И.

ВОРОНЕЖ 2002.

РЕФЕРАТ.

УДК. 681.3 КОРОБОК Георгію Миколайовичу РОЗРОБКА ПРОГРАМНОЇ І АПАРАТНОЇ ПІДТРИМКИ До МЕТОДИЧНИМ ВКАЗІВКАМ «ПРОГРАМУВАННЯ МИКРОКОНТРОЛЛЕРОВ». — Магістерська дисертація по напрямку «Фізика», Воронеж, ВДУ, 2002. — 93 з., илл. 45, табл. 4, прилож. 5, библ. 21 назв.

Нині микроконтроллеры приймають дедалі більше поширення. Проте, інформації з питань навчання програмування микроконтроллеров у поєднанні з зовнішніми виконавчими буває не достаточно.

Діяльність розглянуті архітектура, апаратні і програмні засоби поширених і недорогих микроконтроллеров фірми ATMEL серії AVR типу AT90S1200, AT90S2313, AT90S4414 і AT90S8515. Аналіз методики програмування в інтегрованої середовищі розробці дозволив об'єднати практичні рекомендації з декотрими особливостями навчання програмування микроконтроллеров. З цього запропонований алгоритм обучения.

Запропоновано макет программатора, що дозволяє, як програмувати, і навчати цього процесу. Наведений набір типових завдань які можуть опинитися реалізуватися на допоміжних платах зовнішніх пристроїв, подключаемых до программатору через відповідні порты.

Також наведено рішення чотирьох типових завдань із працювати з пам’яттю, індикацією, пристрій «кодовий замок» і пристрій вимірювача частоти звукового діапазону. У додатках наведено тексти програм, тож довідкові дані на розглянуті AVR микроконтроллеры.

СОДЕРЖАНИЕ ВВЕДЕНИЕ 4.

1. ОСНОВЫ АРХІТЕКТУРИ МИКРОКОНТРОЛЛЕРОВ 6.

1.1. ОСНОВНІ ТИПИ МИКРОКОНТРОЛЛЕРОВ ТА ЇХНІ АРХІТЕКТУРА 6 1.2. Апаратні кошти 10.

1.2.1. Запуск микроконтроллера 10.

1.2.2. Тактирование і командні цикли 10.

1.2.3. Програмний лічильник і АЛУ 11.

1.2.4. Підпрограми і функції 13.

1.2.5. Ввод/вывод даних 17 1.3. Інструментальні і програмні засоби розробки та налагодження 20 1.4. Основні типи інтерфейсів МК. 27.

1.4.1. Підключення перемикачів і придушення «дзвону» контактів. 27.

1.4.2. Світлова індикація. 28.

1.4.3. Введення з матричної клавіатури. 30.

2. ОСОБЛИВОСТІ ПОБУДОВИ І ФУНКЦІОНУВАННЯ МИКРОКОНТРОЛЛЕРОВ ФИРМЫ ATMEL СІМЕЙСТВА AVR 32.

2.1. Архітектура микропроцессорного ядра AVR-микроконтроллеров 32 2.2. Апаратні кошти AVR. 41 2.3. Система команд микроконтроллера AVR 49.

3. ПРОГРАМНЕ І ІНСТРУМЕНТАЛЬНЕ ЗАБЕЗПЕЧЕННЯ ПРОЦЕСУ ПРОГРАМУВАННЯ МИКРОКОНТРОЛЛЕРОВ 56.

3.1. Написання і налагодження програмного коду з допомогою AVR Studio 56.

3.1.1. Огляд AVR Studio 57.

3.1.2. Створення нового проекту 58.

3.1.3. Виконання програмного коду 62 3.2. Аналіз методики реалізації розробки програмного забезпечення 69.

3.2.1. Класифікація варіантів завдань 69.

3.2.2. Розгляд типових прикладів 73 3.3. Опис макета программатора. 77 ВИСНОВОК 80 БІБЛІОГРАФІЧНИЙ СПИСОК ВИКОРИСТАНИХ ИСТОЧНИКОВ 81 ДОДАТОК 1 Інструкції процесорів AVR. 83 ДОДАТОК 2. Таблиця регістрів микроконтроллера AT90S1200 88 ДОДАТОК 3. Програма для вимірника звуковий частоти 89 ДОДАТОК 4. Програма для устрою «кодовий замок» 91 ДОДАТОК 5. Основні характеристики микроконтроллеров AVR 93.

Можна вважати що микроконтроллер (МК) — це комп’ютер, що розмістився лише у мікросхемі. Звідси й його основні привабливі якості: малі габарити; високі продуктивність, надійність і бути адаптованою до виконання найрізноманітніших задач.

Микроконтроллер крім центрального процесора (ЦП) містить пам’ять і численні устрою ввода/вывода: аналого-цифровые перетворювачі, послідовні і рівнобіжні канали передачі, таймери реального часу, широтно-импульсные модулятори (ШИМ), генератори программируемых імпульсів тощо. Його основне призначення — використання у системах автоматичного управління, вмонтованих у найрізноманітніші устрою: адже кредитні картки, фотоапарати, стільникові телефони, музичні центри, телевізори, відеомагнітофони і відеокамери, пральні машини, мікрохвильові печі, системи охоронної сигналізації, системи запалювання бензинових двигунів, електроприводи локомотивів, ядерні реактори і багато, багато іншого. Встраиваемые системи управління стали настільки масовим явищем, що фактично сформувалася нова галузь економіки, названа Embedded Systems (встраиваемые системы).

Досить стала вельми поширеною мають МК фірми ATMEL, функціональні можливості яких охоплюють усі ці завдання [1,2].

Застосування МК можна розділити на два етапу: перший — програмування, коли користувач розробляє програму і прошиває її у кристал, і друге — узгодження спроектованих виконавчих пристроїв з запрограммируемым МК. Значно полегшують налагодження програми першою етапі - стимулятор, який наочно моделює роботу мікропроцесора. На другому етапі для налагодження використовується внутрисхемный емулятор, який є і найдорожчим пристроєм, найчастіше недоступним пересічному пользователю.

У водночас у літературі мало приділено уваги питанням навчання програмування деяких недорогих МК, разом із реальними виконавчими устройствами.

Розробка макета программатора може похвалитися простотою, наочністю і низької собівартістю, ставати необхідної як самого програмування кристалів, так наочного навчання кола користувачів основам програмування МК.

1. ОСНОВЫ АРХІТЕКТУРИ МИКРОКОНТРОЛЛЕРОВ.

1.1. ОСНОВНІ ТИПИ МИКРОКОНТРОЛЛЕРОВ ТА ЇХНІ АРХИТЕКТУРА.

Якщо уявити всі типи сучасних микроконтроллеров (МК), можна вразитися величезною кількістю різноманітних приладів цього, доступних споживачеві. Однак ці приоры можна розділити ми такі основні типы:

. Встраиваемые (embedded) 8-разрядные МК;

. 16- і 32-разрядные МК;

. Цифрові сигнальні процессоры.

Промисловістю випускаються дуже широка номенклатура які вбудовуються МК. Вони всі необхідні ресурси (пам'ять, устрою вводу-виводу тощо.) розташовуються однією кристалі з процессорным ядром [3]. Якщо подати харчування і тактовые імпульси на відповідні входи МК, можна сказати, що він би «оживе» і із ним працюватиме. Зазвичай МК містять дуже багато допоміжних пристроїв, завдяки чому забезпечується включення на реальну систему з допомогою мінімального кількості додаткових компонентів. До складу цих МК входят:

. Схема початкового запуску процесора (Reset);

. Генератор тактових импульсов;

. Центральний процессор;

. Пам’ять програм (E (E)PROM) і програмний интерфейс;

. Кошти ввода/вывода данных;

. Таймери, здатні фіксувати число командних циклов.

Загальна структура МК показано на рис. 1.1. Ця структура дає уявлення у тому, як МК пов’язують із зовнішнім миром.

Більше складні встраиваемые МК можуть додатково реалізовувати такі возможности:

. Вмонтований монитор/отладчик программ;

. Внутрішні кошти програмування пам’яті програм (ROM);

. Обробка переривань від різних источников;

. Аналоговий ввод/вывод;

. Послідовний ввод/вывод (синхронний і асинхронный);

. Паралельний ввод/вывод (включаючи інтерфейс з компьютером);

. Підключення зовнішньої пам’яті (микропроцессорный режим).

Всі ці можливості значно збільшують гнучкість застосування МК і роблять простішим процес розробки систем на і основе.

Рис. 1.1. Структура микроконтроллера.

Деякі МК (особливо 16- і 32-разрядные) використовують тільки зовнішню пам’ять, що включає у собі як пам’ять програм (ROM), і певний обсяг пам’яті даних (RAM), необхідний для даного застосування. Вони застосовують у системах, де потрібно великий обсяг пам’яті і відносне не дуже багато пристроїв (портів) ввода/вывода. Типовим прикладом застосування такого МК із зовнішнього пам’яттю є котроллер жорсткого диска (HDD) з буферної кэш-памятью, що забезпечує проміжне збереження і розподіл великих обсягів даних (порядку кількох мегабайтів). Зовнішня пам’ять дає можливість такому микроконтроллеру працювати з вищої швидкістю, ніж встраиваемый МК.

Цифрові сигнальні процесори (DSP) — щодо нова категорія процесорів. Призначення DSP у тому, щоб одержувати поточні дані від аналогової системи, обробляти дані і формувати відповідний відгук у реальному масштабі часу. Вони зазвичай входять до складу систем, используясь як пристроїв управління зовнішнім устаткуванням, і призначені для автономного применения.

Система команд.

Залежно від кількості використовуваних кодів операцій системи команд МК можна розділити на дві групи: CISC і RISC. Термін CISC означає складну систему команд і є абревіатурою англійського визначення Complex Instruction Set Computer. Аналогічно термін RISC означає скорочену систему команд і від англійського Reduce Instruction Set Computer. Систему команд МК 8051 можна зарахувати до типу CISC. Проте, не дивлячись на широку поширеність цих понять, слід визнати, які самі назви не відбивають головного різницю між системами команд CISC і RISC. Основна ідея RISC архітектури — це ретельний добір таких комбінацій кодів операцій, які можна було здійснити за такт тактового генератора. Основний виграш від такої підходу — різке спрощення апаратної реалізації ЦП і можливість значно підвищити його производительность.

Вочевидь, що загалом разі однієї команді CISC відповідає кілька команд RISC. Проте зазвичай виграш від підвищення швидкодії в рамках RISC перекриває втрати від менш ефективну систему команд, що призводить до більш високу ефективність RISC систем загалом порівнянню з CISC.

Однак на цей час межа між CISC і RISC архітектурою стрімко стирається. Наприклад, МК сімейства AVR фірми Atmel мають систему команд з 120 інструкцій, що він відповідає типу CISC. Проте більшість їх виконується за такт, що є ознакою RISC архітектури. Сьогодні прийнято вважати, що ознакою RISC архітектури є виконання команд за такт тактового генератора. Кількість команд саме собою значення не имеет.

Типы пам’яті МК.

Можна виділити три основні види пам’яті, яка у МК: а) пам’ять програм; б) пам’ять даних; в) регістри МК.

Пам’ять програм є постійну пам’ять, призначену для зберігання програмного коду і констант. Ця пам’ять не змінює вмісту у виконання програми. Пам’ять даних призначена для зберігання змінних під час виконання програми. Регістри МК — цей вид пам’яті включає внутрішні регістри процесора і регістри, які є керувати периферійними устройствами.

Для зберігання програм зазвичай служить одне із видів постійної пам’яті: ROM (масочные ПЗУ), PROM (одноразово программируемые ПЗУ), EPROM (електрично программируемые ПЗУ з ультрафіолетовим стиранням) чи EEPROM (ПЗУ з допомогою електричної записом й стирання, до цього виду теж належать сучасні мікросхеми Flash-памяти). Всі ці види пам’яті є энергонезависимыми — це, що вміст пам’яті зберігається після вимикання харчування МК.

Багаторазово программируемые ПЗУ — EPROM і EEPROM (Electrically Erasable Programmable Memory) поділяються на ПЗУ зі стиранням ультрафіолетовим (СФ) опроміненням (випускаються в корпусах з вікном), і МК з електрично перепрограммируемой пам’яттю, соответственно.

Нині протоколи програмування сучасної EEPROM пам’яті дозволяють виконувати програмування МК у складі системи, де він працює. Такий спосіб програмування отримав назву — ISP (In System Programming). І тепер можна періодично оновлювати програмне забезпечення МК без видалення із плати. Це дає величезний виграш на на початкових етапах розробки систем з урахуванням МК чи процесі їх вивчення, коли маса часу забирають багаторазовий пошук причин непрацездатності системи та виконання наступних циклів стиранняпрограмування пам’яті программ.

Функціонально Flash-память мало відрізняється від EEPROM. Основне різниця полягає лише у спроможності стирання записаній інформації. Ще EEPROM стирання виробляється окремо кожної осередки, тоді як у Flash-памяти стирання здійснюється цілими блоками.

ОЗУ (RAM) — оперативне запам’ятовуючий пристрій, використовується для зберігання даних. Цю пам’ять називають ще пам’яттю даних. Кількість циклів читання і запис у ОЗУ необмежено, але за відключення харчування вся інформація теряется.

1.2. Апаратні средства.

1.2.1. Запуск микроконтроллера.

Багато додатках використовується батарейное харчування МК, а окремих випадках застосовуються навіть конденсатори великий ємності, які забезпечують збереження працездатності при короткочасних отключеньях харчування. Тому проблема енергоспоживання (енергозбереження) дуже актуальна для МК. Оскільки майже всі сучасні МК здійснюються за КМОП технології, всі вони споживають значно менше потужності, що раніше що випускалися біполярні чи n-МОП — микроконтроллеры.

Сброс в початкова состояние.

На рис. 1.3. зображено схема скидання. Цю схему кращого всього залучити до випадках, коли гарантовано підтримку напруги харчування у робочому діапазоні. Кнопко RESET використовують у процесі вироблення пристроїв для скидання МК в початкова стан. (Див. рис. 1.2.).

Рис. 1.2. Схема RESET.

1.2.2. Тактирование і командні циклы.

Існує три способу завдання тактовою частоти МК. Перший спосіб — використання кварцевого резонатора. Другий спосіб синхронізації - використання RC генератора. Третій спосіб синхронізації - це подача тактових імпульсів від зовнішнього генератора. З його за допомогою можна поставити будь-яку частоту синхронизации.

Слід звернути увагу, що командні цикли і такти синхронізації не те й теж. Командний цикл полягає зазвичай з кількох тактів, необхідних процесору до виконання команди. На рис. 1.3, показаний командний цикл, що з чотирьох тактов.

Рис. 1.3. Командний цикл і машинні такты.

У перебігу командного циклу мікропроцесор чи микроконтроллер виконує необхідні операції, використовуючи тактовые сигнали для синхронізації операцій. Деякі команди вимагають до виконання більш одного командного цикла.

1.2.3. Програмний лічильник і АЛУ.

Програмний лічильник (Program Counter) чи лічильник команд (СК) використовується для вказівки наступній команди виконуваної програми. Реалізація цієї функції значно ускладнюється, коли необхідно зберегти вміст СК при виклик підпрограм та їх обробки запитів переривання чи забезпечити галуження програми. СК є лічильник з паралельним вводом/выводом. У процесорах з Принстонской архітектурою вміст СК надходить вп шині даних в схему управління пам’яттю, вказуючи адресу считываемой команди. Часто СК входить до складу схеми управління пам’яттю — це дозволяє уникнути передачі адреси по внутрішньої шині даних. Важливі особливості функціонування СК — паралельна завантаження нового вмісту, яке надходить із шини даних, можливість скидання (повернення до адресою першої команди програми), реалізація инкремента. У 8-разрядных МК розрядність СК зазвичай більше, ніж 8 біт. При завантаження в СК нового адреси, вона діє по шині даних частинами по 8-бит, що потребує виконання додаткових машинних циклів. Щоб скоротити час завантаження СК, деякі МК мають команди розгалуження, у яких завантажується лише 8 молодших розрядів адреси, а старші розряди залишаються без зміни. При виконанні такий команди досить передати по шині даних лише одне байт, тоді як завантаження повного 16-разрядного адреси потрібно пересилання двох байт.

Після читання черговий команди вміст СК збільшується (инкрементируется), щоб забезпечити перехід до адресою наступній команди. Якщо виконується виклик підпрограми чи відбувається переривання, то адресу повернення (поточний стан СК) то, можливо збережено в стеці без виконання додаткових тактів для инкремента вмісту СК. Діяльність з МК треба пильнувати, щоб значення СК не вийшло межі пам’яті програм. Оскільки це можуть призвести до виконання невизначених команд і непередбаченому результату.

Арифметико-логическое пристрій (АЛУ) процесора використовується для виконання всіх математичних операцій на програмі. Це операції включають складання, віднімання, логічне І, логічне АБО, зрушення вмісту регістрів та встановлення вмісту регістру стану відповідно до отриманим результатами. АЛУ немає під час читання чи записи даних чи команд, воно використовують тільки в обробці данных.

АЛУ можна подати як апаратний блок, який обробляє два слова даних (операнды) і зберігає отриманого результату (див. рис. 1.4). Як вводяться операнды в АЛУ і куди надходить результат — залежить від конкретного типу МК. У цьому полягає одна з головних різниці між різними типами процесорів і системами команд. Деякі МК вибирають один операнд з регистра-аккумулятора і зберігають результат й у акумуляторі. Інші МК використовувати різні джерела операндов й визначити місця розміщення результатов.

Рис. 1.4. Структура АЛУ.

АЛУ зазвичай працює тільки з позитивними цілими числами. Проте за виконанні вирахування виходять негативні числа, якщо від'ємник більше зменшуваного. Для уявлення негативних чисел використовується додатковий код — «доповнення до двох». Це необхідно враховувати під час знайомство з роботою АЛУ.

Замість вирахування одного числа з іншого, відбувається додавання негативного числа:

А — У = А + (-У), де негативне число (-У) представляється в додатковому коді. Щоб самому отримати додатковий код негативного двоичного числа, необхідно инвертировать значення кожного біта, та був додати единицу:

— У = (У ^ 0хff) + 1, де ^ - операція «виняткове или».

Складність АЛУ багато чому визначає складність всього МК загалом. Часто створення АЛУ працює група розробників, порівнянна за складом з тієї, яка працює над рештою мікропроцесора чи микроконтроллера. Від, як працює АЛУ, залежить функціонування процесора, що до складу МК, отже, і всього МК в целом.

1.2.4. Підпрограми і функции.

При виклик підпрограми чи функції потрібно зберегти вміст СК у тому, щоб команда повернення могла повернути управління вихідної програмі. Це може виконуватися автоматично через збереження адреси повернення сітці. За повернення до початкової програмі адресу вилучають із стека і завантажується в СК. Виклик функції може бути реалізовано в МК, не мають стека, шляхом застосування індексного регістру для эмуляции стека. Якщо можна безпосередньо завантажити в стік вміст СК, то адресу повернення до початкової програми зберегти в эмулированном стеке.

Іноді доводиться передавати функції деякі параметри. Одне з найефективніших і найчастіше встречаемых способів передачі параметрів в функцію — це помістити в стік перед викликом функції. У подпрограмме можна завантажити індексний регістр значення покажчика стека отже одержати доступ параметрам.

Іншим способом передачі параметрів був частиною їхнього збереження в регістрах процесора чи пам’яті даних як спеціальних змінних. Передача параметрів через регістри скорочує число регістрів, доступних при виконанні функції. Збереження ж параметрів як спеціальних змінних зменшує обсяг пам’яті, доступною від використання програмою. Дане обмеження може бути істотно для МК. Зазвичай значення які повернуться параметрів завантажуються в регістри процесора, т.к. це найбільш швидке й ефективний засіб передачі данных.

Прерывания.

Переривання — це запуск спеціальної підпрограми (званої «оброблювачем переривання» чи «програмою обслуговування переривання»), який викликається сигналом апаратури. Тимчасово виконання цієї підпрограми реалізація поточної програми останавливается (см. рис. 1.5). Термін «запит на переривання» (interrupt request) використовується оскільки іноді програма відмовляється підтвердити переривання і оброблювач переривання немедленно.

Рис. 1.5. Виконання прерываний.

МК може реагувати на переривання, доки завершиться виконання поточної завдання — цей реалізується шляхом заборони (маскування) обслуговування запиту переривання. Після вирішення завдання може бути одне із двох варіантів: скидання маски і дозвіл обслуговування переривання, що сприятиме виклику оброблювача переривання, чи аналіз значення бітов, вказують на надходження запитів переривання і безпосереднє виконання програми обслуговування без виклику оброблювача переривання. Такий метод обробки переривання використовується, коли потрібно забезпечити заданий час виконання програми, оскільки будь-яке перебування може порушити реалізацію необхідного интерфейса.

Оброблювач завжди забезпечує таку послідовність действий:

1. Зберегти вміст регістрів контекста.

2. Скинути контролер переривань й устаткування, яке зумовило запрос.

3. Обробити данные.

4. Відновити вміст регістрів контекста.

5. Повернутися до перерваної программе.

Регістри контексту — це регістри, що визначають поточний стан виконання програми. Зазвичай до відносять СК, регістри гніву й акумулятор. Інші регістри МК, такі як індексні регістри, може бути використані процесі обробки переривання, тому їхній вміст також необхідно зберегти. Решта регістри є специфічними для конкретного типу МК та її применения.

Після скидання у початковий стан контролер переривань готовий сприймати наступний запит, а устаткування, що викликає переривання, готове посилати запит, коли виникають відповідні причини. Якщо надійде новий запит переривання, то регістр маскування переривань процесора відверне обробку переривання, але регістр стану переривань зафіксує цей запит, який очікувати свого обслуговування. Після закінчення обслуговування поточного переривання маска переривання буде сброшена, і знову що поступив запит надійде на обработку.

Вкладені переривання складні деяким типам МК, які мають стека. Ці переривання як і можуть викликати проблеми, пов’язані з переповненням стека.

Іноді МК може швидко відреагувати на запит переривання, прийнявши необхідні дані, які потім використані після прийняття рішення поточної завдання. Це реалізується через збереження які поступили даних в масиві пам’яті і наступного їх опрацювання, коли виконання вихідної програми якщо завершено. Такий спосіб обслуговування є гарним компромісом між негайної повної обробкою переривання, яка вимагатиме багато часу, і ігноруванням переривання, що може спричинити до втрати інформації подію, що викликає прерывание.

Після обробітку переривання вміст регістру стану зазвичай (але з завжди) автоматично зберігається разом із вмістом СК перед обробкою переривання. Це позбавляє необхідність зберігати їх у пам’яті програмними засобами з допомогою команди пересилки, та був відновлювати при повернення до початкової програмі. Але такий автоматичне збереження реалізується ні в всіх типах МК.

Якщо вміст регістру стану зберігається до початку обробки переривання, то команді повернення виробляється його автоматичне відновлення. Якщо вміст інших регістрів змінюється і під час обслуговування переривання, воно також має бути збережено у пам’яті до зміни і відновлено перед поверненням в основну программу.

«Вектор переривання» — це адресу, який завантажується в СК під час переходу до оброблювачу переривання. Є кілька типів векторів. Адреса, який завантажується в СК під час запуску МК (RESET) називається «вектор скидання». Для різних переривань може бути задано різні вектора. Але часом різним прерываниям призначається один вектор. Не повинно викликати проблем під час роботи з МК, оскільки найчастіше він виконує одну-єдину програму. У МК, де апаратна частина відома, на повинен виникнути жодних проблем за спільної використанні векторів прерываний.

Наприкінці можна додати, що системних підпрограми — це свого роду програмні переривання, які з допомогою спеціальних процессорных команд імітують апаратні переривання. Вони містяться у довільному місці пам’яті, чи можуть вимагати для звернення до них межсегментных переходов.

Таймеры.

Таймери в мікропроцесорних системах використовуються як для забезпечення заданої затримки, але й рішення набагато ширшого кола завдань. Зазвичай для перемикання таймера використовують тактовые імпульси процесора. Завантаживши в таймер початкова значення, можна відраховувати певні інтервали часу, фіксуючи закінчення інтервалу по моменту переповнення таймера. Часто перед таймером включають попередній дільник тактовою частоти, щоб матимуть можливість відраховувати більш довгі інтервали часу. Дільник забезпечує приріст вмісту таймера після вступу певної кількості тактових импульсов.

Їх можна використовуватиме точного формування тимчасових інтервалів, підрахунку імпульсів на виходах МК, формування послідовності імпульсів, тактирования прийомопередавача послідовного каналу зв’язку. Таймеры/счетчики здатні виробляти запити переривань, переключаючи ЦП на їх обслуговування з подій і звільняючи його від виробничої необхідності періодичного опитування станів таймерів. Оскільки основне застосування МК знаходять у системах реального часу, таймеры/счетчики є їхньою обов’язковим елементом. У деяких модифікаціях число таймерів сягає 32.

1.2.5. Ввод/вывод данных.

Основний інтерфейс між МК зовнішніми пристроями реалізується через паралельні порти ввода/вывода. Багато МК висновки цих портів служать також і виконання інших функцій, наприклад послідовного чи аналогового ввода/вывода.

Багато МК окремі висновки портів можна запрограмувати на введення або виведення даних. Слід звернути особливу увагу те що, при введення даних зчитується значення сигналу, що надходить зовнішній висновок, а чи не вміст триггера даних. Якщо зовнішнього висновку підключені висновки інших пристроїв, вони можуть встановити свій рівень вихідного сигналу, який буде лічений замість очікуваного значення даних, записаних в тригер. У деяких МК є можливість вибору між читанням даних, встановлених не вдома триггера чи зовнішньому выводе.

Коли на шину необхідно вивести «0» чи «1», то спочатку записують відповідне значення в тригер даних, та був з допомогою триггера управління не вдома встановлюється необхідний рівень потенціалу. Тригер управління дозволяє висновок даних на шину. У середовищі сучасних МК забезпечується індивідуальний доступом до триггерам даних, і управління з допомогу адресної шины.

Зовнішній висновок може статися використаний подачі запиту переривання. Це зазвичай реалізується, коли висновок працює у режимі ввода.

Найпоширеніший вид зв’язок між різними электроннообчислювальними системами — це послідовний обмін. І тут байт даних передається по єдиному дроту біт за битому із забезпеченням синхронізації між приймачем і джерелом даних. Очевидне перевагу послідовної передачі у тому, що вона потребує невеликого кількості ліній связи.

Існує безліч стандартних послідовних протоколів передачі даних. У деяких МК ці протоколи реалізуються внутрішніми схемами, розміщеними на кристалі, що дозволять спростити розробку різних приложений.

Аналоговый компаратор.

Часто в МК вбудовується аналоговий компаратор напруг. Компаратор є просту схему, яка, що зрівнює два напруги. Зазвичай один сигнал називають вхідним, а інший опорным. 7] На виході встановлюється «1», якщо вхідний напруга більше, ніж опорне (див. рис. 1.6). цей спосіб найзручніше залучити до таких пристроях, як термостати, де необхідно контролювати досягнення певного рівня вимірюваною величини, яка задається значенням вхідного напряжения.

Рис. 1.6. Сигнали на вході і виході аналогового компаратора.

Программирование устройств.

Програмування пристроїв, зокрема і микроконтроллеров зазвичай відбувається так. У регістр программатора завантажується значення, що слід розмістити за певним адресою, потім включається схема, яка пересилає вміст цього регістру по заданому адресою, проходить кілька днів очікування, поки завершитися процес програмування обраної осередки пам’яті і кінець, виконується верифікація, тобто. перевіряється правильність записаного значення. Програмування всього устрою триватиме і від кількох секунд до кількох хвилин у залежність від розміру пам’яті і алгоритму программирования.

Часто устаткування програмування виявляється задорогим, особливо радіоаматорів і бізнесу. Однак у деяких випадках для програмування потрібно дуже просте та доступне устаткування. Приміром, деякі моделі PIC і AVR микроконтроллеров програмуються дуже просто. Існує й устрою, які вимагають устаткування програмування, приміром, МК Basic STAMP, чи мають вмонтований апаратно-програмний блок, избавляющий від виробничої необхідності використання зовнішнього устаткування, крім джерела підвищеного напруги для програмування, як МК 68НС05.

Дуже важливого аспекту, що стосується програмування пристроїв, у тому, що може свідчити чи пристрій бути запрограмовано в системі. Це називається внутрисистемное програмування (УСП) — від англійського In-System Programming (ISP). Якщо МК припускає можливість такого програмування, це означатиме, що може бути змонтовано на плату з порожній пам’яттю програм, які потім то, можливо запрограмована без якого або впливу інші компоненти схеми. Це може бути важливим обставиною під час виборів МК. Використання УСП рятує МК від необхідність купувати спеціальний программатор, дає можливість оновлювати програмне забезпечення без зміни розташованих на платі апаратних засобів і дозволяє виробникам створювати запас готових виробів, які можуть легко модифікуватися відповідно до які надходять заказами.

Безопасность пам’яті программ.

Багатьом додатків бажано захистити програмний код, записаний в МК. Щоб якось забезпечити таку можливість багато МК містять спеціальні кошти на запобігання зчитування які у них програм. Часто таку можливість реалізується шляхом установки певного значення конфігураційного біта у процесі програмування. Зазвичай значення цього біта можна змінити у процесі перепрограмування вмісту пам’яті МК, наприклад при СФ стирання вмісту EPROM.

Вбудована захист неспроможна запобігти всі можливості зчитування програмного коду. Таке зчитування можна провести у багатьох лабораторіях, виконують аналіз причин відмов мікросхем, причому за дуже короткий час. Щоб ускладнити і зробити операцію зчитування менш ефективної, компанії зашифровують записані програми шляхом перемішування команд і включають спеціальні апаратні блоки, які перетворять перемешенные дані в потік команд процесора. І все-таки, установка біта захисту неспроможна гарантувати абсолютного захисту програмного коду завантаженого в МК.

1.3. Інструментальні і програмні засоби розробки та отладки.

Найефективніший засіб налагодження програм для МК — застосування спеціалізованих професійних інструментальних отладочных коштів, до яких належить віднести:. внутрисхемные эмуляторы (ВСЭ) — програмно апаратне засіб, здатне заміщати собою эмулируемый процесор у реальному устрої;. програмні симулятори — програмне засіб здатне імітувати роботу МК та її пам’яті;. монітори налагодження — спеціальна дитяча програма, загружаемая на згадку про отлаживаемой системи.. плати розвитку (Evaluation Boards — оціночні плати) — своєрідні конструктори для макетування прикладних систем;. эмуляторы ПЗУ — программно-аппаратное засіб, що дозволяє замінити ПЗУ отлаживаемого устрою на ОЗУ, у якому можна завантажити програму з комп’ютера через одне із стандартних каналів связи.

До того ж є і комбіновані пристрої і наборы.

Симуляторы.

Зазвичай, стимулятор складається з отладчика, моделі ЦП і пам’яті. Більше скоєні устрою перебувають у собі моделі вбудованих периферійних пристроїв (таймерів, портів, АЦП і систем прерываний).

Стимулятор мусить уміти завантажувати файли програм, у всіх популярних форматах, якнайповніше відображати інформацію про стан ресурсів симулируемого МК, і навіть надати можливість по симуляції виконання загружаемой програми у різних режимах. У процесі налагодження модель виконує програму, й монітора комп’ютера відображається поточне стан модели.

Завантаживши програму стимулятор, користувач може запускати її пошаговом чи безупинному режимі, ставити умовні чи безумовні точки зупинки, контролювати та вільно модифікувати вміст осередків пам’яті і регістрів симулируемого МК. Стимулятор дозволяє швидко перевірити логіку виконання програми, правильність виконання арифметичних операций.

Залежно від класу використовуваного отладчика деякі моделі симуляторів підтримують высокоуровневую налагодження программ.

Стимулятор може містити і кілька додаткових програмних засобів, наприклад інтерфейс довкілля. Наявність такої інтерфейсу дозволяє створювати й гнучко використовувати модель довкілля МК, що існує і що впливає на отлаживаемую програму з заданому алгоритму.

У реальної системі МК зазвичай «займається» зчитуванням інформації з підключених щодо нього пристроїв (датчиків), обробкою її й видачі управляючих сигналів на виконавчі устрою. Щоб у простій дії симуляторе змоделювати роботу датчика, у ручну змінювати поточне стан моделі периферійного устрою, до котрого реальної системі підключений датчик. Але є ряд сучасних розробок програмних симуляторів, у яких щоб імітувати зовнішні умови й ситуації на, зазвичай використовується спеціальний файл вхідних впливів. Цей файл задає послідовність вхідних сигналів, вступників на моделируемое устройство.

Приміром, для микроконтроллеров AVR цей вхідний файл програмного симулятора може бути наступним образом:

0:00.

6:F1.

15:18.

109:1C.

203:61.

250:10.

344:1 °F.

391:71.

999 999 999:ff де кожна рядок містить — цикл: данные, вступники який або зазначений порт.

У деяких моделях симуляторів цю проблему імітації зовнішніх сигналів вирішена в такий спосіб, що стимулятор має вбудоване засіб до створення моделей підключених до МК зовнішніх пристроїв, включаючи кошти графічного відображення информации.

Очевидна особливість програмних симуляторів у цьому, що завантажені в них програми виконуються масштабу часу, відмінному від реальної. Проте низька ціна, можливість налагодження навіть за відсутності макета отлаживаемого устрою роблять програмні симулятори дуже привабливим засобом налагодження. Необхідно також відзначити, що є цілий клас помилок, які можна знайти лише за допомогою симулятора.

Интегрированные середовища разработки.

Ідея єдності програмного і апаратного забезпечення систем з урахуванням МК є дуже важливою. Об'єднання інструментальних коштів розробки програмного забезпечення з інструментальними засобами розробки апаратного забезпечення може бути важливим перевагою розробки устройств.

Істотно полегшують і прискорюють процес розробки та налагодження мікропроцесорних систем, звані інтегровані середовища розробки. Вони поєднують у собі текстовий редактор для написання вихідних текстів, трансляторы з ассемблера і Сі, линкер, отладчик, довідкову інформацію з МК й інші засоби, необхідні розробникові. Налаштування трансляторів, линкера та інших компонентів виробляється не методом вказівки ключів в командної рядку, а вигляді діалогових вікон, де потрібна лише розставити «галочки» у потрібних місцях. Перетворення вихідних текстів програм, у файл машинних кодів запускається натисканням однієї клавишей.

Поява інтегрованих середовищ розробки програм ще більше підвищило ефективність створення програм для МК, дозволило розробникові зосередитися на суті розв’язуваної завдання й абстрагуватися від конкретних деталей його реалізації. Інтегровані пакети і розробити програм випускають кілька фірм, пакети різних виробників схожі між собою виконуваних функцій, але різняться наданими сервісними можливостями, зручністю роботи і якістю генерированного машинного кода.

Нагадаємо, що з традиційному підході є початковим етапом написання програм будується так. Вихідний текст набирають з допомогою якого або текстового редактора. По завершення набору роботу з текстовим редактором припиняється і запускається кросс-компилятор. Зазвичай, нова програм містить синтаксичні помилки, і компілятор повідомляє про неї на консоль оператора. Потім знову запускається текстовий редактор, і оператор шукає і усуває виявлені помилки. У цьому повідомлення про їхнє характері, виведені компілятором не видно, оскільки екран зайнятий текстовим редактором.

Цей цикл може повторюватися кілька разів. Та навіть якщо програма щодо складна, збирається із різних частин, піддається редагування чи модернізації, то цей є початковим етапом вимагатиме дуже багато сил і часу программиста.

Уникнути рутинної праці та цим істотно підвищити продуктивності праці програміста дозволяє що з’явилися і швидко завоевывающие популярність звані інтегровані середовища (оболонки) розробки (Integrated Development Environment — IDE).

Зазвичай, хороша інтегрована середовище об'єднує наявні кошти налагодження (внутрисхемный емулятор, програмний стимулятор і программатор) і відданість забезпечує роботу програміста з текстами програм, у стилі діалогових окон.

Інтегрована середовище дозволяє:. використовувати вмонтований многофайловый текстовий редактор, спеціально орієнтований роботи з вихідними текстами програм;. спостерігати одночасно у многооконном режимі діагностику виявлених при компіляції помилок, і вихідний текст програми доступний редагування;. вести паралельну роботу над кілька проектів. Менеджер проектів дозволяє вживати будь-який проект як шаблону для новостворюваного. Опції використовуваних компіляторів і список вихідних файлів проекту встановлюються в діалогових меню і у межах проекту, усуваючи необхідність роботи з незручними bat — файлами:. піддавати перекомпіляції, лише редактировавшиеся модулі;. завантажувати отлаживаемую програму наявні кошти налагодження і із нею не маючи виходу з оболонки;. підключати до оболонки практично будь-які програмні средства.

Останнім часом функції інтегрованих середовищ розробки стає приналежністю програмних інтерфейсів найбільш «просунутих» эмуляторов і отладчиков симуляторів. Такі функціональні можливості у поєднані із дружнім інтерфейсом істотно прискорюють роботу программиста.

Отже, обираючи інструментальні кошти налагодження, доцільно брати до уваги наступний комплекс показників: перелік підтримуваних МК, обмеження на ресурси эмулируемых/симулируемых МК, можливість символьній налагодження, перелік підтримуваних компіляторів і, нарешті, сервісні возможности.

Язык Ассемблера.

Перш ніж розпочати розробку якого або устрою на база МК дуже важливо ознайомитися з основами програмування мовою Ассемблера. При створенні додатків для МК землю треба лише освоїти його програмування, а й навчитися добре розуміти, як крок по кроку виконується ваша програма, і що за цьому відбувається у устройстве.

Щоб процес вивчення мови, написання і налагодження програм на Ассемблері був простою й зрозумілим, є кілька прийомів. Уперших — використання візуалізації процедур виконання команд процесором. По-друге — застосування методів структурного програмування, щоб зробити програми простішими для читання і понимания.

Візуалізацію виконання команд найкраще здійснювати, використовуючи структурну схему процесора чи МК, де відзначається проходження даних і під час кожної команди. Через війну забезпечується хороше візуальне уявлення процесу виконання команд.

Языки програмування високого уровня.

Для програмування МК можна використовувати різні мови високого рівня. Термін «мову високого рівня» служить для позначення мов, що використовуються написання легко читаються програм, які конвертуються (компілюються) у мову ассемблера, та був перетворюються на об'єктний код (битки, і байти) їхнього виконання микроконтроллером.

Перерахуємо основні характеристики мов високого уровня:

. наявність вбудованих функцій (наприклад, консольний ввод/вывод) з подключаемыми библиотеками;

. всі можливі типи даних (8-, 16-, 32-битные і з плаваючою точкой);

. виконання арифметичних операцій із використанням стека;

. використання локальних і глобальних змінних, покажчиків і структур данных;

. розподіл памяти;

. доступом до апаратним регистрам;

. символічна інформація для симулятора/эмулятора.

Реалізація цих характеристик то, можливо проблематичною для які вбудовуються МК, які мають такими особенностями:

. обмежений обсяг пам’яті програм ROM і пам’яті даних RAM;

. відсутність BIOS чи операційній системы;

. переопределяемый ввод/вывод (коли висновок придатна як цифровой/аналоговый/последовательный вход/выход).

Отже, використання ассемблера необхідно, якщо розміру і швидкодії генерованого коду пред’являються дуже жорсткі вимоги. У час таких випадків стає дедалі більше і від, т.к. практично можна взяти більш «швидкий» МК з більший обсяг пам’яті. З іншого боку, сучасні пакети крос коштів дозволяють легко писати змішані програми, де частина модулів написана на Сі, а найбільш критичні до швидкодії частини — на ассемблері. Компілятори Сі дозволяють також вставляти в вихідні тексти ассемблерные инструкции.

Під час розробки програмного забезпечення для МК є кілька правил, які треба виконувати, щоб обсяг використовуваних ресурсів не перевищив доступний предел.

1. Використовувати лише одне вид інтерфейсу з апаратними средствами.

(зовнішніми пристроями). Застосування різних інтерфейсів створює проблеми, якщо знадобиться підключати інші типи зовнішніх устройств.

2. Ідентифікувати глобальні перемінні, специфічні для підпрограм, і використовувати їх деінде в коде.

3. Використовувати скрізь, де можливо, локальні перемінні (це можна зробити реалізувати лише у мовами високого уровня).

4. Якщо передбачається наявність тимчасово використовуваних змінних, то програма має забезпечити їх унікальне использование.

Наслідування цих правил розробки прикладних програм позбавить Вас у подальшому проблеми, що з усуненням важко виявлених нестійких помилок в программе.

1.4. Основні типи інтерфейсів МК.

1.4.1. Підключення перемикачів і придушення «дзвону» контактов.

При замиканні і размыкании перемикачів у подальшому ланцюгу виникають імпульсні перешкоди, викликані дребезгом контактів. Ці перешкоди зазвичай називають «шумом» чи «дзенькотом». Таке явище часто виникає у системах на базах МК, де для введення даних використовується клавіатура, і «дзенькіт» може сприйматися як багаторазове натискання клавіші (див. рис. 1.7). «Дзенькіт» виникає за умови встановлення і розриві контакту шляхом натискання на клавишу.

а) б).

Рис. 1.7. а) схема ключа; б) дребезг контактов.

Щоб усунути даний ефект, використовуються спеціальні схеми чи програмні методи подолання «дзвону». Одне з простих схемотехнических способів усунення «дзвону» полягає у підключенні RC-цепи. У цій схемі час, необхідну заряду розряду конденсатора до порогового напруги, маскує «дзенькіт» контактів при переключенні. Можна ще встановити тригер Шмітта між схемою ключа і МК, щоб посилити ефект придушення «дзвону». Недоліки цього — додаткові видатки компоненти, які необхідно встановити на платі, і додаткового часу, необхідну заряда/разряда RC-цепи. Усе це може утруднити використання цієї схеми, оскільки декому ключів з великим рівнем шумів додаткова затримка може становити десяті частки секунд. Значно найкращий спосіб позбутися «дзвону» — зробити це програмно. Якщо рівень напруги на виході ключа не змінюється протягом 20мс, можна вважати, що «дзенькіт» закінчився, і більше зміни станів не ожидается.

1.4.2. Світлова индикация.

Найчастіше висновок даних реалізуються з допомогою світлодіодів LED (Light Emitting Diode), що досить дешеві і легко підключаються до МК. Зазвичай для світіння світлодіода потрібно струм більш 16 мАЛО, що з більшості МК перебуває у діапазоні допустимих значень вихідних струмів. Слід пам’ятати, що світлодіод є діодом, пропускаючи струм лише у одному направлении.

Типова схема підключення світлодіода висновку МК показано на рис. 1.8. У цій схемі світлодіоди будуть світитися коли МК видає сигнал «0» (низька напруга). Коли висновок працює у ролі входу даних чи нього виводиться «1», то світлодіод буде выключен.

Резистор опором 220 Ом використовується обмеження струму, т.к. занадто великий струм може шпигат МК і світлодіод. Деякі МК містять обмежувачі струму на вихідних лініях, що усуває потреба у ограничивающем резисторе. І все-таки доцільно, про всяк випадок, включити цей резистор, щоб гарантувати, що коротке замикання на «землю» чи напруга харчування Vcc, не виведе з експлуатації МК.

Рис. 1.8. Підключення світлодіода до микроконтроллеру.

Семи сегментний индикатор.

Мабуть найпростіший висновок числових десяткових і шестнадцатеричных даних — це використання семи сегментного індикатора (ССИ). Такі індикатори були дуже популярні 70-х роках, але у згодом би їхнє місце зайняли рідкокристалічні індикатори (ЖКИ). Але світлодіодні індикатори до цього часу є корисними приладами, які можна включені у схему без великих докладає зусиль до створення програмного забезпечення. Включаючи певні світлодіоди (запалюючи сегменти), можна виводити десяткові числа (див. рис. 1.9).

Кожен світлодіод в індикаторі має власний буквений ідентифікатор (A, B, З, D, E, F, G), і з ніжок світлодіода підключена до відповідного зовнішньому висновку. Другі ніжки всіх світлодіодів з'єднані разом і під'єднані до загальному висновку. Цей загальний висновок визначає тип індикатора: з загальним катодом чи із загальним анодом.

Підключення індикатора до МК здійснюється дуже просто: зазвичай індикатор підключають як сім чи вісім (якщо використовується десяткова точка) незалежних світлодіодів. Найважливішою частиною роботи за підключенні до МК кількох ССИ є призначення ліній введення виведення для кожного світлодіода. Виконання цього завдання на початку виконання проекту спростить вам монтаж розведення і налагодження пристроїв надалі. Типовий спосіб підключення кількох індикаторів у тому, аби включити їх паралельно й потім управляти протіканням струму через загальні висновки окремих індикаторів. Оскільки величина цього струму зазвичай перевищує дозволене значення вихідного струму МК, то тут для управління оком включається додаткові транзистори, які вибирають, який із індикаторів буде перебувати у активному состоянии.

Рис. 1.9. Семи сегментний индикатор.

На рис. 1.10 показано підключення до МК чотирьох ССИ. У цій схемі МК видає дані для індикації, послідовно переходячи від однієї індикатора до іншого. Кожна цифра буде висвічуватися протягом дуже короткого інтервалу часу. Це зазвичай виконується з допомогою підпрограми обслуговування переривань таймера. Щоб уникнути мерехтіння зображення, підпрограма повинна виконуватися зі швидкістю, який би включення індикатора, по крайнього заходу, 50 разів у секунду. Чим більший цифр, тим більше повинні слідувати переривання від таймера. Наприклад, під час використання восьми ССИ цифри повинні виводитися зі швидкістю 400 разів у секунду.

Рис. 1.10. Підключення до МК чотирьох ССИ.

1.4.3. Введення з матричної клавиатуры.

Багато додатках потрібно виробляти введення даних із клавіатури. Це може бути реалізований з допомогою окремих кнопок, то такий підхід занадто марнотратний з погляду використання ліній ввода/вывода МК. Кращим рішенням є використання матричної клавіатури, яка є набір ключів, об'єднаних до лав і стовпчики (див. рис. 1.11).

Рис. 1.11. Підключення до МК матричної клавиатуры.

Для читання стану певного ключа на стовпець подається сигнал, а потім зчитується стан рядів. Зазвичай ряди підключаються до високого потенціалу, а опитуваний стовпець сполучається з землею. Якщо за скануванні зчитується низький рівень сигналу, це означатиме, що ключ у цій позиції ряд-столбец замкнутий. На рис. 1.11 показані два МОПтранзистора, що використовуються підключення шпальт до землі. Однак у деяких МК їхня думка може працювати у режимі з відкритою колектором, і отже імітувати роботу цих транзисторів, робить їх включення ненужным.

Матрична клавіатура може бути розширена практично до будь-якого розміру, використовуючи у своїй мало висновків МК. Наприклад, 104- клавишная клавіатура ПК — це матриця, яка містить 13×8 ключей.

2. ОСОБЛИВОСТІ ПОБУДОВИ І ФУНКЦІОНУВАННЯ МИКРОКОНТРОЛЛЕРОВ ФИРМЫ.

ATMEL СІМЕЙСТВА AVR.

2.1. Архітектура микропроцессорного ядра AVR-микроконтроллеров.

Архітектура AVR була оптимізована те щоб з'єднати гідності Гарвардської і Принстонской (Фон Неймана) архітектури задля досягнення дуже швидкого й ефективного виконання програм. Така була забезпечує ефективність процесора при обробці данных.

Основний ідеєю всіх RISC (Reduced Instruction Set Computer), як відомо, є збільшення швидкодії з допомогою зменшення кількості операцій обміну з пам’яттю програм. І тому кожну команду прагнуть вмістити до однієї осередок пам’яті програм. При обмеженою розрядності осередки пам’яті це неминуче призводить до зменшення набору команд микропроцессора.

У AVR-микроконтроллеров відповідно до цим принципом практично все команди (виключаючи ті, які мають однією з операндов є 16- розрядний адресу) також упаковані до однієї осередок пам’яті програм. Але зробити це зробити не було за рахунок зменшення кількості команд процесора, а шляхом розширення осередки пам’яті програм до 16 розрядів. Таке рішення є причиною багатства системи команд AVR проти іншими RISCмикроконтроллерами.

Організація пам’яті AVR виконано за схемою Гарвардського типу, у якій розділені як адресні простору пам’яті програм, тож пам’яті даних, але й шини доступу до них. Для поглибленого розуміння архітектури наведемо дві схеми (див. рис. 2.1 і 2.2).

Уся програмна пам’ять AVR-микроконтроллеров виконано за технологією FLASH і розміщена на кристалі. Це послідовність 16-разрядных осередків і має ємність від 512 слів до 64K слів залежно від типу кристалла.

Поділ шин доступу (рис. 2.2.) до FLASH пам’яті і SRAM пам’яті дає можливість мати шини даних для пам’яті даних, і пам’яті програм різної розрядності, і навіть використовувати технологію конвейеризации. Конвейеризация у тому, що під час виконання поточної команди програмний код наступній вже вибирається з пам’яті і дешифрируется.

Рис. 2.1. Архітектура AVR-микроконтроллеров.

Рис. 2.2. Структурна схема архітектури процесора сімейства AVR.

Порівняйте пригадаємо, що з микроконтроллеров сімейства MCS-51 вибірка коду команди, і її виконання здійснюються послідовно, що цікавить одне машинний цикл, який триває 12 періодів кварцевого резонатора.

Що стосується використання конвеєра наведену тривалість машинного циклу можна скоротити. Наприклад, у PIC-микроконтроллеров фірми Microchip за рахунок використання конвеєра вдалося зменшити тривалість машинного циклу до запланованих 4 періодів кварцевого резонатора. Тривалість ж машинного циклу AVR становить один період кварцевого резонатора. Отже, AVR здатні забезпечити задану продуктивність за більш низькою тактовою частоті. Саме ця особливість архітектури та дозволяє AVR-микроконтроллерам мати найкраще співвідношення энергопотребление/производительность, оскільки споживання КМОП мікросхем, як відомо, визначається їхніми робочої частотою [9,11].

Программная модель AVR і системи команд.

На малюнку 2.3 зображено програмна модель AVR-микроконтроллеров, що дає діаграму програмно доступних ресурсів AVR. Центральним блоком в цій діаграмі є регистровый файл з 32-х оперативних регістрів (R0-R31) чи як його зазвичай називають регістри загального призначення (РОН). Усі РОН безпосередньо доступні АЛУ. Старші регістри (див. рис. 2.4.) об'єднані парами й утворюють три 16-разрядных регістру, виділені на непрямої адресації осередків пам’яті (AVR без SRAM мають лише одне 16-битный регістр Z).

Рис. 2.3. Програмна модель AVR-микроконтроллеров.

Регистровый файл, блок регістрів ввода/вывода і оперативна пам’ять, як показано на рис. 2.3, утворюють єдине адресне простір, що дозволяє можливість при програмуванні звертатися до 32 оперативним регістрам і до регістрам ввода/вывода як до осередків пам’яті, використовуючи команди доступу до SRAM (зокрема і з непрямої адресацією) [8].

Усі арифметичні і логічні операції, і навіть частина операцій роботи із бітами виконуються в АЛУ лише над вмістом РОН. Слід звернути увагу, що команди, використані ними для другого операнда мають константу (SUBI, SBCI, ANDI, ORI, SBR, CBR), може використати як першого операнда лише регістри з другої половини РОН (R16-R31). Команди 16-разрядного складання з константою ADIW і вирахування константи SBIW в ролі першого операнда використовують тільки регістри R24, R26, R28, R30.

Рис. 2.4. Регистровый файл чи РОН.

Під час виконання арифметичних і логічних операцій чи операцій роботи із бітами АЛУ формує ті чи інші ознаки результату операції, то є встановлює чи скидає біти в регістрі стану SREG (Status Register) (див. рис. 2.5).

Ознаки результату операції може бути потім використані програмі до виконання подальших арифметико-логических операцій чи команд умовних переходов.

Адресация регістрів ввода/вывода і пам’яті SRAM.

Регістри ввода/вывода, також зображені на рис. 1, представляють собою набір регістрів управління процесорного ядра і регістрів управління і передачею даних апаратних вузлів AVR-микроконтроллера. Регістрами ввода/вывода є регістри SREG, MCUSR і покажчик стека SPH: SPL і навіть регістри, управляючі системою переривання микроконтроллера, режимами підключення EEPROM пам’яті, сторожовим таймером, портами ввода/вывода та інші периферійними вузлами. Вивчення даних регістрів зручно виконувати разом з вивченням конкретного периферійного узла.

Усі регістри ввода/вывода можуть зчитуватися і записуватися через РОН з допомогою команд IN, OUT (див. групу команд передачі додаток 1). Регістри ввода/вывода, мають адреси буде в діапазоні $ 00 — $1 °F (знак $ свідчить про шестнадцатеричную систему числення), мають можливістю побитовой адресації. Безпосередній установка і скидання окремих розрядів цих регістрів виконується командами SBI і CBI (див. групу команд роботи з бітами додаток 1). Для ознак результату операції, що є бітами регістру ввода/вывода SREG, є повний набір команд встановлення і скидання. Команди умовних переходів у своїх операндов може мати як биты-признаки результату операції, і окремі розряди побитно адресованих регістрів ввода/вывода.

На рис. 2.3 показано розподіл адрес на єдиній адресному просторі. Молодші 32 адреси ($ 0 — $ 1F) відповідають оперативним регістрам тобто. РОН. Наступні 64 адреси ($ 20 — $ 5F) зарезервовані для регістрів ввода/вывода. Внутрішня SRAM в усіх AVR починається з адреси $ 60.

Отже, регістри ввода/вывода мають подвійну нумерацію. Якщо використовуються команди IN, OUT, SBI, CBI, SBIC, SBIS, слід використовувати нумерацію регістрів ввода/вывода, що починається від початку (назвемо її основний). Якщо до регістрам ввода/вывода доступ здійснюється, як до осередків пам’яті, необхідно використовувати нумерацію єдиного адресного простору оперативної пам’яті даних AVR. Вочевидь, що адресу на єдиній адресному просторі пам’яті даних виходить шляхом додатку числа $ 20 до основного адресою регістру ввода/вывода.

Для зберігання оперативних даних програміст, крім РОН, може використовувати внутрішню й зовнішню (якщо вони є) блоки SRAM (див. рис. 2.3).

Фундаментальна обізнаність із зовнішньої SRAM то, можливо програмно разрешена/запрещена установкой/сбросом біта SRE в регістрі ввода/вывода MCUSR.

Операції обміну з м’якою внутрішньою оперативної пам’яттю AVR-микроконтроллер виконує протягом двох машинних циклу. Доступ до зовнішньої SRAM вимагає одного додаткового циклу за кожен байт проти внутрішньої пам’яттю. З іншого боку, установкою біта SRW в регістрі ввода/вывода MCUSR можна програмно збільшити час обміну із зовнішнього SRAM ще на додатковий машинний цикл ожидания.

Виконувати арифметико-логические операції, і операції зсуву безпосередньо над вмістом осередків пам’яті не можна. Не можна записати константу чи очистити вміст осередки пам’яті. Система команд AVR дозволяє лише виконувати операції обміну даними між осередками SRAM і оперативними регістрами. Перевагою системи команд вважатимуться різноманітні режими адресації осередків пам’яті. Крім прямого адресації є такі режими: непряма, непряма з пост-инкрементом, непряма з предекрементом і непряма зі смещением.

Оскільки внутрішня й зовнішня SRAM входить у єдине адресне простір (разом із оперативними регістрами і регістрами ввода/вывода), то тут для доступу до осередків внутрішньої і до зовнішньої пам’яті використовуються одні й ті ж команды.

Слід зазначити, що регістри ввода/вывода в повному обсязі використовують відведені їм 64 адреси. Невикористовувані адреси зарезервовані для майбутніх застосувань, додаткових осередків пам’яті за цими адресами не существует.

Программный лічильник і стек.

У осередках оперативної пам’яті організується системний стік, який використовується автоматично для зберігання адрес повернення і під час підпрограм, і навіть можна використовувати програмістом для тимчасового зберігання вмісту оперативних регістрів (команди PUSH і POP). На початку будь-який програми необхідно форматувати стік програмними засобами, тобто. занести в Покажчик Стека (Stack Pointer) початкова значення, однакову найстаршому адресою осередки оперативному пам’яті. Микроконтроллеры, не мають SRAM, містять трирівневий апаратний стек.

Слід пам’ятати, що й стік розташовується у зовнішній SRAM, то виклики підпрограм і повернення їх вимагають двох додаткових циклів, якщо біт SRW не встановлено, і чотири, якщо установлен.

Розмір стека, організовуваного оперативному пам’яті, обмежений лише розмірами цієї пам’яті. Якщо микроконтроллер містить на кристалі 128 байт внутрішньої SRAM і немає можливості підключення зовнішньої SRAM, то ролі покажчика вершини стека використовується регістр ввода/вывода SPL. Якщо є можливість підключення зовнішньої пам’яті чи внутрішня пам’ять має в діаметрі 256 байт і більше, то покажчик стека і двох регістрів ввода/вывода SPL і SPH.

При занесенні вересня стік автоматично виконуються такі дії: 1. Кількість записується в осередок пам’яті за адресою, що зберігається у покажчику стека. (SPH:SPL) число.

Отже, стік зростає від старших адрес до молодшим, тому, враховуючи, що початкова значення покажчика стека після скидання одно нулю, програміст AVR обов’язково має в инициализирующей частини програми подбати про встановлення покажчика стека, коли він передбачає використовувати хоча б одну подпрограмму.

Крім оперативної пам’яті програмно доступними ресурсами микроконтроллера є энергонезависимые, електрично программируемые FLASH і EEPROM блоки пам’яті, які мають окремі адресні пространства.

Молодші адреси пам’яті програм мають спеціальне призначення. Адреса $ 0000 є адресою, від якого починає виконуватися програма після скидання процесора. Починаючи з наступного адреси $ 0001, осередки пам’яті програм утворюють область векторів переривання. У цій сфері кожному за можливого джерела переривання відведено свою адресу, яким (у разі використання цієї переривання) розміщують команду відносного переходу RJMP на підпрограму обробки переривання (див. рис. 2.3). Слід пам’ятати, що адреси векторів переривання одним і тієї ж апаратних вузлів до різних типів AVR може мати різне значення. Тож забезпечення переносимості програмного забезпечення зручно, як і у разі з регістрами ввода/вывода, використовувати символічні імена адрес векторів переривання, визначених у відповідній inc-файле.

EEPROM блок електрично стираемой пам’яті даних AVR призначений для зберігання енергонезалежних даних, які можуть змінюватися безпосередньо на об'єкті. Це калібровані коефіцієнти, різні установки, конфігураційні параметри системи та т. п. EEPROM-память даних то, можливо програмним шляхом як зчитана, і записана. Проте спеціальних команд звернення до EEPROM-памяти немає. Читання і запис осередків EEPROM виконується через регістри ввода/вывода EEAR (регістр адреси), EEDR (регістр даних) і EECR (регістр управления).

Регистр состояния.

Регістр стану — SREG є частиною простору ввода/вывода і розташований за адресою $3 °F. У ньому встановлюються ознаки результату арифметичних операцій. Окремі біти регістру мають таке призначення (див. рис. 2.5).

Рис. 2.5. Регістр стану SREG (Status Register).

Розглянемо що з ознак:. Биток 0 — З (carry) Прапор перенесення. Встановлюється, якщо під час здійснення операції був перенесення з старшого розряду результату;. Биток 1 — Z (zero) Прапор нульового результату. Встановлюється, якщо результат операції дорівнює 0;. Биток 2 — N Прапор негативного результату. Встановлюється, якщо MSB.

(Most Significant Bit — старший біт) результату дорівнює 1 (правильно показує знак результату, а то й було переповнення розрядної сітки знакового числа);. Биток 3 — V Прапор переповнення доповнення до двох. Встановлюється, якщо під час здійснення операції було переповнювання розрядної сітки знакового результату;. Биток 4 —: Биток знака, P. S = N XOR V. Биток P. S завжди дорівнює що виключає АБО між прапорами N (негативний результат) і V (переповнювання доповнення до двох). Правильно показує знак результату при переповненні розрядної сітки знакового числа;. Биток 5 — H Прапор половинного перенесення. встановлюється, якщо під час здійснення операції був перенесення з 3-го розряду результату.. Биток 6 — T: Збереження копируемого біта. Команди копіювання бітов BLD (Bit.

LoaD) і BST (Bit STore) використовують цей біт як джерело і приймач оброблюваного біта. Биток з регістру регистрового файла то, можливо скопійовано в T командою BST, біт T то, можливо скопійовано в біт регистрового файла командою BLD.. Биток 7 — I: Загальне дозвіл переривань. Щоб вийти з переривань цей біт необхідно встановити в одиницю. Управління окремими перериваннями виробляється регістром маски переривань — GIMSK/TIMSK. Якщо прапор сброшен.

(0), незалежно стану GIMSK/TIMSK, переривання не дозволені. Биток I очищається апаратно після входу в переривання і відновлюється командою RETI, до розв’язання обробки наступних прерываний.

Прерывания.

Описати, що відбувається всередині процесора під час виконання переривання досить легко. Якщо стався запит переривання, і прапор I в регістрі стану встановлено у 1, то адресу наступний команди зберігається у стеці, а виконання програми магістралі триває з адреси, що зберігається у відповідному векторі переривання. Коли запит переривання отримано, і програма перейшла у цій вектору (адресою), прапор I скидається в 0, щоб унеможливити виклику нового переривання під час обробки поточного прерывания.

Прапор I буде знову встановлено у 1 наприкінці оброблювача переривання, коли виконується команда повернення RETI. Він також може бути встановлено у 1 у процесі опрацювання (після збереження контекстовых регістрів), щоб дозволити вкладені переривання. Середні і старші моделі AVR можуть обробляти стільки вкладених переривань, наскільки стане обсягу стека для зберігання вмісту лічильника команд і регістрів контексту. Молодші моделі мають обмежений обсяг стека (три позиції), котрі можуть швидко переповнитися і під час вкладених переривань чи подпрограмм.

2.2. Апаратні кошти AVR.

Системний тактовий генератор.

AVR може використовувати три різних джерела системної частоти: кварцовий чи керамічний резонатор, зовнішній тактовий сигнал чи вмонтований RC-генератор (є ні в всіх моделях). Звичайний діапазон частот для AVR — від 0 до 16 МГц.

Кварцовий чи керамічний резонатор то, можливо підключено до AVR (див. рис. 2.6). Якщо використовується одне з цих схем, то ми не слід підключати будь-які інші устрою до жодного із висновків XTAL.

а) б).

Рис. 2.6. Схеми підключення до AVR керамічного і кварцевого резонаторов.

а) без вбудованих конденсаторів і б) з умонтованими конденсаторами.

Також AVR може синхронізуватися зовнішнім тактовым сигналом, що надходять на вхід XTAL1. Другий спосіб синхронізації - використання убудованого RC-генератора. Такий генератор нині є лише у AT90S1200, він забезпечує тактову частоту 1 МГц. Цей режим задається при допомоги однієї з бітов конфігурації (fuse bit) лише за паралельному програмуванні МК.

Таймеры.

Джерелом сигналу перемикання таймеров/счетчиков є або тактова частота процесора, або зовнішній синхросигнал. Тактова частота процесора можна використовувати безпосередньо чи попередньо ділитися. Вибір джерела сигналу і коефіцієнта розподілу здійснюється з допомогою мультиплексора (див. рис. 2.8). Біти CSxn, управляючі мультиплексором, перебувають у регістрі управління таймера TCCR0. У AT90S8515, який містить два таймерних блоку, є два мультиплексора — за одним за кожен блок. У AT90S1200 є лише одне таймерный блок і один мультиплексер. Вміст таймера инкрементируется на час вступу переднього фронту переключающего сигналу. Тому синхросигнал зі зовнішнього виведення МК вступає у мультиплексер у прямому й инвертированном. Значення зовнішнього сигналу перевіряється на час вступу переднього фронту тактового сигналу процессора.

На рис. 2.7 показаний Таймер 0 — простий 8-разрядный таймер, вміст якої може бути лічено чи записано. Відключення вхідного сигналу відбувається шляхом вибору «заземленого» входу з допомогою мультиплексора. При переповненні лічильника реалізується маскируемое прерывание.

Таймер 1 — складніший 16-разрядный таймер. Він може видавати на вихід імпульси і ШИМ-сигналы. Його великим гідністю є можливість реалізації додаткових функцій, як-от таймер событий.

Рис. 2.7. Структура таймера 0.

Сторожевой таймер.

Сторожевої таймер є окремий таймер зі своєю частотою на 1 МГц, який за включенні буде відраховувати потрібний інтервал часу. Якщо станеться переповнювання доти, як команда WDR скине таймер в 0, то здійснюватися перезапуск МК.

Сторожевої таймер включається за умови встановлення один біта WDE в регістрі управління сторожового таймера WDTCR. Вміст бітов WDPn цього регістру визначає інтервал часу доти, як сторожовий таймер зробить перезапуск МК.

Устройство зовнішнього вывода.

Схема підключення зовнішнього виведення, показана на рис. 2.8, дає уявлення про його роботі. Із кожним набором ліній («портом») пов’язано три адреси ввода/вывода, що дозволяють визначати значення даних, записаних до порту, напрям передачі (1- висновок, 0 — введення) і реальне значення сигналу осіб на зовнішньому виведення. У результаті є можливість «підтягти» висновки порту до високого потенціалу до роботи на режимі введення даних, і використовувати стан деяких висновків як запитів прерываний.

Читання даних може або безпосередньо з уведенням зовнішнього виведення, або із виходу регістру даних порту. Така можливість зовсім є важливим особливістю роботи порту. Якщо зовнішня лінія перевантажена чи випадково закорочена на «землю», стан зовнішнього виходу ніколи змінюватися. Тож у окремих випадках дуже важливо матимуть можливість прочитати вміст регістру порту і порівняти його із реальним станом зовнішнього вывода.

Рис. 2.8. Схема зовнішнього вывода.

«Підтягування» зовнішнього виведення до високого потенціалу управляється не окремими бітами регістру, а цього використовують спеціальна комбінаційна схема. Ця схема дозволяє «підтягування» лише, коли зовнішній висновок працює у режимі введення даних, тобто. коли біт регістру напрями даних скинуто в 0, а біт регістру даних порту встановлено у 1.

Аналоговий ввод/вывод.

Вмонтований аналоговий компаратор напруг дає можливість як порівнювати вхідний напруга з опорним, а й вимірювати тривалість імпульсу з допомогою вмонтованого таймера. 13] Вихід компаратора (див. рис. 2.9.) перебуватиме у стані 1, якщо значення напруги на позитивному (не инвертирующем) вході AIN0 більше, ніж негативному (инвертирующем) AIN1.

Рис. 2.9. Пристрій компаратора напряжения.

Стан можна використовувати для реалізації різних варіантів запиту переривання, які задаються з допомогою бітов ACIS1 і ACIS0 (див. таблицю 2.1.) в регістрі переривання і стан аналогового компаратора ACSR.

Таблиця 2.1. Установки бітов ACIS1 і ACIS0. |ACIS1 |ACIS0 |Тип переривання | |0 |0 |Переривання по переключенню виходу компаратора | |0 |1 |Зарезервоване | |1 |0 |Переривання по спадающему фронту (з 1 в 0) | |1 |1 |Переривання по наростаючому фронту (з 0 один) |.

Визначити поточний стан виходу компаратора можна шляхом опитування значення біта ACO в ACSR. Для зменшення потужності споживання можна відключити компаратор, встановивши один біт ACD в регістрі ACSR. Перш ніж, як ввімкнути чи вимкнути компаратор, треба заборонити усі його переривання шляхом скидання в 0 біта ACIE в регістрі ACSR, щоб уникнути можливість надходження хибних запитів переривання від компаратора.

У МК AT90S8515 до виходу компаратора можна підключити вхід захоплення таймера. У цьому можна зафіксувати момент зміни сигналу не вдома компаратора, тоді як регістрі ACSR біт ACIC встановлено у 1. Така можливість дозволяє вимірювати тривалість сигналу, що надходить на компаратор.

Конфигурирование МК.

У AVR є дві типу бітов, котрі задають конфігурацію МК. Біти конфигурирования «fuses bits» (плавкі перемички) йдуть на вибору режиму роботи AVR, тоді як біти захисту «lock bits» йдуть на заборони доступу до памяти.

. Біти конфигурирования різні до різних типів AVR. У AT90S1200 установка один біта RCEN підключає вмонтований RC-генератор, у своїй зовнішні тактовые імпульси ігноруються. Коли біт SPIEN скинуто в 0, дозволяється програмування МК по послідовному інтерфейсу через порт SPI. В усіх цих моделях біти SPIEN і RCEN за умовчанням скинули б у 0.

МК AT90S8515 має біти SPIEN і FSTRT, що дозволяють при використанні зовнішнього тактового генератора виробляти швидке включення МК без звичайній затримки в 16мс.

Біти конфигурирования «fuses bits» можуть бути чи скинули лише за паралельному программировании.

Біти захисту «lock bits» йдуть на запрещения/разрешения доступу до пам’яті програм, у EEPROM, у своїй досягаються властивості наведені у таблиці 2.2.

Таблиця 2.2. Режими захисту та біти блокування |Біти блокування |Тип захисту | |Режим |LB1 |LB2 | | |1 |1 |1 |Захист не встановлено | |2 |0 |1 |Подальше програмування | | | | |флеш-пам'яті заборонено | |3 |0 |0 |Як режим 2, але заборонено і | | | | |читання |.

Примітка: біти блокування стираються лише за повне стирання памяти.

Пам’ять даних EEPROM.

Операції читання і запис області даних EEPROM досить прості та надійні. Звернення до EEPROM виробляється з допомогою команд з індексної адресацією, що використовують адресу, що зберігається у регістрі EEAR.

Якщо EEPROM має ємність більше 256 байт, як в AT90S8515, то використовуються два адресних регістру: EEARH для зберігання старшої частини адреси і EEARL — для зберігання молодшої частини. Ці регістри повинні зберігати правильний адресу до того часу, доки якщо завершено операція читання чи записи.

Запис на згадку про даних EEPROM виробляється наступним образом:

1. Чекання скидання в 0 біта EEWE в регістрі управління EECR памяти.

EEPROM;

2. Запис в EEAR потрібного адреса;

3. Запис в регістр даних EEDR потрібних данных;

4. Установка один біта EEMWE в регістрі EECR. (Биток EEMWE немає в AT90S1200);

5. У перебігу чотирьох тактів після установки біта EEMWE встановити бит.

EEWE один спершу запис у EEPROM. Операція записи займає от.

2,5 до 4мс.

Биток EEMWE регістру EECR забезпечує апаратну блокування записи для здобуття права зменшити можливість випадкового зміни EEPROM.

Читання з EEPROM виконується аналогічним образом.

1. Чекання скидання в 0 біта EEWE в регістрі управління EECR;

2. Запис в EEAR потрібного адреса;

3. Установка один біта EERE в регістрі EECR;

4. Читання даних із EEDR.

Операція записи має бути закінчена доти, як програма зробить спробу читання з EEPROM. Після установки один біта EERE процесор перетворюється на стан очікування протягом двох тактів, поки дані вибираються з EEPROM. Це означає, виконання команди «SBI EECR, EERE», яка инициализирует операцію читання, займає чимало такт, а три.

Подключение харчування і запуск.

Підключення харчування до AVR здійснюється досить легко. І тому потрібно напруга +5 В, шина «земля» развязывающий конденсатор. Усі моделі мають широкий діапазон напруг харчування 2,7 У — 6,0 У, що дозволяє легко реалізувати батарейное харчування, використовуючи від 2 до запланованих 4 звичайних батарейок чи никель-кадмиевых элемента.

Що ж до споживання енергії, то МК споживають кілька мАЛО в робочому режимі кілька сотень мкА в режим очікування (sleep mode).

Висновок RESET має внутрішнє з'єднання з шиною харчування через резистор («потягування» до харчування), що позбавляє від виробничої необхідності використання зовнішнього сполуки. У процесі налагодження системи, коли треба постійно перезапускати МК і стежити його поведінкою, усе, що вам при цьому потрібно — це просто кнопка, яка замикати висновок RESET на грішну землю (див. рис. 2.10). У закінченою системі ви можете залишати висновок RESET не подключенным.

Рис. 2.10. Запуск AVR з допомогою зовнішнього выключателя.

Якщо під час виконання програми на вхід RESET надійде сигнал низького рівня тривалість більше двох тактів, то виконання програми скидається в початкова стан, а тактовий генератор продовжує працювати. Коли у цьому виведення знову встановитися високий рівень, виконання програми розпочнеться з нульового адреса.

Программирование в системе.

Використовуючи програмування по послідовному інтерфейсу, можна змінювати програму пам’яті МК, вже встановленого в готову до застосування систему. І тому плата з контролером мусить бути підключена до харчування і генератору тактових сигналів (див. рис. 2.11).

Рис. 2.11. Схемою підключення МК для програмування в системе.

На рис. 2.11 включені согласующие резисторы в лініях програмування, щоб бути впевненим, що й схема програмування подає для цієї лінії сигнали, рівень яких відрізняється від цього, що надходить ними від інших пристроїв системи, стану висновків не змінюватися і не виникне конфлікт сигналов.

Для лінії запуску використовується інше підключення. Нормально в цій лінії підтримується високий рівень сигналу, а программатор може подати її у низький, щоб перекласти МК в режим програмування по послідовному інтерфейсу. Управління станом лінії RESET здійснюється схемою, має вихід з відкритою коллектором.

Цю схему можна використовуватиме програмування прикладної системи. Треба з'єднати МК (сигнали «земля», RESET, MISO, MOSI і SCK) з программатором з допомогою 5-и контактного IDC-разъема.

2.3. Система команд микроконтроллера AVR.

Микроконтроллеры AVR мають дуже широкий набір команд. Це дозволяє простіше зробити розробку компіляторів, що також означає, що AVR то, можливо легко запрограмований з допомогою різноманітних команд, спрощують рішення задачи.

Слід звернути увагу до такі тонкощі. Багато команд можуть звертатися лише у 16-старшим РОН не мають доступу до 16-младшим. Значення зсувів і констант може бути обмежено і опинитися в тому діапазоні, що ви ожидали.

Існує суттєва відмінність між «повноцінними» старшими моделями серії 8515 і молодшими моделями серії 1200. Молодші моделі МК реалізують частина повного набору команд, у яких доступний лише одне індексний регістр Z. Хоча при перенесення програм з молодших моделей на старші навряд чи виникнуть проблеми, вони цілком імовірні при напрямку перенесення. Навіть із урахуванням інтересів усіх цих застережень AVR — це МК дуже проста для програмування завдяки багатством набору команд і особливостям його структуры.

Для наочності, у цьому розділі наведемо лише окремі приклади команд. Але як розпочати вивченню команд, доцільно розглянути різні способи адресації данных.

Способы адресації данных Прямая адресація до Регістрам Спільного Назначения.

Основним способом доступу до даних є пряме (безпосереднє) звернення до РОН. На рис. 2.12 операнд команди міститься у регістрі Rd, а КОП позначає частина слова команди, відповідну Коду ОПерации, Зазвичай, у форматі команди виділяється п’ять біт, що дозволяють адресуватися до кожному регистру.

Команди, які оперують з цими двома регістрами, діють, переважно, аналогічно. У цих командах регистр-приемник Rd (destination) вказується перед регистром-источником Rr (resource), тобто є першим параметром (див. рис. 2.13). Отже, команда:

ADD R0, R1 реально виконується так: R0 = R0 + R1.

Рис. 2.12. Пряма адресація одного регистра.

Результат зберігається у регістрі Rd.

Рис. 2.13. Пряма адресація до двох РОН.

Пряма адресація до регістрам ввода/вывода.

На рис. 2.14 адресу операнда міститься у 6 бітах слова команди (осередок Р).

Rd — визначає адресу регістру джерела чи регістру приймача. Приміром, цей тип адресації може використати команди IN чи OUT:

IN R0, SREG ;зберегти регістр стану в регістрі R0.

OUT PORTB, R1 ;записати дані з регістру R1 в PORTB.

Рис. 2.14. Пряма адресація регістрів ввода/вывода.

Пряма адресація данных.

Рис. 2.15. Пряма адресація данных.

Єдине адресне простір є простір даних, включаючи РОН, регістри ввода/вывода, внутрішня пам’ять й зовнішня пам’ять (є). 16-разрядный адресу даних міститься у 16 молодших розрядах 32-х розрядної команди. Rd/Rr визначає адресу регістру джерела чи регістру приймача. Такий тип адресації, приміром, може використати команди LDS і STS:

LDS PORTB, R1 ;записати дані з регістру R1 в PORTB.

STS PORTB, R1 ;записати дані з регістру R1 в PORTB.

Непряма адресація данных.

Існує чотири типи непрямої адресації даних: проста, з постинкрементом, з преддекрементом, зі зміщенням. Для перших трьох типів непрямої адресації даних адресу операнда міститься у регістрі X, Y чи Z. Для останнього типу (зі зміщенням) адресу операнда обчислюється складанням вмісту регістрів Y чи Z з 6 бітами адреси, які у слові команди. А самі регістри залишаються неизмененными.

Сенс непрямої адресації з постинкрементом (з преддекрементом) ось у чому. Після (до) здійснення операції регістр X, Y і Z инкрементируется (декрементируется).

Розглянемо приклади: 1) ST X, Rn ;помістити дані з Rn в за адресою зазначеному в регістрі Х; 2) ST X+, Rn ;теж що у 1), але X инкрементируется; 3) STX, Rn ;попередньо X декрементируется; У попередніх трьох прикладах замість Х може бути Y чи Z. 4) STD Y+c, Rn; до значенням Y додається константа усунення 'з' і з цієї адреси записуються дані з Rn. Y при це майже лишається залишається незмінною. Замість Y може лише Z.

Команды пересилки данных.

Пересилання даних із одного місця у інше для AVR дуже простий операцією, оскільки є дуже багато команд, виділені на виконання це завдання. Жодна команда пересилки даних не впливає на біти регістру состояния.

Команда LPM — завантаження даних із таблиць, які у пам’яті програм. У цьому команді молодший біт індексного регістру Z використовується для вказівки байта, який читатися, якщо 0 — читається молодший байт, 1 — старший. Решта 14 байт йдуть на вказівки адреси слова.

Команда MOV — копіює вміст одного РОН на другий. LDI — завантажує одного з 16 старших РОН байт, який міститься у команді. IN і OUT — доступом до регістрам ввода/вывода, починаючи з нульового адреси. Повний список всіх команд пересилки даних можна знайти у ДОДАТКУ 1, Таблиця А.3.

На рис. 2.16 наочно показано схематичне виконання команди LPM.

Рис. 2.16. Команда LPM.

Команды арифметичних і логічних операций.

Основними арифметичними операціями є складання і віднімання двох чисел. Ці команди по більшу частину очевидні. Складання і віднімання вмісту двох регістрів здійснюватися з допомогою команд ADD і SUB. Модифікації цих команд, які враховують значення прапора перенесення, дозволяють виконати операції над 8-, 16-, 24- і навіть 32-разрядными числами зі знаком, хранящимися в регистрах.

Пояснимо функції прапорів негативного результату N (negative), переповнення V (overflow) і знака P. S (sign), оскільки вони теж мають деякі особливості і складні розуміння при початковому знакомстве.

Прапор негативного результату N просто копіює значення біта 7 результату, що свідчить про, є результат позитивним чи негативним числом.

Прапор переповнення V в регістрі SREG свідчить про переповнювання під час складання чи вирахування чисел зі знаком. Розглянемо пример:

ADD R1, R2.

Прапор V буде встановлено у 1, тоді як регістрах R1 і R2 утримуватися позитивні числа, а результати їхньої складання виявиться більше 127, чи обидва числа негативні, а результат буде набагато меншою -128. Розглянемо приклад із конкретними значениями:

LDI R1, 100 ;100 = 0b01100100.

LDI R2, 100 ;Занести 0b01100100 R1 і R2.

ADD R1, R2 ;R1 = R1 + R2 = 200 = 0b11001000.

Десяткове число 200 в двоичной записи має значення біта 7 однакову 1, що отримання негативного результату. Отже, після здійснення операції складання прапор N буде встановлено у 1. Однак у цьому разі поруч із Прапором N так само встановлено у 1 прапор V, вказуючи, що сталося переповнювання при обробці чисел зі знаком.

Якщо вміст R1 = R2 = - 100, то результатом складання цих чисел буде 0b00111000 в двоичной системі числення, що позитивним числом. У цьому прапор N буде скинуто в 0, показывая, що результату позитивний, проте буде встановлено прапор V, що означає, що у насправді це так.

Використання прапора P. S = N ^ V дозволяє розглядати результат як 9- розрядне число зі знаком, де старшим (знаковим) розрядом таки є прапор P. S. Як відзначалося в описах прапора V, він встановлюється один, коли біт 7 результату має неправильне значення, тобто результат не представлений правильним числом зі знаком в додатковому коді. Виконавши операцію «ВИНЯТКОВЕ АБО» над значенням прапора V і біта 7 результату, який зберігатися в бите N, ви отримаєте реальний знак результату. У першому прикладі (100 + 100) відбувається установка один прапорів V і N, внаслідок прапор P. S дорівнюватиме нулю (1 ^ 1 = 0). У другому прикладі (- 100 — 100) прапор N скидається в 0, а прапор V встановлюється один, тому прапор P. S буде рівнятися одиниці, зазначаючи, що результати отрицательный.

Прапор P. S повинен використовуватися зі старшим байтом числа. При операції з 16-, 24- і 32-разрядными числами значення прапора P. S треба перевіряти лише після завершення останньої операції з старшим байтом числа. При операціях з молодшими байтами використовується прапор перенесення З, звісно ж і під час складання і вычитания.

Команды ветвления.

Команди відносного переходу RJMP і виклику підпрограми RCALL є головними зміни виконання послідовності команд в МК. У цьому вміст програмного лічильника змінюється на величину усунення, яке поставив у 12 молодших бітах коду команды.

МК може виконувати команди розгалуження за значенням певних бітов в регістрі стану SREG. Оскільки номер біта та її значення мали бути зацікавленими указанны в коді команди, то діапазон можливих адрес переходу становить +/- 63 щодо поточного адреси. Це означає, що «застосування команд умовних розгалужень дуже обмежений, але цю проблему вирішити при допомоги розгалуження до команди, які потім виконає необхідний безумовний переход.

Ще одна клас команд розгалуження — це команди пропуску. Після перевірки зазначеного умови, дані команди або виконують таку команду, або пропускають ее.

Битовые команди, і команди тестування битов.

Команди скидання (очищення) та настанови бітов призначені для модифікації регістрів ввода/вывода. Але з них можуть працювати лише частиною регістрів ввода/вывода. Це означає, що з певної частини регістрів ввода/вывода ви повинні спочатку переписати їхній вміст в РОН, модифікувати, та був знову зберегти в регістрі ввода/вывода. Для виконання цієї процедури написати спеціальну макрокоманду (макрос).

Часто необхідно переслати біт вже з регістру чи перемінної в інший. Це можна зробити наступним образом:

BST B, 5 ;помістити біт 5 переменно У в біт Т регістру SREG.

BLD A, 2 ;зберегти біт Т регістру SREG як біта А.2.

Команда SWAP змінює місцями старший й молодший відкусування регістру. Це корисно як ви бережете в регістрі дві цифри, а чи не одне восьмибитовое число.

Команди зрушень і циклічних зрушень LSL, LSR, ROL, ROR і ASR корисні як виконання зрушень даних у процесі їхнього введення виведення, так перевірки значення певного біта в РОН без необхідність виконання 8 окремих операцій тестування бітов. З допомогою циклічного зсуву можна зробити індивідуальну перевірку будь-якого біта в заданому місці байта.

3. ПРОГРАМНЕ І ІНСТРУМЕНТАЛЬНЕ ЗАБЕЗПЕЧЕННЯ ПРОЦЕССА.

ПРОГРАМУВАННЯ МИКРОКОНТРОЛЛЕРОВ.

3.1. Написання і налагодження програмного коду з допомогою AVR Studio.

Відомі інтегровані середовища розробки програм, що б продуктивності праці програміста, дозволяє уникнути рутинної роботи. Інтегровані пакети і розробити програм, випущені різними виробниками, схожі між собою виконуваних функцій, різноманітні сервісним можливостям, зручності праці та якості генерованого машинного кода.

Наприклад пакет програм AVR Studio Version 3.53 (див. рис. 3.1.) є інтегрованої середовищем розробки (ІСР) для МК серії AVR. 16] Цей програмний продукт включає в себя:

. вмонтований редактор тексту, для набору вихідного коду программы,.

. транслятор з мови ассемблер,.

. програмний стимулятор ЦПУ, пам’яті і пристроїв ввода/вывода.

. підтримку зовнішніх пристроїв, як-от — внутрисхемный эмулятор

(ВСЭ) ICEPRO, ICE200 і программатора типу AVRISP і STK500/501.

Рис. 3.1. Головне вікно AVR Studio.

Компанія Atmel поширює даний продукт цілком безплатно, що є величезною перевагою на початку освоєння програмування МК і вивченні його архитектуры.

Як і реальної ІСР, тут можете легко писати вихідний текст програми на ассемблері, підключити зовнішній компілятор для З, налагоджувати текст написаної програми використовуючи вмонтований програмний стимулятор чи підключити ВСЭ. І на остаточному підсумку ви можете запрограмувати свій МК программатором AVRISP чи STK500/501.

3.1.1. Огляд AVR Studio.

Для установки AVR Studio вимагає Microsoft Windows 9x/NT/2000.

Як мовилося раніше, AVR Studio дозволяє відстежувати код програми з допомогою внутрисхемного эмулятора чи програмного симулятора. Для виконання (відстежування) коду програми вона спершу мусить бути откомпилирована, щоб згенерувати об'єктний файла, який завантажується в AVR Studio.

Рис. 3.2. AVR Studio у процесі налагодження вихідного коду програми Ap1.asm.

Ключове вікно в AVR Studio є вікно джерела (Source window), де відображається вихідний код програми (див. рис. 3.2). Коли відкривається об'єктний файл, то автоматично створюється вікно джерела. Воно показує що здійснюється програмний код і має назву, відповідне імені відкритого файла. Покажчик програмного лічильника (жовта стрілка () завжди показує на рядок, яка виконуватися. Смуга статусу (Status bar) вказує чи є виконавче пристрій ВСЭ чи програмним симулятором. Вікно джерела дає інформацію про логіку програми. У доповнення до цьому, AVR Studio може показувати інші вікна, які надають користувачеві достатній контроль стану кожного елемента виконавчого устрою (ВСЭ чи стимулятор). Перерахуємо деякі доступні окна:

. Оглядове вікно (Watch window) — показує значення й адреси певних переменных.

. Вікно РОН (Register window) — показує стан РОН. Регістри можуть змінитися під час зупинки виконання программы.

. Вікно пам’яті (Memory window) — показує вміст пам’яті програм, пам’яті даних, регістрів ввода/вывода і вміст енергонезалежної пам’яті EEPROM. Осередки пам’яті може бути відбито у різних форматах: шестнадцатеричном, десятковому чи двоичном форматі чи як ASCII символи. Вміст пам’яті, як і регістри, то, можливо змінено за бажання під час зупинки программы.

. Вікно регістрів ввода/вывода (I/O window). Показує вміст регістру стану, таймерів, EEPROM регістрів, портів ввода/вывода і т.д.

. Вікно процесора (Processor window). Показує важливу інформацію про виконання програми включаючи Лічильник Команд (Program Counter),.

Покажчик Стека (Stack Pointer), флаги регістру стану (Flags),.

Лічильник Циклів (Cycle Counter) і др.

3.1.2. Створення нового проекта.

Запустивши AVR Studio в меню Project виберіть пункт New. Як зазначено на рис. 3.3, в який з’явився діалоговому вікні «Select project name» необхідно впровадити ім'я проекту (див. «Project name»), його місце розташування «Location» і тип проекту «Project type». Ім'я може бути будь-якою стандартним ім'ям файла. Каталог написати у відповідній текстовому полі бою або вибрати зі списку наявних папок, при натисканні кнопки справа із трьома точками. Якщо каталогу немає, він буде створено без будь-яких напоминаний.

Рис. 3.3. Створення нового проекта.

Усі файли вашого проекту AVR Studio зберігає в обраному каталоге.

Тип проекту обирають з наступних соображений:

. AVR Assembler: для компіляції коду тексту проекту використовується вмонтований транслятор. Не вимагає ні які додаткові настроек.

Ми використовуватимемо саме такий тип.

. Generic 3rd party З compiler: дозволяє вручну налаштовувати AVR.

Studio від використання зовнішніх компиляторов.

Після запровадження усіх перелічених вище даних продовжити натисніть кнопку ‘OK'. Далі з’явиться вікно проекту, як показано на рис 3.4.

Рис. 3.4. Вікно нового проекта.

У папках «Assembler Files» і «Other Files» зберігаються файли пов’язані з вашим проектом. На рис. 3.4 допоки вони пустые.

Додавання ассемблерного файла до проекту може бути реалізований кількома способами. Можна додати існуючий файл або створити новий. Далі ми використовуємо і той, і той способ.

Створимо новий файл вихідного коду програми. І тому з допомогою натискання правої кнопки миші на папці «Assembler Files» викличемо контекстне меню, як показано на рис. 43 і виберемо пункт «Add File…». З’явитися вікно під назвою «Add Files to Project». Переконайтеся, що ви перебуваєте у каталозі свого проекту. У цьому вся каталозі принаймні може бути файл вашого проекту. У нашому випадку це — «Demo_Project.apr ». в текстовому полі «File name:» введемо ім'я нового файла — «LED_code.asm », і натиснемо кнопку «Open». Зауважимо, що розширення файла — asm слід також запровадити вручну, т.к. автоматично він створиться. Якщо всі зроблено правильно, то створиться файл із тим ім'ям, що ви ввели.

Створення файла можна було з допомогою контекстного підміню «Create New File». Тоді з’явитися приблизно таку ж вікно як у рис 3.3, але під назвою «Create new file». У той разі AVR Studio створює файл не у зазначеній папці (Assembler чи ін.), а кореневої папці проекту (Target), що трапляється який завжди полезным.

У щойно створена файл додайте наступний код программы:

;******************************************************.

.include «8515def.inc «.

.def temp = r16 rjmp RESET; вектор переривання з включення питания,.

;скидання RESET чи то з сторожового таймера.

RESET: ldi temp, low (RAMEND) ;инициализируем покажчик стека out SPL, temp; ldi temp, high (RAMEND); out SPH, temp; ser temp ;temp = 0xFF out DDRB, temp ;конфигурируем порт У як loop: out PORTB, temp ;виводимо temp до порту У inc temp ;приріст temp rjmp loop ;перехід на мітку loop.

;******************************************************.

Тепер додамо до проекту вже наявний файл. І тому, по-перше, скопіюємо файл «8515def.inc «до каталогу нашого проекту (див. рис. 3.3.), тобто. в D: Project_filesAVRasm з підкаталогу Appnotes, де знаходиться AVR Studio. Після повернення вікно проекту проробимо знайому вже нам операцію з додаванню файла. На папці «Assembler Files» в контекстном меню виберемо пункт «Add File…». У який з’явився діалоговому вікні додавання файлів до проекту виберемо каталог нашого проекту, та якщо з перелічених файлів — «8515def.inc «і натиснемо «Open». Тепер вікно проекту має відповідати рис. 3.5.

Рис. 3.5. Вікно проекту з робітниками файлами.

Подивившись уважно на рис. 3.5 можна побачити відмінність іконок файлів «8515def.inc «і «LED_code.asm ». Річ у тім, коли ми додаємо перший файл у новий проект, то AVR Studio позначає його як вхідний трансльований файл — «Assembler entry file». І за виклик вбудованого транслятора (ассемблера) буде компілюватися саме такий файл, позначений червоною стрілкою вправо, проте інші, позначені синьої стрілкою вниз — будуть ігноруватися. Власне кажучи файл «8515def.inc «додавати у вікно проекту зовсім необов’язково. Це було зроблено із єдиною метою навчання. Важливо щоб ця файл полягав у тому ж каталозі, як і ассемблерный файл.

Рис. 3.6. Меню «Project».

Нині час транслювати вихідний код програми в об'єктний код. На це є кілька радикальних способів. Можна викликати контекстне меню і кликнути мишею на «Assemble», як показано на рис. 3.5, або ж зробити те ж саме через меню «Project» (див. рис. 3.6). А можна просто натиснути «F7».

З’явиться вікно «Project Output» з повідомленням про успішної трансляції чи помилках, якщо вони є. Якщо ще не зберегли проект, то бажано це, обравши через меню «Project» команду «Save» чи панелі інструментів натиснути кнопку «Save all». Якщо трансляція пройшла безпомилково, можна сміливо братися до виконання коду на вмонтованому симуляторе чи ВСЭ, коли він є у наличии.

Зауважимо, що створення hex файла, необхідний при прошивки (програмування) кристала, необхідно змінити установки проекту (Project Settings…) див. рис. 3.5. і рис. 3.6. І тому в який з’явився вікні «AVR Assembler Options» встановіть «Output file format:» на «Intel Intellec 8/MDS (Intel Hex)». Тепер щоразу при виклик транслятора буде створюватися вихідний файл з розширенням hex і файл з розширенням eep, якщо в коді програми є сегмент EEPROM данных.

3.1.3. Виконання програмного кода.

Для налагодження програми чи інакше кажучи, до виконання програмного коду як симулятора необхідно, ясна річ, щоб програма транслювалася без ошибок.

Рис. 3.7. Меню «Debug».

Після успішної трансляції виберете з меню «Debug» команду «Trace into» чи натисніть «F11», як показано на рис. 3.7. Оскільки ми маємо ВСЭ, то AVR Studio сама запропонує визначити відповідний режим програмного симулятора (див. рис. 3.8). З’явиться вікно «Simulator Options», у якому потрібно буде вибрати тип устрою для симуляції. У цьому прикладі це AT90S8515. Змінювати значення частоти і обсягу пам’яті небажано, оскільки вони встановлені для обраного пристрої з вмовчанням відповідно до технічним параметрами МК. Після натискання кнопки «ОК», можна сказати, що це веде до роботи з кодом програми на симуляторе в пошаговом режимі чи іншому, якому ви пожелаете.

Рис. 3.8. Вікно опцій програмного симулятора.

Зауважимо, що нині у вікні вихідного коду програми, зліва на сірої смузі з’явилася жовта стрілка вправо, що є покажчиком програмного лічильника. Вона свідчить про таку інструкцію, яка виконуватися. Приклад такий стрілки помітні на рис. 3.8.

Рис. 3.9. Меню «View».

Вікно регістрів ввода/вывода.

Для наочного уявлення, що приміром із регістрами ввода/вывода під час виконання програми, відкриємо відповідне вікно — «IO view». Це можна зробити або через меню «View» команда «New IO View», або натиснувши «Alt» і п’яти, як показано на рис. 3.9, чи панелі інструментів натиснути кнопку — .

Рис. 3.10. Вікно регістрів ввода/вывода для МК AT90S8515.

Оскільки ми визначили для убудованого симулятора микроконтроллер типу AT90S8515, то вікно регістрів ввода/вывода відкриється автоматично з усіма належними пристроями при цьому типу МК (див. рис. 3.10). Дане вікно містить перелік пристроїв, вміст яких можна переглянути, як «деревоподібну» структуру, де один елемент може містити ряд вкладених подэлементов.

Рис. 3.11. Вміст порту В.

Оскільки нашу програму працює із портом У, то розглянемо його вміст докладніше. І тому під назвою «Port B» щелкнем мишею два разу (double click) чи одного разу по плюсику зліва. Список порту У розкриється, як показано на рис. 3.11, і можна буде подивитися регістр даних (PORTB), регістр напрями даних (DDRB) і деякі висновки порту У (PINB) — «Port B Data», «Data Direction» і «Input Pins», соответственно.

Кожен біт цього регістру подано у вигляді прапорця. Логічний одиниця відповідає встановленому прапорцю, а логічний нуль — знятим. Стану цих прапорців оновлюються під час виконання програми розвитку й показують поточне значення кожного біта. Ви також можете встановлювати чи очищати значення бітов, клацаючи мишею по відповідним прапорцям, цим змінюючи значення відповідних регістрів ввода/вывода.

Існує пара команд для одиночного покрокового виконання програми. Це «Trace into» /F11/ і «Step Over» /F10/ з меню «Debug» (див. рис. 3.7). Відмінність у тому, що «Trace into» при виклик підпрограми входить у неї за пошаговом режимі, тобто. можна відстежити кожну команду окремо; а «Step Over» виконує підпрограму які і продовжує виконання в пошаговом режимі з такою команди після виклику підпрограми, тобто. як б «обходить» підпрограму. Наш приклад зовсім позбавлений підпрограм, тому відмінність помітно не будет.

Дійшовши до останнього рядка програми, слід звернути увагу до зміна кольору регістрів порту У. Ті регістри, які у останньому кроці трасування поміняли своє значення, стають червоними, інші - чорні. Це полегшує стежити тими регістрами ввода/вывода, які змінюють своє значення при трассировке. Продовжуючи трассировку (натискаючи /F11/) можна спостерігати як регістри порту У змінюють своє значення — инкрементируются.

Рис. 3.12. Додавання точки останова.

Додаючи точки зупинки, ми можемо виконувати програму з максимальною швидкістю, зупиняючись лише там, де встановлено точки останова.

Установивши, курсор на потрібному місці й натиснувши, чи викликавши контекстне меню і натиснувши команду «Toggle Breakpoint» можна лег? о встановити точку зупинки (див. рис. 3.12). Повторне натискання призведе до її зняттю. Червоний квадратик на смужці зліва таки позначає точку зупинки. У цьому прикладі точка зупинки встановлено підтвердження збільшення швидкості виконання програми. Коли був точки зупинки нам вимагалося тричі натискати щоб зробити один цикл (loop:). Установивши ж точку зупинки на команді «rjmp loop» і запустимо програму виконання через меню «Debug» команда «Go» чи натиснемо (див. рис. 3.7), зупинка відбудеться лише у точці зупинки отже на одне циклу знадобиться лише одне натискання. Це реальний приклад прискорення налагодження программы.

Припустимо потрібно щоб регістр порту Не инкрементировался, а декрементировался під час виконання програми. І тому трохи змінимо код програми. У вікні вихідного коду програми рядок «inc temp «змінимо на «dec temp «(див. рис. 3.13). Якщо тепер продовжити виконання програми (натиснути чи чи), то AVR Studio видасть діалогове вікно, яке інформує про зміна вихідного файла і, чи потрібно перекомпілювати проект. Слід натиснути «Yes».

Рис. 3.13. Зміна вихідного коду програми розвитку й перекомпиляция проекта.

Після перекомпіляції покажчик лічильника команд буде встановлено у початок на першу команду. Зауважимо, що встановлені точки зупинки залишаються без изменения.

«Оглядове» окно.

Для контролю над перемінними, а точніше право їх значеннями зручно використовувати «Оглядове» вікно (Watch window). Відкрити може бути використавши комбінацію клавіш «Alt» + «1» чи викликавши меню «View» команду «Watch» (див. рис. 3.9) чи натиснувши кнопку на панелі інструментів — .

Змінні, визначених з допомогою макросу «.DEF» може бути перебувають у «Оглядове» вікно кількома способами. Виділивши потрібну зміну яку можна просто перетягнути в «Оглядове» вікно чи меню «Watch» натиснути команду «Add Watch» чи панелі інструментів натиснути кнопку -.

.

У цьому програмі лише змінна «temp» є такою. Її ми бачимо можемо побачити на рис. 3.14.

Рис. 3.14. Оглядове окно.

Під час покрокового виконання програми можна спостерігати, як змінюється наша змінна «temp». Зауважимо, що це вікно дає підстави користувачеві змінювати значення змінних, тобто. безпосередньо проводити хід виконання програми, полегшуючи отладку.

Рис. 3.15. Вікно процессора.

Вікно процессора.

Тепер поспостерігаємо надворі процесора. Відкриємо його, натиснувши «Alt» + «3» (див. рис. 3.9) чи клацнувши по іконки —. Це вікно (див. рис. 3.15.) надає певну інформацію про виконання програми включаючи Лічильник Команд (Program Counter), Покажчик Стека (Stack Pointer), флаги регістру стану (Flags), Лічильник Циклів (Cycle Counter) і др.

Дуже корисними з оцінки довгі циклів або часі виконання підпрограми може стати «Cycle Counter» і «StopWatch». Хоча крісел у даному прикладі ми мало використовуємо це немовбито вікно, він усе-таки відіграє вельми значної ролі в налагодження программы.

Перед закриттям проекту потрібна згода її зберегти. AVR Studio запам’ятає розташування вікон та використовує ці установки при наступному запуску проекта.

3.2. Аналіз методики реалізації розробки програмного обеспечения.

3.2.1. Класифікація варіантів заданий.

Мета завдань — практичне освоєння методики програмування на ассемблері микроконтроллеров ATMEL сімейства AVR, налагодження програми на симуляторе AVR Studio і програмування кристала з допомогою программатора що за системі макета. Приклади завдань можна використовувати не лише як перевірки знань і навиків з програмування, але й наочного пояснення архітектури під час читання теоретичного материала.

Після вивчення теоретичного матеріалу, саме: архітектури МК, апаратних і програмних засобів, основних типів інтерфейсів, системи команд і симулятора МК, можна розпочати практичної реалізації різних завдань з урахуванням МК.

Саме написання програм, тож вміння їх пояснити є критерієм розуміння архітектури МК, і навіть критерієм здібності використовувати цю архітектуру разом із програмуванням (ассемблером).

Конкретних прикладів завдань може дуже багато. Ми розділимо ці приклади сталася на кілька загальних класів. Спочатку перелічимо досить прості класи задач.

1. Фундаментальна обізнаність із памятью.

До цього класу завдань можна віднести будь-які операції з різними областями пам’яті, такі як читання чи запис. Приміром, можна зчитувати чи записувати дані із/у EEPROM, SRAM і навіть пам’яті програм (Program Memory). Змінюючи початковий адреса київська і розмір даних, і навіть тип (область) пам’яті можна різні приклади задач.

2. Индикация.

Підключаючи на висновках портів різні системи індикації, чи це прості світлодіоди, ССИ чи ЖКИ можна створити широкий клас завдань. Різні варіанти прикладів можна створити, змінюючи черговість чи тривалість світловий індикації. Можна зробити кілька прикладів завдань із рухливими символами чи «біжучому рядком», задаючи різні символи й рядки. Реалізація різної тривалості індикації може здійснюватися або з допомогою таймера, або з допомогою циклів затримки, або іншими способами, що підвищує розмаїтість варіантів заданий.

3. Обчислення та обробка данных.

Є багато прикладів з арифметичними обчисленнями. Приміром, можна робити складання, віднімання, множення, розподіл чи порівняння 8- чи 16-разрядных чисел. Також є математичні чи базисні логічні функції, із яких будувати складніші довільні функции.

Ще до цього класу завдань ставляться перетворення 8-, 16-разрядных чисел в упаковані (чи ні) двоично-десятичные (Binary Coded Decimal — BCD) і навпаки, сортування чисел у різний спосіб і фильтрация.

4. Вимірювання зовнішніх параметрів та внутрішнього облаштування управления:

Сюди входять завдання виміру напруги, струму, частоти, тиску, швидкості обертання та інших параметрів. Створення годин реального часу, калькулятора, кодового замку, управління двигуном, регулювання температуры.

Це досить складний клас завдань, оскільки може містити і деякі перелічені вище класи (1−3).

Варианты заданий.

Префікс 0x — позначає шестнадцатеричное число, 0b — двоичное, без префікса пишеться десяткове число.

В усіх життєвих варіантах необхідно скласти відрегулювати програму з допомогою симулятора і якщо потрібно запрограмувати микроконтроллер з допомогою программатора у системі макета. 1. Дан масив, А з 8 (чи ін.) однобайтовых чисел распложенных в Program.

Memory чи EEPROM який з адреси 0x0A (чи ін.). Переписати з масиву На масив У все числа, великі 0×05 (чи ін.) і менші 0×2С.

Масив У може знаходитися чи в EEPROM, або у SRAM. 2. Написати програму перекодування восьмирозрядного чи шестнадцатиразрядного двоичного вересня упаковане двоично-десятичное число. 3. Написати програму перекодування двухразрядного чи пятиразрядного двоично-десятичного вересня двоичное. 4. Написати програму складання чи вирахування двох двухразрядных десяткових чисел 5. Дан масив, А з 8 (чи ін.) однобайтовых чи двухбайтовых кодов.

Визначити, несе він код 0хАС чи 0хАFВС. Якщо «так », то регистр

Rn занести число таких кодів. 6. Дан масив, А з десяти однобайтовых (чи ін.) чисел. Переписати їх у массив.

У, упорядкувавши числа зі збільшення (чи з спадаючій). 7. Дан масив, А з десяти однобайтовых чисел. Переписати в масив У лише числа, містять парне (чи парне) кількість одиниць (чи нулів). 8. Зашифрувати які у масиві А коди 10 літер чи цифри наступному правилу: а) циклічний зрушення вліво п’ять (чи ін.) розрядів і побітова інверсія; б) додати константу 2 (чи ін.) і циклічний зрушення вправо на 3 розряду. 9. Дан масив, А з 5 однобайтовых чисел. Визначити, несе він число.

1 °F (чи ін.). Якщо можна, то виконати операцію «логічне І «(чи ін.) з усіх числами масиву А. 10. Переписати в стік, що у пам’яті з адреси З, масив, А з десяти восьмирозрядних (чи ін.) чисел. Виконати операцію підсумовування (чи ін.) з них. 11. Дан масив, А з десяти однобайтовых чисел, у якому число 0хАА. Виконати операцію «логічне І «(чи ін.) з усіх числами до 0xАА і операцию.

" логічне АБО «(чи ін.) з усіх числами після нього. 12. Написати програму обчислення логічного функції V=X*(NOT.Y*Z+NOT.W).

(чи ін.), де + - знак операції АБО,* - знак операції І, X, Y, Z, Wлогічні перемінні, збережені в розрядах 3−0 осередки пам’яті EEPROM за адресою 0×00. 13. Написати програму складання чи вирахування двох 8 розрядних (чи ін.) двійкових чисел зі знаком (чи ні). 14. Дан масив, А з десяти однобайтовых чисел. Переписати в масив У все числа, великі (чи менші) 0×20, та не записати в регістр Rn (чи вивести на індикатор) число таких чисел. 15. Визначити парне чи парне число одиниць (чи нулів) у вісім двійкових кодах, записаних в масиві Проте й вивести на індикатор повідомлення «Ч» или.

«М» (чи число одиниць). 16. Дан масив, А з десяти однобайтовых чисел. Переписати в масив У все числа, які у діапазоні 0х0 °F — 0хF0 (чи ін.). Вивести на індикатор число таких чисел. 17. Дан масив, А з 8 однобайтовых чисел, у якому число 0хА1. Необхідно відшукати суму всіх чисел масиву А, що є доти числа. Результат вивести на індикатор. 18. У масиві А зберігається 8 показань температури хворих. Перевірити, чи немає у тому числі значень вище 37 і від 36 і вивести на індикатор відповідно два числа через прогалину. 19. Розробити програму виведення індикатор отладочного устрою послідовності цифр 1−8,образовав ряд 12 345 678. 20. Розробити програму виведення індикатор всіх бітов регістру стану процесора SREG в форматі: кожному прапора (битку) — один розряд індикатора. 21. Розробити програму для послідовного виведення всіх цифр однією семисегментный індикатор з інтервалом виведення -1с. 22. Розробити програму миготіння одного (чи ін.) розряду дисплея з інтервалом 3сек. (чи ін.). 23. Розробити програму послідовного гасіння всіх індикаторів дисплея саме його включення. 24. Розробити програму циклічного переміщення одного символу, закладеного в осередку пам’яті, вздовж індикатора (який біжить символ). 25. Розробити програму для циклічного переміщення набору цифр чи символів вздовж індикатора у бік справа-наліво (навпаки). 26. Розробити програму «Електронні годинник », використовуючи для індикації семи сегментний індикатор. Формат виведення «22.15.30» чи «22.15», забезпечивши миготіння точки з інтервалом 1с. 27. Розробити програму, чередующую висновок на індикатор повідомлень «1C»,.

«2C» і «4C» (чи ін.) утримуваних відповідно 1сек, 2сек і 4сек. 28. Використовуючи матричну клавіатуру 3×3 і світлодіод розробити програму і пристрій, що забезпечувало миготіння світлодіода стільки раз однакову номера натиснутою клавіші (1 — 9). 29. Використовуючи матричну клавіатуру 4×4 (чи ін.) і системи індикації розробити програму і пристрій кодового замку з 4 (чи ін.) цифр коду. 30. Використовуючи матричну клавіатуру 4×4 (чи ін.) і семи сегментні індикатори розробити програму і пристрій калькулятора, що забезпечує складання, віднімання, множення і роблення 16-ти розрядних чисел. 31. Використовуючи генератор звукових коливань і кілька розрядів ССИ розробити програму і пристрій виміру частоти буде в діапазоні 20 гц -.

20 КГц.

Основные принципи виконання заданий.

Передбачається, що який навчається повинен уявити про архітектурі й системі команд микроконтроллеров AVR. За виконання завдання необхідно дотримуватись наступних правил:

1) усвідомити це завдання, розуміючи, що повинно бути результатом;

2) вибрати відповідний микроконтроллер, з вимоги задания;

3) скласти докладний (побітове) опис необхідні виконання завдання регістрів маючи собі таблицю всіх регістрів ввода/вывода (див. ДОДАТОК 2);

4) визначити необхідні вектори переривань та алгоритми відповідних оброблювачів векторів прерываний;

5) скласти алгоритм програми, враховуючи особливості МК.

(стік і т.д.);

6) розпочати написання програми, обираючи необхідні команди ассемблера.

На рис. 3.15.1 зображено структурна схема процесу навчання. Вона включает:

1) Написання програми прошивки микроконтроллера, на вирішення поставленої задачи;

2) Контроль правильності розробленої програми на симуляторе з допомогою комп’ютера (перша петля зворотної связи);

3) Прошивання микроконтроллера і поєднання і системи індикації (зовнішніми пристроями) для остаточного контролю правильності виконаною завдання (друга петля зворотної связи).

Рис. 3.15.1 Структурна схема процесу обучения.

3.2.2. Розгляд типових примеров.

Як приклад роботи з пам’яттю розглянемо таке завдання: Потрібна написати програму копіювання таблиці з 20-ти восьмибитных чисел даних із пам’яті програм (Program Memory) в оперативну пам’ять (SRAM) починаючи з адреси 0×80.

Розглянемо виконання даної програми відповідно до запропонованими вище правилами.

У цьому прикладі слід працювати з оперативної пам’яттю SRAM. Позаяк у МК AT90S1200 її немає, то вибираємо приміром AT90S8515 (чи ін). Тепер потрібно подбати про правильної ініціалізації стека, завантаживши в покажчик стека адресу старшої осередки оперативної пам’яті. Цю програму можна повною мірою реалізувати на симуляторе AVR Studio Simulator, де наочно стане видно вся карта пам’яті. Нижче наведемо програму з декотрими пояснювальними комментариями.

Програма копіювання таблиці даних: ;******************************************************************** .include «8515def.inc » .equ BLOCK1 =$ 80 ;початковий адресу копируемой таблиці даних в SRAM.

;пам'яті .def flashsize =r16 ;РОН який зберігає розмір таблиці .def temp =r16 ;РОН для проміжних действий.

rjmp RESET ;вектор переривання з включення харчування, сбросу.

;RESET чи скидання від сторожового таймера ;********************************************************************** ;* Підпрограма копіювання таблиці даних із пам’яті програм, у SRAM flash2ram: lpm ;завантажуємо з пам’яті програм, у R0 байт адрес.

;якого зазначений в Z st Y+, r0 ;зберігаємо їх у SRAM пам’яті з постинкрементом.

;регістру Y adiw ZL, 1 ;прибуток Z dec flashsize ;зменшення flashsize brne flash2ram ;якщо попередня операція не дорівнює 0 то перейти на.

;мітку ret ;повернення у основну програму ;*********************************************************************** ;* Основна програма RESET: ldi temp, low (RAMEND); инициализируем покажчик стека out SPL, temp; ldi temp, high (RAMEND); out SPH, temp; ldi ZH, high (F_TABLE*2) ;завантажуємо її у регістр Z подвоєний адресу ldi ZL, low (F_TABLE*2); початку таблиці даних ldi YH, high (BLOCK1) ;завантажуємо її у регістр Y адресу початку ldi YL, low (BLOCK1); таблиці даних в SRAM пам’яті ldi flashsize, 20 ;визначаємо розмір таблиці rcall flash2ram ;викликаємо підпрограму копіювання таблиці данных.

;з пам’яті програм, у SRAM пам’ять forever: rjmp forever ;нескінченний цикл F_TABLE:

.db 0,1 ;початок таблиці з 20-ти восьмибитных чисел.

.db 2,3.

.db 4,5.

.db 6,7.

.db 8,9.

.db 10,11.

.db 12,13.

.db 14,15.

.db 16,17.

.db 18,19 ;**********************************************************************.

Як приклад завдання індикації розглянемо другий пример:

Використовуючи два світлодіода і кнопку розробити програму і пристрій що викликає миготіння одного світлодіода, підключеного висновку PB0, і з допомогою кнопки, підключеної висновку PD5, запалює світлодіод, підключений висновку PB4. Частоту миготіння світлодіода порядку 2−3 гц поставити з допомогою оброблювача переривання від таймера Т0.

Дане пристрій можна реалізувати на МК AT90S1200. Задля більшої заданої частоти миготіння світлодіода коефіцієнт попереднього розподілу тактовою частоти (4Гц) для таймера Т0 дорівнюватиме 1024. Підпрограма обробки переривання по переповненню таймера Т0 інвертує значення логічного рівня (0 чи 1) на 0 виведення порту У, забезпечуючи цим миготіння підключеного світлодіода. Світлодіоди підключаються відповідно до поділу «1.4.2 Світлова індикація». Вихідний текст програми цифрового частотомера: ;******************************************************************** .include «1200def.inc «rjmp Start ;вектор переривання з включення харчування, сбросу.

;RESET чи скидання від сторожового таймера nop ;вектор внешнегго переривання неиспользуется rjmp TmrInt ;вектор переривання по переповненню таймера Т0 ;********************************************************************** ;* Підпрограма обробки переривання по переповненню таймера Т0 TmrInt: in R0, SREG ;збереження регістру статусу SREG in R16, PORTB ;запам'ятати поточне значення PortB ldi R17, $ 1; eor R16, R17 ;інвертуємо 0 біт порту У out PORTB, R16 out SREG, R0 reti ;вихід із підпрограми ;******************************************************************** ;* Основна програма Start: ldi R18, $ 11 ;конфигурируем біти порту У out DDRB, R18; як clr R18 out PORTB, R18 clr R18 ;конфигурируем 5 біт порту D out DDRD, R18; як вхід ldi R18, $ 20 out PORTD, R18 ldi R18, 5 ;встановлюємо коефіцієнт попереднього розподілу out TCCR0, R18; частоти на 1024 ldi R18, 2 ;дозволяємо переривання по переповненню таймера Т0 out TIMSK, R18 SEI ;загальне дозвіл переривань Loop:; Loop Around Forever sbis PIND, 5 ;якщо PIND5=0 (кнопка натиснута) rjmp PORTB0_Hi; перейти на мітку PORTB0_Hi cbi PORTB, 4 ;обнулити біт 4 порту У rjmp Loop PORTB0_Hi:; sbi PORTB, 4 ;встановити біт 4 порту У rjmp Loop ;**********************************************************************.

Як третього, досить складного прикладу розглянемо програму для вимірника частоти буде в діапазоні 20 гц — 20 КГц, використовуючи генератор звукових коливань і кілька розрядів ССИ.

Відповідно до схемою зображеною на рис. 3.15.2. перетворимо коливання від генератора в П-импульсы і подаємо виведення переривання (INT0) МК. Діод D1 забезпечує однополупериодное випрямлення досліджуваної синусоїди. Після дільника R1, R3 напруга надходить на обмежувач R2, D2 з напругою обмеження максимум 5 В.

Рис. 3.15.2 Схема підключення генератора коливань до микроконтроллеру.

Таймер/счетчик Т1 веде підрахунок тактових імпульсів з коефіцієнтом розподілу частоти рівним 64, а при переповненні зупиняється і обнуляется.

Зовнішнє переривання INT0 викликає відповідну підпрограму обробки при наростаючому фронті сигналу на однойменному виведення INT0. Ця підпрограма дозволяє таймеру/счетчику Т1 визначити число імпульсів за один період зовнішнього сигналу. Далі основна програма перетворює цей значення в частоту і перевівши в двоично-десятичный код виводить на семисегментные індикатори, які підключаються до МК відповідно до поділу 1.4.2. Програма прошивки МК для реалізації устрою вимірника частоти з урахуванням МК AT90S8515 приведено в ДОДАТКУ 3.

Останній розглянутий приклад представляє пристрій «кодовий замок». Реалізоване з урахуванням МК AT90S1200, вона носить матричну клавіатуру і двоє світлодіода для індикації праці та правильності введеного коду. Програма прошивки МК для цього устрою приведено в ДОДАТКУ 4.

3.3. Опис макета программатора.

Макет программатора складається з загальної плати й на допоміжних плат що реалізують необхідні функції завдань. Загальна плата має розняття, з'єднує программатора з паралельним портом комп’ютера. На загальної платі також розташовані дві контактних колодки (діп панелі) для установки программируемых микроконтроллеров. Вони використовувати МК наступних типів: а) діп панель DIP2x20.2 для МК серій AT90S4414 і AT90S8515; б) діп панель DIP2x10.1 для МК серії AT90S1200 AT90S2313.

Допоміжні плати дозволяють макетировать проектоване пристрій, керовану микроконтроллером, не піддаючи небажаним механічним впливам сам программатор і мікросхему контролера. Допоміжні плати поєднуються з загальною платою через додаткові рознімання, що дозволяє прагматичніше вживати наявні порти (висновки) МК.

Харчування программатора забезпечується від зовнішнього блоку стабилизированного харчування МС9011.02 з вихідним напругою Vcc=+5 В при максимальному струмі навантаження Iн=1.5А.

Рис. 3.16. Принципова схема макета программатора.

На рис 3.16. приведено принципова схема макета программатора для послідовного програмування МК серії AT90S1200 і AT90S8515 через паралельний (LPT) порт комп’ютера. Під'єднання до комп’ютера здійснюється з допомогою кабелю підключення зображеного на рис. 3.17.

З'єднувальний кабель для підключення макета программатора до рівнобіжному (LPT) порту комп’ютера і двох рознімань DB25 °F і BH10.1 і двох шлейфів по 26 і десяти жив з'єднаних між собою відповідно до таблиці 3.1. і таблиці 3.2. Розняття DB25 °F (штир) приєднується до рівнобіжному (LPT) порту комп’ютера, а BH10.1 (гніздо) до розніманню BH10.2 (штир) на макеті программатора (див. рис. 3.16).

Рис. 3.17. Кабель підключення макета до LPT порту компьютера.

Таблиця № 3.1. Відповідність номери контакту розняття DB25 °F і порядкового номери 25 жильного шлейфу. |5 |XTAL1 |4 | |6 |RESET |5 | |7 |MOSI |1 | |8 |SCK |7 | |10 |MISO |9 | |19−25 |Gnd |10 |.

На наведеної схемою макета программатора крім з'єднувальних рознімань і контактних колодок МК перебувають зовнішні елементи необхідних забезпечення роботи тактового генератора. Це конденсатори С2=С1=39 пФ, С3=1000 пФ і кварц із частотою генерації коливань 4 МГц. Кнопка В1 забезпечує скидання МК в початкова состояние.

Підключення допоміжних плат до макету программатора здійснюється через штирові рознімання PLS.1, PLS.2 і PLS.3. Оскільки розняття PLS.1 з'єднаний з діп панеллю DIP2x10.1, у якому встановлюється МК серії AT90S2313 і AT90S1200, а рознімання PLS.2 і PLS.3 з'єднані з діп панеллю DIP2x20.2, в яку встановлюється МК серій AT90S4414 і AT90S8515, то нумерація висновків розняття PLS.1 відповідає нумерації ніжок AT90S1200, а нумерація висновків рознімань PLS.2 і PLS.3 відповідає нумерації ніжок AT90S4414 і AT90S8515.

У макеті программатора при програмуванні і наступного роботі повинен бути лише одне (!) микроконтроллер, або у панелі DIP2x10.1 (AT90S1200 чи AT90S2313), або у панелі DIP2x20.2 (AT90S4414 чи AT90S8515). До разъемам PLS. n (n=1,2,3) через відповідну копил можна під'єднувати будь-які зовнішні устрою: світлодіоди, ССИ, кнопки, матричну клавіатуру, подавати сигнал який або порт (висновок) микроконтроллера чи зчитувати його. У цьому слід пам’ятати, що у контакт 20 розняття PLS.1 і контакт 40 розняття PLS.3 подається напруга Vcc=+5 В.

Макет программатора має дві режиму роботи. Перший — безпосереднє програмування микроконтроллера з допомогою комп’ютера. Як із під'єднаними зовнішніми пристроями, і без них. Другий режим — автономний, коли відбувається роботу з зовнішніми пристроями, виконаними на допоміжних платах. У цьому режимі макет программатора може бути отсоединен від компьютера.

Спочатку який навчається повинен, отримавши завдання, підготувати (написати, і налагодити) програмне забезпечення з допомогою AVR Studio (див. розділ 3.1.), відповідно до пп. 1−6 розділу 3.2. (Принципи виконання завдань). Результатом цього етапу є безпомилкова трансляція розробленої програми. Тільки після цього можна розпочати використанню макета программатора і побудові зовнішнього устрою на допоміжної платі, якщо це передбачено заданием.

ЗАКЛЮЧЕНИЕ

.

Розроблені методичні вказівки містять описи програмного забезпечення і апаратних коштів і реалізації набору прикладів завдань, виділені на вивчення як безпосередньої архітектури МК, так вироблення конкретних навичок программирования.

Проведено аналіз архітектури сучасних микроконтроллеров. Приділено увагу систематизації апаратних засобів і загальним питанням методам налагодження розроблюваних программ.

Особливу увагу приділено серійним МК фірми ATMEL сімейства AVR. Розглянуто їх особливості побудови і функціонування. Аналіз системи команд микроконтроллеров AVR і практичні рекомендації роботи у інтегрованої середовищі розробки «AVR Studio» дозволяє ефективно створювати й розробляти програми для AVR микроконтроллеров.

Представлений набір типових прикладів з найпоширенішими завданнями програмування МК. Запропоновано класифікація та організаційні принципи виконання завдань. Дано опис універсального макета программатора.

Виготовлений універсальний макет программатора, дозволяє проводити не лише прошивання МК AVR чотирьох типів (AT90S1200, AT90S2313, AT90S4414, AT90S8515), а й управління проектовані зовнішніми устройствами.

Реалізовано ряд завдань із працювати з пам’яттю, по перекодировке, додаванню і діленню чисел, роботи з динамічної індикацією і матричної клавіатурою. За підсумками цього смакетированы реальні устрою кодового замку з урахуванням AT90S1200 і вимірника частоти в звуковому діапазоні з урахуванням AT90S8515.

Запропонована цій основі методика навчання програмування і застосування МК дозволяє запровадити цікавляться у цю перспективну область.

БІБЛІОГРАФІЧНИЙ СПИСОК ВИКОРИСТАНИХ ИСТОЧНИКОВ.

1. Предко М. Посібник із микроконтроллерам. Том 1. / Пер. з анг. під ред. І. І. Шагурина і З. Б. Лужанского — М.: Постмаркет, 2001. — 416 с.

2. Предко М. Посібник із микроконтроллерам. Том 2. / Пер. з анг. під ред. І. І. Шагурина і З. Б. Лужанского — М.: Постмаркет, 2001. — 488 с.

3. Cady, Fredrick M. Microcontrollers and microcomputers: principles of software.

and hardware engineering. — New York — Oxford, Oxford University.

Press,.

1997. — 252 p.

4. Вуд А. Мікропроцесори у питаннях і відповідях. / Пер. з анг. під ред.

Д. А. Поспєлова. — М.: Энергоатомиздат. 1985. — 184 с.

5. Вільямс Г. Б. Налагодження мікропроцесорних систем: / Пер. з. анг. — М.:

Энергоатомиздат, 1988. — 253с.

6. Угрюмов Е. П. Цифрова схемотехника. — Спб.: БВХ — Санкт-Петербург,.

2000. — 528 с.

7. Алексенко О. Г., Шагурин І.І. Мікросхемотехніка. — М.: Радіо і связь,.

1990. — 496 с.

8. Бродин Б. В., Шагурин І.І. Микроконтроллеры: Довідник. — М.: ЭКОМ,.

1999. — 395 с.

9. Программируемые логічні ІМС на КМОП-структурах та їх застосування. /.

В.П. Мальцев, Н.І. Гарбузов, О. П. Шарапов, А. А. Кнышев. — М.:

Энергоатомиздат, 1998. — 158 з десятьма. Соловйов В. В., Васильєв О. Г. Программируемые логічні інтегральні схеми та їх застосування. — Мн.: Беларуская наука, 1998. — 270 з. 11. Bursky D. Embedded Logic and Memory Find a Home in FPGA. — Electronic.

Design, 1999, № 14, pp. 43−56. 12. Chang D., Mazek-Sadowska M. Dynamically Reconfigable FPGA. — JEEE.

Transition on Computers, 1999, № 6, pp. 565 — 578. 13. Bursky D. Advanced CPLD Architectures Challenge FPGA, Gas. -.

Electronic Design, 1998, № 22, pp. 78 — 86. 14. Takai Y. a.o. 250 Mbytes Synchronous DRAM Using a 3-Stage-Pipeline.

Architecture. — JEEE. Journal of Solid-Stage Circuits. — 1994, v.29,.

№ 4,.

pp. 426 — 429. 15. Лаптєв У. Цифровим вимірювач температури з урахуванням AVR микроконтроллера і RC-цепочки. — Електронні компоненти, 2001. № 2, с.

46 — 49. 16. internet — опис AVR микроконтроллеров, російськомовний сайт. 17. internet — програмні проекти з AVR. 18. internet internet — інформацію про МК фірми ATMEL 19. internet internet — опис МК AT90S1200 фирмы.

Atmel 20. internet internet ;

AVReAl: програма прошивки At90sXXXX через LPT порт 21. internet — корисні посилання по AVR.

ДОДАТОК 1.

Інструкції процесорів AVR.

Ниже наведено набір команд процесорів AVR, детальніше опис їх можна знайти у AVR Data Book [16,19].

Таблиця А.1. Арифметичні і логічні інструкції. |Мнемони|Опера|Описание |Операція |Прапори |Цвк| |ка |нды | | | |лы | |ADD |Rd, Rr|Суммирование без переноса|Rd = Rd + Rr |Z, C, N, V|1 | | | | | |, H, S | | |ADC |Rd, Rr|Суммирование з перенесення |Rd = Rd + Rr + З |Z, C, N, V|1 | | | | | |, H, S | | |SUB |Rd, Rr|Вычитание без перенесення |Rd = Rd — Rr |Z, C, N, V|1 | | | | | |, H, S | | |SUBI |Rd, K8|Вычитание константи |Rd = Rd — K8 |Z, C, N, V|1 | | | | | |, H, S | | |SBC |Rd, Rr|Вычитание з перенесення |Rd = Rd — Rr — З |Z, C, N, V|1 | | | | | |, H, S | | |SBCI |Rd, K8|Вычитание константи з |Rd = Rd — K8 — З |Z, C, N, V|1 | | | |перенесенням | |, H, S | | |AND |Rd, Rr|Логическое І |Rd = Rd · Rr |Z, N, V, S|1 | | | | | | | | |ANDI |Rd, K8|Логическое І з константой|Rd = Rd · K8 |Z, N, V, S|1 | |OR |Rd, Rr|Логическое АБО |Rd = Rd V Rr |Z, N, V, S|1 | |ORI |Rd, K8|Логическое АБО з |Rd = Rd V K8 |Z, N, V, S|1 | | | |константою | | | | |EOR |Rd, Rr|Логическое який виключає |Rd = Rd EOR Rr |Z, N, V, S|1 | | | |АБО | | | | |COM |Rd |Побитная Інверсія |Rd = $FF — Rd |Z, C, N, V|1 | | | | | |, P. S | | |NEG |Rd |Зміна знака (Доп. |Rd = $ 00 — Rd |Z, C, N, V|1 | | | |код) | |, H, S | | |SBR |Rd, K8|Установить біт (біти) в |Rd = Rd V K8 |Z, C, N, V|1 | | | |регістрі | |, P. S | | |CBR |Rd, K8|Сбросить біт (біти) в |Rd = Rd · ($FF — |Z, C, N, V|1 | | | |регістрі |K8) |, P. S | | |INC |Rd |Инкрементировать значение|Rd = Rd + 1 |Z, N, V, S|1 | | | |регістру | | | | |DEC |Rd |Декрементировать значение|Rd = Rd -1 |Z, N, V, S|1 | | | |регістру | | | | |TST |Rd |Перевірка на нуль або |Rd = Rd · Rd |Z, C, N, V|1 | | | |заперечність | |, P. S | | |CLR |Rd |Очистити регістр |Rd = 0 |Z, C, N, V|1 | | | | | |, P. S | | |SER |Rd |Встановити регістр |Rd = $FF |None |1 | |ADIW |Rdl, K|Сложить константу і слово|Rdh:Rdl = Rdh: Rdl +|Z, C, N, V|2 | | |6 | |K6 |, P. S | | |SBIW |Rdl, K|Вычесть константу з |Rdh:Rdl = Rdh: Rdl -|Z, C, N, V|2 | | |6 |слова |K6 |, P. S | | |MUL |Rd, Rr|Умножение чисел без знака|R1:R0 = Rd * Rr |Z, C |2 | |MULS |Rd, Rr|Умножение чисел зі знаком|R1:R0 = Rd * Rr |Z, C |2 | |MULSU |Rd, Rr|Умножение числа зі знаком|R1:R0 = Rd * Rr |Z, C |2 | | | |із кількістю без знака | | | | |FMUL |Rd, Rr|Умножение дробових чисел |R1:R0 = (Rd * Rr) |Z, C |2 | | | |без знака |.

Показати весь текст
Заповнити форму поточною роботою