- •2. Програмне забезпечення
- •2.1. Мови програмування
- •2. 2 Компоненти мови Асемблер
- •3. Створення програми мовою Асемблер
- •3.1. Постановка задачі
- •3.2. Директиви
- •3.4. Алгоритм
- •3.5. Програма обчислення в одній точці
- •3.6. Застосування зсувів і масок
- •3.7. Запис масиву даних до озп і організація циклу
- •3.8. Завантаження масиву даних з озп до рзп
- •3.9. Зупин програми
- •4. Команди нашої програми
- •1) Арифметичні і логічні команди
- •2) Команди переходів (branch instructions)
- •3) Команди передачі даних (data transfer instructions)
- •4) Команди з бітами (bit and bit-test instructions)
- •5) Команди керування мк (mcu control instructions)
- •Лабораторна робота №1 Основи програмного пакету розробника avr Studio
- •3 Підготовка до налагодження проекту.
- •5 Виправлення помилок алгоритму.
- •5 Оформити звіт.
- •6 Завдання на самостійну роботу.
- •Лабораторна робота №2
- •3 Компіляція проекту.
- •4 Налагодження проекту.
- •Лабораторна робота №3
- •Лабораторна робота №4
- •Лабораторна робота №4
- •1 Підготовка проекту в avr Studio 4 для запису програми до пам'яті мікроконтролера.
- •2 Підготовка апаратних засобів стартового набору stk500.
- •3 Підготовка програмного інтерфейсу stk500.
- •4 Програмування мк та дослідження спроектованого виробу на платі стартового набору stk500.
- •5 Завдання на самостійну роботу
- •1 Налаштування основних модулів мікроконтролера.
- •2 Дослідження основних режимів функціонування мікроконтролера.
- •3 Програмування мк та дослідження цпп на платі стартового набору stk500.
- •4 Завдання на самостійну роботу.
Лабораторна робота №4
"Основи програмного і апаратного інтерфейсу STK500"
1 Підготовка проекту в avr Studio 4 для запису програми до пам'яті мікроконтролера.
1 .1 Створити свій варіант проекту 2Nckp (N – варіант) у пакеті AVR Studio 4 (див. Л. р. №1, п. 1) на основі програми мовою Асемблера, для чого зі зразка проектного файлу D:\avr_tut\20ckp\20ckp.asm залишити фрагмент дослідження деренчання контактів нефіксованих кнопок (L0) і замінити різновиди ЦКП згідно зі своїм варіантом індивідуального завдання та зберегти зміни у своєму програмному файлі.
1
.2
Виконати
транслювання
програми
та
виправити помилки синтаксису команд і
застосування
операндів
(Л. р. №1, п. 2), відтак
вимкнути цикл затримки в підпрограмі
(найпростіше знаками коментарів),
зберегти зміни у файлі та знов повторити
транслювання.
F Примітка. У файлі …\20ckp.asm може бути введено помилки з навчальною метою.
1.3 Налаштувати вікна для налагодження проекту.
а
)
Після
запуску наладчика
в лівій частині
головного вікна
AVR
Studio
4 налаштувати
вікно Project/Processor
(дві закладки в одному вікні) і під ним
вертикально розташувати допоміжні
вікна Watch
(змінні), до якого внести потрібні
регістри (через це немає потреби вставляти
вікно Registers),
та Memory
в режимі Data
(ОЗП), налаштоване прокруткою на останні
комірки – вершину стеку (Л.
р. №1, п. 3.2, 3.3).
б) Відчинити вікно регістрів введення-виведення (РВВ, I/O View): клацнути правою кнопкою миші в полі меню і інструментів та в контекстному меню ввімкнути І/О (відчинити його можна також з меню View > Toolbars > I/O або гарячими клавішами Alt + 5), відтак взятися лівою кнопкою миші за заголовок вікна I/O View та за допомогою покажчиків (стрілок) розташувати його у правій частині головного вікна AVR Studio 4.
в)
Налаштувати вікно I/O
View.
Перемикачем одного з трьох режимів
презентації вікна вибрати режим Module
Split
View
(розбиття модулів), коли вікно розбивається
на дві області: а – модулі МК і б –
область регістрів. В області б вилучити
колонку адрес, для чого взятися за її
заголовок і, коли покажчик набуде форми
хреста, стягнути його до вільного місця
(або клацнути правою кнопкою миші в
області б та в розділі Columns
контекстного меню залишити ввімкненими
лише колонки Name,
Value
та Bits).
Відтак перенести потрібні модулі
МК
до області б, для чого при натиснутій
клавіші CTRL клацнути по черзі в області
а заголовки потрібних портів – у
розгорнутому вигляді вони з’являться
в області б. Перемикачем показу областей
вікна доцільно залишити лише область
б (перемикачем показу області регістрів
можна вмикати і вимикати область б без
зміни області а). І, нарешті, відчинити
вікно точок зупинок: клацнути правою
кнопкою миші в полі меню і інструментів
та в контекстному меню ввімкнути
Breakpoints
and
Tracepoints
(відчинити його можна також з меню View
> Toolbars
> Breakpoints
and
Tracepoints),
взятися лівою кнопкою миші за заголовок
цього вікна та за допомогою покажчиків
(стрілок) розташувати його у нижній
частині
вікна
I/O
View.
F Примітка. Як і раніше, налаштовані вікна запам’ятовуються і відтворюються після наступного запуску наладчика в цьому або інших проектах (необхідно буде перенести потрібні модулі до області б і вилучити в ній колонку адрес).
1.4 Виконати налагодження проекту.
а
)
У покроковому режимі налагодження
програми і прогону її частинами до
курсору (Л.
р. №1, п. 3.4, 3.5) перевірити правиль-ність
налаштування портів. Командою 1 (на
ілюстрації показано цифрами) регістр
керування напрямком DDRB
= $FF
(2) налаштовує всі виводи PB[7..0]
порту B
як виходи незалежно від інших регістрів
цього порту. Якщо командою 3 записати
до його регістра даних PORTB
= $FF
(4),
то на всіх виводах PB[7..0]
встановиться рівень лог. 1 (на ілюстрації
цифрою 5 показано вивід PB[0]),
отже світлодіоди LED
буде погашено. При цьому сигнали на
виводах PB[7..0]
відобразяться і в буферах PINB, звідки їх
за необхідністю можна зчитати.
Через те, що по ввімкненні МК всі РВВ керування портами автоматично обнуляються, регістр керування напрямком DDRD = $00 налаштовує всі виводи PD[7..0] порту D (6) як входи. Регістр PORTD при цьому керує внутріщніми резисторами привязки рівнів: за наявності зовнішніх резисторів, приєднаних до виводів PD[7..0] (як у нашій схемі), сигналами PORTD[7..0] = $00 внутріщні резистори автоматично вимкнено. Якщо клацнути код РВВ PIND у графі Value, ввести з клавіатури число 0хFF (7) та натиснути курсором у полі програмного файлу (код і значення бітів відобразяться в графах Value і Bits), то можна імітувати відтиснення кнопок SW[7..0] (8), з’єднаних зі входами PD порту D. Вводити код можна і в іншій спосіб – натисканням на біти PIND (ім’я біту висвічується при наведенні на нього курсору) змінювати їх значення на протилежні.
І, нарешті, установленням окремого біта, наприклад, порту Е (9) налаштову-ємо відповідний вивід як вихід (10), а інші виводи залишаються входами.
б
)
Перевірити налаштування стеку: чотирма
командами (1) до
покажчика стеку (2) має бути завантажена
адреса вершини стеку, тобто останньої
комірки ОЗП (3).
в
)
Введенням біта PIND[0]
=
0 імітувати натиснення кнопки SW[0]
і в
покроковому режимі продивитися цикл з
деренчанням контактів. Відтак вставити
позначки зупинок програми, які
відобразяться на лівому полі програмного
файлу помаранчевими плямками і в списку
Breakpoints,
та спостерігати реалізацію програми
частинами між точками зупинки (Л.
р. №1, п. 3.6,в).
г
)
Перевірити
деренчання контактів
під
час натискання і відпускання кнопок.
Для цього вилучити точки зупинок
програми, запустити автоматичний режим
прогону програми (Л.
р. №1, п. 3.7) і натисканням та відпусканням
кнопок імітувати деренчання контактів
(див. рисунок у кінці програмного файлу),
яке відображатиметься змінами станів
світлодіодів, з’єднаних з виводами
PORTВ
(для впевненої зміни стану кнопок процес
прогону можна зупиняти піктограмою
Break).
д ) Піктограмою Reset – скидання (або командою Reset з меню Debug, або гарячими клавішами Shift + F5) перевести віртуальний МК до початкового стану (всі регістри і лічильники буде обнулено) і натисканням кнопок (крім SW0, яка вмикає режим з деренчанням контактів) налагодити власні варіанти ЦКП. Продивитися реалізацію алгоритму в динаміці, для чого перейти в режим автоматичного прогону програми (виконується не в реальному масштабі часу, уповільнено, тому й потрібно вимикати затримку) і переконатися, що віртуальні вогники просуваються відповідно до варіанту ЦКП, інакше скоригувати програму. Переконатися, що натискання та відпускання будь-якої кнопки (крім SW0) не змінює варіант просування вогників доти, поки не буде натиснуто нову кнопку, тобто усунуто деренчання контактів і кнопки стали фіксованими перемикачами.
1.5 Підготувати проект для фізичного програмування МК.
Для цього вийти з режиму налагодження, ввімкнути цикл затримки (вилучити знаки коментарів у цьому циклі), зберегти зміни у програмному файлі та знов повторити транслювання програми.
