- •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.3. Плата розширення stk501
Для підтримки мікроконтролерів у корпусах TQFP64 (крім мікроконтролерів із драйвером РКІ) компанія Atmel пропонує пристрій STK501, що встановлюється в роз’єм розширення STK500 як мезонінова плата. На платі STK501 розміщені наступні елементи:
Панель з нульовим зусиллям (ZIF socket) для установки мікроконтролерів у корпусах TQFP64 (тут і далі в розділі - крім мікроконтролерів із драйвером РКІ);
Додатковий порт RS232 з підтримкою ліній RTS/CTS;
Кварцовий резонатор на 32 кГц для реалізації часів реального часу (Real-Time Clock, RTC);
Посадкове місце для пайки мікроконтролера в корпусі TQFP64 або адаптера внутрісхемного емулятора ICE50
Роз’єм JTAG-інтерфейсу для підключення внутрісхемного емулятора ATJTAGICE mkII.
Рис.2.14. Плата розширення STK501
Кристали в корпусах TQFP64 мають більше портів вводу-виводу, чим передбачене в STK500. Тому порти E, F, G, а також деякі керуючі сигнали, виведені на роз’єм на платі STK501.
Комбінація STK500 і STK501 дозволяє виконувати функції паралельного і послідовного програматора для всіх мікроконтролерів у корпусах TQFP64.
Як уже говорилося, стартовий набір розроблювача STK500 не підтримує роботу мікроконтролера з зовнішнім ОЗП. Розроблювачі STK501 виправили цей недолік, передбачивши на платі STK501 посадкове місце під мікросхему ОЗП об'ємом до 128Кбайт (у корпусах TSOP32 або SOJ32) і регістр-защіпку молодшого байта адреси. При цьому STK501 без установленого мікроконтролера може служити платою розширення для STK500, що дозволяє створювати і налагоджувати проекти для мікроконтролерів mega8515 або mega162 з використанням зовнішньої пам'яті даних.
Для підтримки мікроконтролера AT90CAN128 з CAN-інтерфейсом випускається спеціальний модуль розширення ATADAPCAN01, що використовується в зв'язці з налагоджувальними платами STK500 і STK501 (рис.2.15), а також підключається безпосередньо до цільового пристрою.
Рис.2.15. Підключення ATADAPCAN01 до STK500/STK501
Модуль розроблений у відповідності зі стандартом Bosch CAN 2.0A/B і реалізує функції перетворення сигналу фізичного рівня CAN-інтерфейсу, необхідні для приєднання налагоджувальної системи до шини CAN для розробки і налагодження кінцевого додатка.
У комплекті з STK501 поставляється мікроконтролер ATmega128L і диск AVR Software and Technical Library. У комплекті з ATADAPCAN01 поставляється мікроконтролер AT90CAN128.
2.3.4. Плата розширення stk502
Для підтримки мікроконтролерів у корпусах TQFP64 c драйвером РКІ (ATmega169/329), компанія Atmel випустила пристрій STK502, що встановлюється в роз’єм розширення STK500 як мезонінова плата, також як і STK501. Склад плати STK502 аналогічний складові STK501 (за винятком додаткового порту RS232 і площадки для ОЗП), вона має панель з нульовим зусиллям (ZIF socket) для установки мікроконтролерів, кварцовий резонатор на 32 кГц, роз’єм JTAG-інтерфейсу, посадкове місце для пайки мікроконтролера в корпусі TQFP64 або адаптера внутрісхемного емулятора.
Також на платі STK502 міститься рідкокристалічний індикатор (РКІ) зі 120 сегментами, що підключається до виводів мікроконтролера плоским 34-жильним кабелем, датчик температури (NTC-термістор) використовуваний у демонстраційній програмі "Вимір температури з виводом на РКІ", посадкове місце для пайки мікроконтролера. Роз’єм розширення для підключення зовнішнього РКІ, іменований "Segment pins from ATmega169", дублює порти A,C, D і G, для більш зручного підключення рідкокристалічного дисплея.
Рис.2.16. Плата розширення STK502
Комбінація STK500 і STK502 також дозволяє виконувати функції паралельного програматора для всіх мікроконтролерів у корпусах TQFP64, включаючи мікроконтролери з драйвером РКІ. Програмування в рівнобіжному режимі виробляється з використанням портів B і D при підвищеній напрузі, тому необхідно відключати Рк-дисплей від мікроконтролера для виключення виходу дисплея з ладу. При використанні портів A, C, D і G як порти вводу/виводу Рк-дисплей також повинний бути відключений.
Розроблювачі плати STK502 не передбачили можливість програмування в послідовному режимі мікроконтролерів у корпусах TQFP64, що не мають драйвер РКІ. Але, при необхідності, можна забезпечити режим послідовного програмування для цих мікроконтролерів. Це робиться невеликою зміною в з'єднанні роз’ємів SPROG (на платі STK502) і ISP6PIN (на платі STK500). Стандартно для забезпечення режиму послідовного програмування виробляється з'єднання виводу MISO і MOSI роз’єму ISP6PIN з виводами PB2 і PB3 мікроконтролера. Для послідовного програмування мікроконтролерів у корпусах TQFP64, що не мають драйвер РКІ, необхідно зробити з'єднання виводів MOSI і MISO роз’єму ISP6PIN з виводами PE0 і PE1 мікроконтролера.
У комплекті з платою STK502 поставляється мікроконтролер ATmega169V і диск AVR Software and Technical Library, до складу якого входить AVR Studio.