APMK_L9_SK_AVR_l4.ppt
- Количество слайдов: 22
Лекція 9: Система команд AVR-ОМК Навчальні питання: 1. Зсуви розрядів коду. 2. Логічні операції. 3. Тестування і порівняння операндів. 4. Безумовні та умовні переходи між командами. 5. Підпрограми, їх опис та виклики. 6. Організація системи переривань. 7. Засоби налагодження програм для мікроконтролерів Література. За підручником: с. 407 -422. За навчальним посібником: c. 236 -251.
1. Зсуви розрядів коду Позначення Суть команди ±rm>> Арифметичний зсув праворуч rm>> Логічний зсув праворуч (у С) <
Арифметичний зсув праворуч - це команда, що пересовує розряди числа і при цьому зберігає знаковий розряд. Тому, незалежно від знаку числа, відбувається його поділ на 2, а розряд втрачається: ±rm>> 87654321 88765432 Логічний зсув відбувається у прапорець С і вивільняє біт, що стає “ 0”: rm>> 87654321 С <
2. Логічні операції (“І”, “Або”, “Виключне Або” – нерівнозначність) впливають на вибрані розряди першого операнда. Вони дозволяють у ньому: виділити розряди, скинувши інші; встановити певні розряди у “ 1” а також проінвертувати їх. Позначення Суть команди r m& r n r m& k Побітне “І” Те ж з бітами числа та r 16. . . r 31 r m& | k r m! r n r m! k З інверсними бітами числа та r 16. . . r 31 Побітне “Або” Те ж з бітами числа та r 16. . . r 31 r m^ r n “ Виключне Або” – нерівнозначність | rm Інверсія розрядів регістра
Приклади застосування команд: 6 –> r 20 & 12 6 –> r 20 ! 12 6 –> r 20 ^ 12 00000110 00001100 00000100 00001110 00001010 Результат 14 Результат 10 Результат 4
3. Порівняння операндів Порівняння виконується подібно до операції віднімання. Наслідком дії таких команд є відповідна зміна прапорців статусу, що в послідуючому використовується для організації умовних переходів. При тестуванні операнду визначається чи є нуль – тоді Z = 1 та його знаковий розряд S. Позначення Суть команди rm ? r m= r n Тест регістра Порівняння змінних r m= r n = r m= k Те ж з переносом Порівняння r 16. . . r 31 з числом k Приклад: Нехай в r 17 число 3. Після виконання команди r 17 = 5 будуть прапорці: N=1; C=1; H=1; S=1; V=0; Z=0.
4. Безумовні та умовні переходи між командами. 4. 1. Безумовні переходи Щоб вказати місце (команду) для переходу використовуються мітки – в АБ вони позначаються вертикальною рискою, на якій не обов'язково вказується її назва (ідентифікатором). Безумовні переходи в AVR-ОМК є трьох видів: – короткий відносний (у межах – 128. . . +127 кроків); – у повному адресному просторі (містить 32 біти!); – перехід за адресою з 16 -розрядного регістра Z. 45 –> r 21 –>port. B r 21 - - Короткі переходи вказуються ломаною стрілкою, що може закінчуватися: назвою мітки; на позначенні мітки; на іншій ломаній. “Дальні” безумовні переходи (більше за 127 кроків) вказуються у текстовому вигляді як jmp мітка , а переходи за непрямою адресою із Z - просто jmp.
4. 2. Умовні переходи Команди умовних переходів (називаються Conditions) передбачені двох типів: 1) за аналізом прапорців регістра статусу С, N, Z, I, S, V, T, H; 2) з порівнянням операндів або за результатами тестуванням вибраного біта у певному регістрі. Перша група команд умовних переходів містить позначення умови переходу та його напрям – ломану лінію з стрілкою. Стріка упирається у мітку або у назву мітки, а також в іншу ломану: Опис команд програми Умова переходу Продовження опису команд або Назва мітки
Позначення умов у командах переходів 1 -го типу Позначення = –= С=1 С=0 >= < – + ±>= ±< H=1 Умова переходу Нуль (Z=1) Не нуль (Z=0) Є перенос Немає переносу Не менше без знака Менше без знака Від`ємне Додатне Не менше зі знаками Міжтетрадний перенос є H=0 T=1 T=0 V=1 V=0 I=1 I=0 Міжтетрадного переносу немає Вільний біт встановлено Вільний біт скинуто Переповнення Немає переповнення Переривання дозволені Переривання заборонені
Друга група команд умовних переходів не містить напрямку переходу – використовується принцип переходу з неявним адресуванням: якщо умова виконується, то наступна команда пропускається. Опис команд програми Умова пропуску Наступна команда Продовження опису команд
Позначення умов пропуску наступної команди Позначення Умова пропуску r m= r n Рівність rm. k = 0 Біт k в rm дорівнює 0 rm. k = 1 Біт k в rm дорівнює 1 Назва регістра. k = 0 або назва біта = 0 Біт k в регістрі I/O чи названий біт є 0 Назва регістра. k = 1 або назва біта = 1 Біт k в регістрі I/O чи названий біт є 1
5. Підпрограми оформляються як нові блоки програми (починаючи з вершини) та завершуються командою повернення ret. Вершина, як мітка початку, повинна мати назву, що вказується у команді виклику. Виклики підпрограм бувають трьох типів: 1) короткі – описуються назвою вершини підпрограми; 2) довгі – описуються аналогічно, але з додатковою позначкою / ; 3) за непрямою адресою із Z – описуються словом CALL. Примітка: До використання підпрограм необхідно встановити покажчик стеку SP ! (через налагоджувач Setter). Опис команд програми dodatok Продовження опису команд dodatok Опис команд підпрограми ret
По команді виклику підпрограми адреса наступної команди автоматично засилається з лічильника РС у стек, щоб, коли прийде час, знову повернутися до основної програми. У лічильник команд РС вноситься адреса команди з команди виклику – адреса початку підпрограми. Потім зазначена і наступні команди зчитуються і виконуються. Коли ж зустрінеться команда “повернутися з підпрограми” ret, то знову зі стеку у лічильник РС пересилається раніше записана адреса команди для повернення. Для створення підпрограми необхідно: - маркером вибрати тупікову команду, що завершує головну програму (зазвичай, стрілку безумовного переходу) або вибрати команду ret попередньої підпрограми; - натиснути V – з”явиться вершина підпрограми; - позначити вершину назвою підпрограми; - після опису тіла підпрограми завершити її командою ret.
6. Організація системи переривань Переривання – це вимушені виклики підпрограм внаслідок виникнення певних подій у мікроконтролері. Переривання можуть викликатися: 1) всіма внутрішніми пристроями (пороговими вузлами таймерів, АЦП, компаратором, послідовними інтерфейсами); 2) 3) зовнішніми сигналами на спеціальних виводах INT№; сигналами на деяких лініях портів (позначаються PCINT№ ). Щоб переривання могли відбуватися, їх потрібно дозволити: індивідуально у відповідних регістрах (програмних блоках) керування пристроями і глобально – бітом “І” у регістрі статусу SREG. Якщо якесь переривання відбувається, то викликається команда з відповіною адресою, яка називається вектор переривання. Таким чином, скільки джерел запитів переривань, стільки і векторів.
Адреси векторів різняться за типами мікроконтролерів. Ці адреси розташовані на початку програми та ідуть одна за другою (1, 2, 3 …). Тому за адресами векторів розмістити підпрограми обслуговування запитів неможливо – тільки по одній команді. Тому на цих місцях розміщують команди безумовного переходу на початок підпрограм обслуговування, а її розташовують будь де. Такі записи називають описами векторів переривань. А коли певне переривання не використовується, то на місці його вектора доречно вказати команду «повернутися з переривання» reti. До речі, і у ПЕОМ механізм однаковий. Щоб спростити використання переривань, в Ал. Б є засоби автоматичного опису векторів переривань – команд безумовного переходу на підпрограми з відповідними стандартними назвами.
Механізм автоматичного опису вектора переривань задіюється, якщо вершина основної програми позначена Reset. Тоді за нульовою адресою розташується команда безумовного переходу на першу команду основної програми і, таким чином обійде всі описи, а на місці всіх векторів переривань розташуються команди “повернутися з переривання” reti. Вершину підпрограми обслуговування переривання потрібно назвати відповідно до джерела його запиту. В обох випадках потрібно діяти через пункти меню “Елементи” –> «Прерывания» –> «Назва» . Reset Опис команд основної програми External_1 Підпрограма обслуговування переривання reti Тоді на місці названого вектора замість reti з”явиться команда безумовного переходу на початок позначеної підпрограми.
rjmp Reset reti rjmp External_1 reti External_1: Місця опису векторів переривань – не відображаються Підпрограма обслуговування переривання від входу INT 1 rеti Reset: Опис команд основної програми Примітка: При копіляції підпрограма обслуговування запиту переривання розташується між описами векторів і початком основної програми.
Особливості обслуговування запитів переривання 1. На початку обслуговування запиту біт глобального дозволу переривань “І” автоматично скидається, а поновлюється лише командою повернення reti. Тому вкладені переривання автоматично блокуються – для їх дозволу потрібно встановити біт “І”. 2. Регістр статусу SREG (прапорці) при обслуговуванні переривання автоматично не зберігається. Тому на початку підпрограми обслуговування регістр SREG необхідно зберегти в стеку, а перед завершенням підпрограми – його звідти зчитати. Інакше у основній програмі можуть відбуватися невірні умовні переходи. 3. Переривання, як всякий виклик підпрограми, задіює стек для запису адреси наступної команди з метою повернення на неї. Команда “повернення з переривання” reti не тільки зчитує цю адресу зі стеку, але й забезпечує повернення у початковий стан контролера переривань.
Структурна схема мікроконтролера ряду AVR VCC Аналізатор Vсс XT 1 XT 2 Вузол пуску Генератор тактовий INT 0 INT 1 PC SREG ШИМ Компаратори ШІМ Комутатор SP XY ICP AIN 0 AIN 1 AREF Регістр захвата Комутатор Uк Компаратор Комутатор AD-входів РПЗП конфіг. Програматор РПЗП команд Таймери Таймер інтервальний T 0 T 1 Генератор Процесор Контролер переривань OC 0 А OC 1 В Таймер WDT Стек SRAM Z Регістри r 0. . . r 31 АЦП GND EEPROM даних SPI MOSI SCK MISO TWI (I 2 C) SDA SCL USART TXD RXD Порти. В Порт ADC 0. . . ADC 6 AREF AVCC /RES
8. Засоби налагодження прогам для мікроконтролерів На відміну від ПЕОМ, складену програму для мікроконтролера не можна продіагностувати безпосередньо у ньому – практично ніякої інформації не отримаємо, за винятком працездатної програми. Тому для кожного типу ОМК розроблені засоби налагодження програм, які поділаються за рівнями: 1. Програмні симулятори – це програмні засоби для ПЕОМ, що здатні сприймати команди певного мікроконтролера і показувати відповідні зміни у внутрішніх його пристроях. Приклади – система Ал. Б, AVRStudio та інші. Недолік – неможливо врахувати зовнішні пристрої, що під”єднуються до ОМК. 2. Системи моделювання пристрою з мікроконтролером. Це аналогічний програмний засіб для ПЕОМ, який частково враховує деякі зовнішні пристрої у відповідних моделях (VMLab, MCStudio та інші): індикатори, кнопки, генератори сигналів. Поки найкраща система Proteus.
3. Програмно-апаратні засоби симуляції. Це ПЕОМ з відповідною програмою та під”єднаними через певні адаптери зовнішніми пристроями мікроконтролера. Тут ПЕОМ використовуеться замість ОМК і, якщо дозволяє її швидкість, то облуговує цю периферію у реальному часі. Недолік – складно використати – лише на виробництві. 4. Програмно-апаратні засоби налагодження програм для ОМК. Тут використовуються мікроконтролери у штатному вмиканні у пристроях, але між ними та ПЕОМ організовується зв’язок для контролю траси програми. Для цього можуть використовуватися лише певні типи ОМК, наприклад, C 8051 F, або спеціально розроблені “розкриті” зразки інших. Частково цю задачу вирішує система Ал. Б у режимі “Налагодження з кристалом”. Вам потрібно вивчити “Методику введення і дослідження програм у системі Algorithm Builder”, викладену у виданні: ЦПМК “Завдання на лабораторні роботи”, частина 3.