
- •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.5. Плата розширення stk503
Мезонінова плата STK503 на сьогоднішній день, офіційно не представлена для широкого кола споживачів, призначена для підтримки багатовиводних мікроконтролерів у корпусах TQFP100 (без драйверу РКІ). Плата STK503, аналогічно вищеописаним продуктам, встановлюється в роз’єм розширення STK500 як мезонінова плата. На платі STK503 розміщені:
Панель з нульовим зусиллям (ZIF socket) для установки мікроконтролерів у корпусах TQFP100;
Два перетворювачі інтерфейсів TTL - RS232;
Кварцовий резонатор на 32 кГц для реалізації часів реального часу (Real-Time Clock, RTC);
Роз’єм JTAG-інтерфейсу для підключення внутрісхемного емулятора JTAGICE.
На відміну від плати STK501, що виконує аналогічні функції для 64-вивідних мікроконтролерів, на платі STK503 виведене більше число портів вводу-виводу, що обумовлено наявністю більшого числа портів вводу-виводу на 100-вивідних мікроконтролерах.
Рис.2.17.
Плата розширення STK503
Аналогічно платі STK501, плата STK503 містить посадкове місце під мікросхему ОЗП.
Відмінність полягає в тому, що тактування крім джерел тактового сигналу з плати STK500 і вбудованого 32 кГц кварцового резонатора, може здійснюватися також від високочастотного кварцу, встановлюваного в наявний на платі STK503 роз’єм. Вибір джерела виробляється апаратними перемикачами, установленими на платі.
Для реалізації інтерфейсу RS232, на платі є здвоєний перетворювач рівнів TTL - RS232. Виводи інтерфейсу RS232 виведені на 8-контактний роз’єм.
Комбінація STK500 і STK503 дозволяє виконувати функції паралельного і послідовного програматора для всіх мікроконтролерів у корпусах TQFP100. Можливо, виключення складуть мікроконтролери з драйвером РКІ.
Відсутність посадкового місця для пайки мікроконтролера в STK503 є відмінною рисою плати від інших представників лінійки мезонінових плат.
У комплект набору STK503, приблизно, буде входити мікроконтролер ATmega2560.
2.3.6. Плата розширення stk504
Аналогічно платі STK502, для підтримки багатовиводних мікроконтролерів у корпусах TQFP100 із драйвером РКІ, компанія Atmel випустила пристрій STK504, що встановлюється в роз’єм розширення STK500 у якості мезонінової плати.
Рис.2.18.
Плата розширення STK504
На платі встановлений розн’єм ZIF для установки мікроконтролера в корпусі TQFP100, рідкокристалічний дисплей на 160 сегментів. Дисплей, аналогічно STK502, підключається за допомогою плоского кабелю і може бути відключений при необхідності. Також може бути використаний зовнішній РК-дисплей.
Рис.2.19.
Набір сегментів 160 сегментного РКІ плати
STK504
Тактування мікроконтролера в STK504 може здійснюватися зовнішнім тактовим сигналом, що надходить із плати STK500, кварцового резонатора на 32 кГц, встановленого на платі STK504, а також від високочастотного кварцу, встановлюваного в наявний на платі STK504 сокет. Вибір джерела виконується апаратними перемикачами, встановленими на платі.
Додаткові порти (порт E, порт F, порт G, порт H, порт J) виведені на окремі роз’єми на платі STK504. На роз’ємі порту G, за замовчуванням, встановлений джампер, що з'єднує вивід 6 і вивід 8 роз’єму, що відповідає з'єднанню сигналу скидання (/RESET) мікроконтролера (PG.5) і сигналу скидання (/RESET), що надходить із плати STK500. При використанні внутрісхемного емулятора JTAGICE2 (буде описаний нижче) джампер повинен бути витягнутий, щоб не блокувалися сигнали скидання, що надходять з емулятора.
Комбінація STK500 і STK504 дозволяє виконувати функції паралельного і послідовного програматора для мікроконтролерів у корпусах TQFP64 із драйвером РКІ. Як і у випадку з STK502, варто не забувати відключати РКІ від портів вводу-виводу мікроконтролера під час програмування в паралельному режимі. Напруга живлення, подавана з STK500 на мікроконтролер повинне бути не нижче 4.5 В. При програмуванні в обох режимах, джампер, що з'єднує вивід 6 і вивід 8 роз’єму порту G, повинен бути встановлений.
У комплекті з STK504 поставляється мікроконтролер ATmega3290.