- •2. Основи програмування і налагодження контролерів avr
- •2.1. Програми avr Assembler V.1.0
- •2.1.1. Відкриття асемблерних файлів
- •2.1.2. Інтегрований редактор
- •2.1.3. Написання програми
- •2.1.4. Асемблування програми
- •2.2. Вивчення пакету avr Studio
- •2.2.2. Вікно процесора
- •2.2.4. Вікно порту
- •2.2.5. Вікно 8-бітного таймера-лічильника
- •2.2.6. Регістри енергонезалежної пам’яті eeprom
- •2.2.7. Команди точок останова (Breakpoint commands)
- •2.2.8. Команди керування виконанням програми
- •2.2.10. Вибір контролера
- •2.2. Система команд та їх характеристика
- •2.2.1. Арифметичні і логічні команди
- •Команда add - Скласти без переносу
- •Команда adc - Скласти з переносом
- •Команда sub - відняти без переносу
- •Команда subi - Відняти константу
- •Команда sbc - Відняти з переносом
- •Команда sbci – Відняти константу з переносом
- •Команда and - Виконати логічне “і”
- •Команда andi - Виконати логічне “і” з константою
- •Команда or - Виконати логічне “або”
- •Команда ori - виконати логічне “або” з константою
- •Команда eor - Виконати виключаюче “або”
- •Команда com - Виконати доповнення до одиниці
- •Команда neg - Виконати доповнення до двох
- •Команда sbr - Встановити біти в регістрі
- •Команда cbr - Очистити біти в регістрі
- •Команда inc - Інкрементувати
- •Команда dec - декрементувати
- •Команда tst - Перевірити на нуль або мінус
- •Команда clr - очистити регістр
- •Команда ser - Встановити всі біти регістра
- •Операція
- •2.2.2. Команди розгалуження Команда rjmp – Відносний перехід
- •Операція:
- •Команда rcall – Відносний виклик підпрограми
- •Операція
- •Команда ret - Повернення із підпрограми
- •Операція
- •Команда reti – Повернення із переривання
- •Операція
- •Команда cpse - Порівняти і пропустити, якщо рівні
- •Команда cp - Порівняти
- •Команда cpc – Порівняти з урахуванням переносу
- •Команда cpi – Порівняти з константою
- •Команда sbrc – Пропустити, якщо біт в регістрі очищений
- •Команда sbrs – Пропустити, якщо біт в регістрі встановлений
- •Команда sbic – Пропустити, якщо біт в регістрі вводу-виводу очищений
- •Команда sbis – Пропустити, якщо біт в регістрі вводу-виводу встановлений
- •Команда brbs – Перейти, якщо біт в регістрі статусу встановлений
- •Команда brbc – Перейти, якщо біт в регістрі статусу очищений
- •Команда breq – Перейти, якщо рівно
- •Команда brne – Перейти, якщо не рівно
- •Команда brcs – Перейти, якщо прапорець переносу встановлений
- •Команда brcc – Перейти, якщо прапорець переносу очищений
- •Команда brsh – Перейти, якщо рівно або більше (без знаку)
- •Команда brlo – Перейти, якщо менше (без знаку)
- •Команда brmi – Перейти, якщо мінус
- •Команда brpl – Перейти, якщо плюс
- •Команда brge – Перейти, якщо більше або дорівнює (з урахуванням знаку)
- •Команда brlt – Перейти, якщо менше чим (зі знаком)
- •Команда brhs – Перейти, якщо прапорець половинного переносу встановлений
- •Команда brhc – Перейти, якщо прапорець половинного переносу очищений
- •Команда brts – Перейти, якщо прапорець t встановлений
- •Команда brtc – Перейти, якщо прапорець t очищений
- •Команда brvs – Перейти, якщо переповнення встановлено
- •Команда brvc – Перейти, якщо переповнення очищене
- •Команда brie – Перейти, якщо глобальне переривання дозволене
- •Команда brid – Перейти, якщо глобальне переривання заборонено
- •2.2.3. Команди пересилки Команда ld - Загрузити непрямо з созп в регістр з використанням індексу z
- •Команда st - записати непрямо з регістру в созп з використанням індексу z
- •Команда mov - копіювати регістр
- •Команда ldi - загрузити константу
- •Команда in - Загрузити дані з порту вводу-виводу в регістр
- •Команда out - Записати дані з регістра в порт вводу-виводу
- •Операція:
- •2.2.4. Команди роботи з бітами Команда sbi - Встановити біт в регістр вводу-виводу
- •Команда cbi - Очистити біт в регістрі вводу-виводу
- •Команда lsl - Логічний зсув вліво
- •Команда lsr - Логічний зсув вправо
- •Команда rol - Зсунути вліво через перенос
- •Команда ror - Зсунути вправо через перенос
- •Команда asr - Арифметичний зсув вправо
- •Команда swap - Обмін нібблів місцями
- •Команда bset - Встановити біт в регістрі статусу (sreg)
- •Команда bclr - Очистити біт в регістрі статусу (sreg)
- •Команда bst - Переписати біт із регістра в прапорець t регістра статусу
- •Команда bld - Загрузити вміст t прапорця регістра статусу (sreg) в біт регістра
- •Команда sec - Встановити прапорець переносу
- •Операція
- •Команда clc - Очистити прапорець переносу в регістрі статусу (sreg)
- •Команда sen - Встановити прапорець від’ємного значення
- •Команда cln - Очистити прапорець від’ємного значення в регістрі статусу (sreg)
- •Команда sez - Встановити прапорець нульового значення
- •Операція
- •Команда clz - Очистити прапорець нульового значення
- •Команда sei - Встановити прапорець глобального переривання
- •Операція
- •Команда cli - Очистити прапорець глобального переривання в регістрі статусу (sreg)
- •Команда ses - Встановити прапорець знаку
- •Команда cls - Очистити прапорець знаку
- •Команда sev - Встановити прапорець переповнення
- •Команда clv - Очистити прапорець переповнення
- •Команда set - Встановити прапорець t
- •Команда clt - Очистити t прапорець
- •Команда seh - Встановити прапорець половинного переносу
- •Операція
- •Команда clh - Очистити прапорець половинного переносу в регістрі статусу (sreg)
- •Команда nop - Виконати холосту команду
- •Команда sleep - Встановити режим sleep
- •Команда wdr - Збросити сторожовий таймер
- •2.2.5. Приклади написання програм
- •2.3. Програмні і апартні засоби підтримки розробок для мікроконтролерів avr
- •2.3.1. Стартові набори розроблювача
- •2.3.2. Стартовий набір stk500
- •2.3.3. Плата розширення stk501
- •2.3.4. Плата розширення stk502
- •2.3.5. Плата розширення stk503
- •2.3.6. Плата розширення stk504
- •2.3.7. Внутрісхемний програматор atavrisp
- •2.3.8. Внутрісхемні емуляторы
- •2.3.9. Внутрісхемний емулятор atjtagice mkIi (atjtagice2)
2.3. Програмні і апартні засоби підтримки розробок для мікроконтролерів avr
Поряд з бурхливим розвитком і удосконалюванням мікроконтролерів AVR розвиваються апаратні і програмні засоби підтримки розробок, яким Atmel приділяє чималу увагу. Дана публікація являє собою огляд існуючих на сьогоднішній день програмних і апаратних засобів підтримки розробок для мікроконтролерів AVR і їхніх особливостей.
2.3.1. Стартові набори розроблювача
Застосування стартових наборів дозволяє розроблювачеві швидко, минаючи етап макетування, приступити до практичної розробки додатків. На платах, що входять до складу стартових наборів, установлені необхідні для роботи мікроконтролера елементи "обв'язки" (стабілізатор напруги живлення, тактовий генератор або кварцовий резонатор, ланцюг скидання, засоби для організації внутрісхемного програмування мікроконтролера). Також установлюються часто застосовувані на практиці вузли мікроконтролерних пристроїв (засоби введення й індикації, формувачі інтерфейсу RS-232, інтерфейс із зовнішнім ОЗП й ін.). Всі порти мікроконтролерів виведені на роз’єм і можуть бути з'єднані з зовнішніми пристроями.
У деяких випадках, стартові набори розроблювача можуть використовуватися як готові блоки в складі проектованої апаратури.
2.3.2. Стартовий набір stk500
Компанія Atmel пропонує універсальний стартовий набір STK500 для всіх мікроконтролерів AVR, що випускаються в DIP корпусах. Для підтримки розробок на базі мікроконтролерів випускаються тільки в корпусах TQFP64 і TQFP100 випускаються плати розширення STK501 і STK503, а також STK502 і STK504 для мікроконтролерів у корпусах TQFP64 і TQFP100 із драйвером РКІ.
Крім функцій налагоджувальної плати, STK500 виконує функції паралельного програматора (для всіх типів мікроконтролерів AVR), і послідовного внутрісхемного програматора (крім Tiny11 і Tiny28, не підтримуючу функцію послідовного програмування). При програмуванні мікроконтролера можна робити конфігурування мікроконтролера установкою FUSE-бітів (FUnction SEt).
Функції внутрісхемного програмування і керування STK500 реалізовані на двох мікроконтролерах: 90S1200-12SC і 90S8535-8AC. Крім них на платі STK500 змонтовані наступні елементи:
Панелі для установки мікроконтролерів у корпусах DIP8, DIP20, DIP28 і DIP40;
Стабілізоване джерело живлення з керованим програмно вихідною напругою;
Перетворювачі рівнів сигналів (для випадку, коли напруга живлення цільового мікроконтролера відрізняється від напруги живлення керуючих мікроконтролерів);
Кероване програмно джерело опорної напруги для внутрішнього АЦП мікроконтролера;
Посадкове місце для мікросхеми DataFlash AT45D021;
Двоканальний формувач рівнів сигналів інтерфейсу RS232 (один канал використовується для зв'язку STK500 з керуючим персональним комп'ютером, інший може бути використаний у розроблювальному додатку) ;
Вісім кнопок і вісім світлодіодів для організації введення і відображення вихідної інформації;
Роз’єми розширення для підключення зовнішніх пристроїв.
Рис. 2.12. Налагоджувальна плата STK500
Для тактування налагоджуваних мікроконтролерів на платі STK500 передбачені два джерела тактових сигналів. Один з них являє собою генератор, побудований на вентилях, що інвертують, із кварцовою стабілізацією частоти. Користувач має можливість задавати частоту цього генератора, установлюючи кварцовий резонатор на необхідну частоту в спеціальну панель (позначена CRYSTAL).
Друге джерело тактових сигналів являє собою вихід установленого на платі STK500 керуючого мікроконтролера 90S8535-8AC. Частота цього тактового сигналу може бути задана програмно. Доступні значення 3,69, 1,84, 1,23 МГц, а також 32,7 кГц і повна зупинка.
Перемикач OSCSEL служить для вибору одного з джерел тактового сигналу для мікроконтролера. Якщо ж як тактовий сигнал необхідно використовувати внутрішній RC-генератор мікроконтролера, то зовнішній тактовий сигнал повинний бути відключений джампером XTAL1.
На платі STK500 не передбачене підключення до цільового мікроконтролера зовнішнього ОЗП.
Керування STK500 провадиться через COM-порт персонального комп'ютера. Керуюча програма є складовою частиною AVR Studio і запускається з меню Tools -> STK500/AVRISP/JTAGICE. Крім STK500 ця керуюча програма підтримує такі апаратні засоби налагодження, як внутрісхемний програматор ATAVRISP і внутрісхемний емулятор ATJTAGICE mkII. Докладніше можливості керуючої програми будуть розглянуті нижче при огляді засобів внутрісхемного програмування. Тут ми обмежимо опис тільки функціями, унікальними для STK500. На рис.2.13 представлене вікно програми, що керує настроюваннями STK500.
Рис.2.13. Вікно керування параметрами STK500
Закладка Board служить для установки параметрів STK500:
Напруги живлення цільового мікроконтролера (VTarget);
Опорна напруги АЦП мікроконтролера (ARef);
Частоти керованого джерела тактового сигналу (Oscillator);
а також для індикації версій прошивання (firmware) керуючих мікроконтролерів (Revision).
STK500 підтримує різні режими програмування цільових мікроконтролерів: режим послідовного внутрісхемного програмування, і два режими програмування з використанням підвищеної програмуючої напруги - паралельний і послідовний. Вибір режиму програмування здійснюється у вікні керування параметрами STK500 у закладці Program.
Для використання STK500 у якості внутрісхемного програматора для мікроконтролерів, встановлених у цільовому пристрої, необхідно з'єднати цільовий пристрій з роз’ємом ISP10PIN плати STK500, використовуючи плоский десятижильний кабель.
Програмна підтримка нових мікроконтролерів AVR у STK500 виконується відновленням прошивання (firmware) пам'яті програм керуючих мікроконтролерів (Revision Upgrade). Обновлені версії firmware включаються до складу AVR Studio. Керуюча програма в момент запуску перевіряє зв'язок COM-порту персонального комп'ютера з STK500, і у випадку його присутності запитує версію firmware. Якщо в AVR Studio міститься більш нова версія прошивання, керуюча програма пропонує обновити firmware шляхом перепрограмування керуючих мікроконтролерів. Перед входом у режим перепрограмування STK500 необхідно витягти цільові мікроконтролери з DIP-панелей, якщо вони туди встановлені. Для входу в режим перепрограмування необхідно включити живлення STK500 з натиснутою кнопкою Program.
У комплекті з STK500 поставляються мікроконтролери AT90S8515 і ATmega16, а також диск AVR Software and Technical Library, що включає до складу AVR Studio. Також до складу набору входить комплект кабелів.