Лабораторні - 1- 5_Лабораторна робота_Мікропроцесорні пристрої та системи - ЛР1
Федеральне агентство з освіти РФ
ТОМСЬКИЙ УНІВЕРСИТЕТ СИСТЕМ УПРАВЛІННЯ ТА РАДІОЕЛЕКТРОНІКИ
Лабораторна робота №1
«Мікропроцесорні пристрої та системи»
Мета роботи:Налагодження прикладних програм для мікроконтролера AVRсімейства Tiny за допомогою персонального комп'ютера та програмних засобів налагодження.
1.Завантажити для налагодження вAVRStudioпрограму перетворення цілих 16-бітних чисел у двійково-десяткові числа. Алгоритм програми "bin16BCD5" полягає в наступному. Припустимо, що є ціле беззнакове 16-бітове число (діапазон від 0 до 65535). Очевидно, що потрібно знайти 5 десяткових цифр. Спосіб перетворення полягає в тому, щоб, віднімаючи з вихідного числа 10000, спочатку визначити десяткову цифру десятків тисяч. Потім знаходиться цифра тисяч послідовним відніманням числа 1000 і т.д. Віднімання щоразу проводиться до отримання негативної різниці з підрахунком числа віднімань. При переході до визначення кожного наступного десяткового розряду в регістрах вихідного числа відновлюється остання різниця позитивна. Після того, як буде знайдено десяткову цифру десятків, у регістрах вихідного числа залишиться десяткова цифра одиниць.
Простежити виконання програми в покроковому та автоматичному режимі, записавши попередньо в регістри r16 і r17 шістнадцяткове число $NNNN, деN— номер варіанта, розрахований за методикою ТМЦ ДО (число від 1 до 9). ВвікніI/OрозкрийтевмістRegister 1—31, Processor, I/O ATTINY15 (CPU , WATCHDOG).Які команди програми впливають на прапори регістру статусуSREG? Зафіксуйте результат перетворення у звіті. У програмі часто використовуються командивіднімання константи з регістру. Чи є в системі командAVRаналогічні команди додавання регістру та константи? Як працюватиме програма, якщо в ній видалити останню команду?
Який період спрацьовування сторожового таймера заданий у програмі? Що буде, якщо дочекатися його спрацьовування?

Мал. 1. Результат перетворення числа 0x5555 (21845)
1.1. команди програми, що впливають на прапори регістру статусу SREG:
1.2. Результат перетворення шістнадцяткового числа 0x5555 в двійково-десяткове число дорівнює 21845.
1.3. в системі команд AVR немає команди додавання регістру з константою та команди десяткової корекції акумулятора, як і самого акумулятора.
1.4. при видаленні рядка m5:rjmpm5 відладчик продовжує виконувати код програми доти, доки виконання не буде перервано користувачем.
1.5. Період наступу тайм-ауту сторожового таймера визначається за допомогою розрядів WDP2…WDP0 (000 = 16К).
1.6. Якщо сторожовий таймер увімкнено, то через певні проміжки часу виконується скидання мікроконтролера.
З якою частотою переповнюється Т0? Яким чином можна зменшити швидкість рахунку у 1024 рази? Пояснити поведінку регістрівSREGіTIFRпід час роботи програми. Поясніть призначення директиви .DEVICE. Поясніть вміст файлуclok.mapу вікніProject.
.INCLUDE "C:\Program Files\Atmel\AVR Tools\AvrAssembler\Appnotes\tn15def.inc"
rjmp RESET; перехід до мітки RESET
.org $005; процедура обробки переривання від Т0
inc r16; інкремент регістру
cpi r16, $ 0A; порівняння регістру з константою
breq m1; перехід, якщо одно
rjmp m3; перехід до мітки m3
m1: clr r16; очищеннярегістра
cpi r17, $ 50; порівняння регістру з константою
breq m2; перехід, якщо одно
rjmp m3; перехід до мітки m3
m2: clr r17; очищення регістру
m3: mov r18, r17; пересилання даних
add r18, r16; складання значень регістрів
reti; вихід із процедури обробки переривання
RESET: ; основна програма
clr r16; очищення регістрів
ldi r20,0b00000001; вибір джерела тактового сигналу
ldi r20,0b00000010; дозвіл переривань від таймера Т0
sei; дозвіл переривань
m4: rjmp m4; зациклювання програми
З якою частотою переповнюється Т0? Яким чином можна зменшити швидкість рахунку у 1024 рази? Пояснити поведінку регістрівSREGіTIFRпід час роботи програми. Поясніть призначення директиви .DEVICE. Поясніть вміст файлуclok.mapу вікніProject.
2.1. Т0 переповнюється із частотою МК.
2.2. Для зменшення швидкість рахунку в 1024 разів необхідно задати три молодші розряди регістру управління ТССR0=101.
Прапор перенесення. Цей прапор встановлюється в 1, якщо в результаті виконання операції стався вихід за межі байта
Прапор нуля. Цей прапор встановлюється один при нульовому результаті виконання операції.
Прапор негативного значення. Цей прапор встановлюється 1, якщо старший розряд результату операції (7 розряд) дорівнює 1.
Прапор переповнення додаткового коду. Цей прапор встановлюється 1 при переповненні розрядної сітки знакового результату.
Прапор знак. Цей прапор дорівнює результату операції «Виключає АБО» між прапорами NіV. Він встановлюється 1, якщо результат виконання арифметичної операції менше нуля.
Прапор потерадного перенесення. Цей прапор встановлюється в1, якщо відбулося перенесення з молодшого зошита байта (з 3-го розряду в 4-й) або позику зі старшого зошита при виконанні деяких арифметичних операцій.
Зберігання біта, що копіюється. Заданий розряд будь-якого РОН може бути скопійований у цей розряд командою BST або встановлений відповідно до вмісту даного розряду командою BLD
Загальний дозвіл переривань. Для дозволу переривань цей прапор повинен бути встановлений у 1. Прапор скидається апаратно після входу в підпрограму обслуговування переривань і відновлюється командою RETI для дозволу обробки наступних переривань.
2.4. Директива DEVICE дозволяє вказати, який пристрій компілюється програма.
2.5. Файл clok.map\отримає опис регістрів через символічне ім'я, постійні вирази та початки програмних сегментів.
3. Сформувати на виведенні РВ1 (ОС1А) мікроконтролера ШІМ-сигнал із частотою 50 кГц (програмаPWM1). Таймер Т1 використовується як генератор імпульсів з програмованим періодом (вміст регістру порівнянняOCR1B) і тривалістю (вміст регістру порівнянняOCR1А). У вікніI/Oрозкрийте вмістRegister1—31,Processor,I/OATTINY15 (PORTB,TIMER_COUNTER_1).
Простежити роботу програми в покроковому режимі. На скільки змінюється вміст Т1 при виконанні командиrjmpm1? Чому? Які прапори встановлюються в регістріTIFR?
Модифікувати програму так, щоб частота ШІМ склала 20 кГц, а шпаруватість - 4 (відношення періоду до тривалості імпульсу).
.INCLUDE "C:\Program Files\Atmel\AVR Tools\AvrAssembler\Appnotes\tn15def.inc"
sbi DDRB,1; Налаштування першої лінії порту на виведення
ldi r16,0x9F; Частота імпульсів 20кГц
ldi r16,0x28; шпаруватість імпульсів приблизно 4
3.1. Вміст T1 під час виконання командиrjmpm1 збільшується на 4.
3.2. величина інкременту T1 залежить від значення предделителя, у разі СКх2. Команда rjmp m1 виконується за 2 цикли, величина інкременту дорівнює 2х2=4.
Змінити програму так, щоб вона записувала в коміркуNEEPROMчисло 100+N, а читала записаний байт у регістрrN , деN=5 - номер варіанта.

Мал. 4. Результат програмиEEPROM
4.1. Підпрограма переривання інкрементує вміст регістру R25
Безпосередньо з програми стек недоступний, тому що в наборі команд мікроконтролера відсутні команди занесення в стек та вилучення зі стека. Покажчик стека також недоступний із програми. Мікроконтролер сам управляє рухом даних по стеку.
Прапор I регістру SREG у підпрограмі обробки переривання можна встановити 1 для дозволу вкладених переривання.
Питання 2. Перерахуйте всі джерела переривань уATtiny15 у порядку зменшення пріоритету.

Питання 3. Як програмуєтьсяFLASH-пам'ять програмATtiny15?
Відповідь:Всі мікроконтролери AVR мають Flash-пам'ять програм, яка може бути завантажена як за допомогою звичайного програматора, так і за допомогою SPI-інтерфейсу, у тому числі безпосередньо на цільовій платі. Число циклів перезапису – не менше 1000.
Питання 4. Якою командою мікроконтролер переводиться в «сплячий» режим?
Відповідь:Sleep(без операндів).
Питання 5. Біти яких регістрів можна встановлювати та скидати командамиsbiіcbi?
Висновок:Навчилися налагоджувати прикладні програмидля мікроконтролера AVR сімейства Tiny за допомогою персонального комп'ютера та програмних засобів налагодження.