
- •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.7. Внутрісхемний програматор atavrisp
Як уже говорилося, мікроконтролери AVR мають кілька режимів програмування: паралельний режим з використанням підвищеної програмуючої напруги, послідовний режим з використанням підвищеної програмуючої напруги і режим послідовного внутрісхемного програмування.
Можливість внутрісхемного програмування мікроконтролерів AVR по послідовному синхронному інтерфейсу SPI дозволяє створювати прості і недорогі програматоры. Такі програматоры називають внутрісхемними (In-System Programmer, ISP).
Для реалізації внутрісхемного програмування компанія Atmel випускає і підтримує внутрісхемний програматор ATAVRISP. ATAVRISP підтримує всі мікроконтролери, що випускаються на сьогоднішній день, AVR, що мають функцію внутрісхемного програмування. Керування цим внутрісхемним програматором здійснюється через COM-порт персонального комп'ютера. Живлення на ATAVRISP подається від цільового пристрою.
Рис.2.20.
Внутрісхемний програматор ATAVRISP.
Подібно стартовому наборові розроблювача STK500, внутрісхемний програматор ATAVRISP реалізований на двох мікроконтролерах - 90S1200-12SC і 90S8535-8AC, і працює під керуванням AVR Studio. Керуюча програма викликається в меню Tools > STK500/AVRISP/JTAGICE > STK500/AVRISP/JTAGICE.
Вибравши одну з закладок у вікні керуючої програми, користувач одержує доступ до різних функцій програмування:
Program. Вікно керуючої програми в цьому режимі представлене на рис.2.21 Тут користувач указує тип цільового мікроконтролера (Device), режим програмування (у нашому випадку ISP), а також файли, що містять дані для програмування Flash-пзп і EEPROM мікроконтролера. Тут же користувач може вказати керуючій програмі на необхідність автоматичного стирання пам'яті програм мікроконтролера перед черговим програмуванням, а також верифікацію записаного коду - після.
Fuses. Дозволяє зчитати стан керуючих бітів мікроконтролера, і при необхідності, запрограмувати їх. Операцію установки FUSE бітів потрібно завершувати натисканням кнопки Program на закладці Fuses.
LockBits. Надає доступ до бітів захисту пам'яті програм мікроконтролера від несанкціонованого зчитування або модифікації. Операцію установки LOCK бітів потрібно завершувати натисканням кнопки Program на закладці LockBits.
Advanced. Дозволяє зчитати сигнатуру цільового мікроконтролера. Тут же може бути задане значення каліброваного байта для внутрішнього RC-генератора мікроконтролера.
Board. Ця закладка призначена для керування STK500 і була описана вище.
Auto. Дозволяє вибрати кілька функцій програмування і верифікації і запускати їх у пакетному режимі.
Рис.2.21.
Вікно керуючої програми внутрісхемного
програматора ATAVRISP
При кожнім переключенні з однієї закладки на іншу керуюча програма перевіряє зв'язок комп'ютера з внутрісхемним програматором. Якщо внутрісхемний програматор не відповідає на запит комп'ютера, у поле повідомлень вікна керуючої програми видається відповідне попередження.
При роботі з цільовим мікроконтролером, програматор ATAVRISP крім ліній внутрісхемного програмування (MOSI, MISO, CLK) використовує вивід /RESET, GND, а також лінію живлення (VTG) по який здійснюється живлення програматора.
Всі описані функції програмування мікроконтролера також можуть бути виконані на платі STK500 у послідовному, а також, на відміну від ATAVRISP, у паралельному режимі.
ATAVRISP поставляється в комплекті з диском AVR Software and Technical Library, кабелем для підключення до COM-порту комп'ютера, двома кабелями (з 10- і 6-контактним роз’ємами) для підключення до цільової плати. Живлення програматора здійснюється від цільового пристрою по лініях VTG і GND.
Уся необхідна інформація з підключення і використання програматора AVRISP включена у вбудований файл довідки AVR Studio.