Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЦП_ч.2_Лаб.W07.docx
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
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 Підготувати проект для фізичного програмування МК.

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