- Мікроконтролери ATmega328P і ATtiny45 сімейства AVR
- Вибір фізичних программаторов під AVR мікроконтролери
- Підключення мікроконтролера і програмування
- Мікроконтролери: програмування утилітою AVRDUDE
- Програмування мікроконтролера ATmega8
- Ресурси програмування ATmega8
Фірмою «Atmel», поряд з величезним асортиментом чіпів, випускаються два мікроконтролера, що здобули особливе визнання в суспільстві електронників. Мікроконтролер ATmega328P і інший продукт компанії «Atmel» - чіп ATtiny45, обидві популярних мікросхеми дещо відрізняються одна від одної. Проте, щоб запрограмувати мікроконтролер ATmega328P або прошити чіп ATtiny45 програмним кодом, застосовується практично однаковий схематичний і програмний підхід. Розглянемо докладніше технічні способи: програмування ATmega328P і ATtiny45, а також необхідне для прошивки зазначених мікроконтролерів програмне забезпечення.
вміст публікації
Мікроконтролери ATmega328P і ATtiny45 сімейства AVR
програмований чіп ATmega328P представлений 28-контактним мікро контролером, що входять в сімейство AVR. Мікроконтролер добре знайомий власникам конструктора « Ардуіно », Де використовується в якості основного компонента електронного набору.
Однак мікроконтролер ATmega328P здатний робити куди більше, ніж вичавлює з цього чіпа популярний електронний конструктор «Arduino». Доказів того маса, варто лише подивитися фірмовий даташит (datasheet) мікроконтролера ATmega328P.
Mini Nano V3.0
Мікроконтролери сімейства AVR знайшли найширше застосування в практиці конструювання електронних пристроїв різної складності. Серія ATMega і ATiny часто вибираються для апаратного програмування
У тісній зв'язці з «братом по крові» виступає інша мікросхема - ATtiny45. Але тут у наявності явна відмінна риса: мікроконтролер ATtiny45 має 8-контктний форм-фактор.
Мікросхема ATtiny45 володіє багатьма функціями, властивими AT328P. Однак функціональність ATtiny45 дещо обмежена через малого числа контактів введення-виведення.
Традиційно програмування ATmega328P і ATtiny45 здійснюється через послідовний периферійний інтерфейс (SPI). Контактна шина на 3 провідника, плюс «земля». По шині даних слідують сигнали:
- Вхід прийому даних (MOSI)
- Вихід передачі даних (MISO)
- Вхід синхронізації прийому (SCK)
Сигнал SCK (SCLK) генерує ведучий пристрій (програматор). Цим сигналом забезпечується синхронна прийом / передача між ведучим і веденим пристроями. По суті, інтерфейс SPI слід розглядати «синхронної» комунікаційної шиною.
Вибір фізичних программаторов під AVR мікроконтролери
Існує маса программаторов, якими є програмувати ATmega328P і ATtiny45. Наприклад, професійна розробка «Atmel-ICE» від рідної чіпам компанії «Atmel».
Фірмовий програматор вважається кращим з усіх, придатних прошивати AVR і інші мікросхеми. Китайською AliExpress можна знайти за ціною від 5000 руб. і вище.
ARDUINO UNO R3
AVR Pocket Programmer: 1 - вхідний інтерфейс USB; 2 - ISP колектор; 3 - вихідний інтерфейс ISP; 4 - буферні елементи 74АС125; 5 - перемикач режиму харчування; 6 - основний чіп ATtiny 2313
Для любителів-електронників цей варіант фінансово обтяжливий. Тому логічним бачиться більш простий вибір - USB програматор «AVR Pocket Programmer».
Раз в п'ять дешевше професійної розробки «Atmel», цей девайс є купити, наприклад, тут . У продажу є інші, більш дешеві програматори (від 200 руб.), Але не перевірені на практиці.
На крайній випадок нескладно зібрати програматор «AVR Pocket Programmer» своїми руками. Принципова схема пристрою побудована на чіпі ATtiny2313. Зовнішні елементи - лише кілька резисторів, стабілітронів, світлодіодів .
HiLetgo 3pcs
Принципова схема програматора AVR Pocket Programmer - досить проста, цілком доступна для складання пристрою програмування своїми руками
Сигнальні лінії (MICO, MOSI, SCK) бажано (але не обов'язково) буферізіровать. Тому слід доповнити схему буфером, наприклад, використовувати мікросхему 74AC125.
Такий буфер, до речі, застосовується на фірмовій збірці. Не виключається і транзисторний варіант буфера.
Для роботи схеми програматора буде потрібно драйвер під USB . Також може знадобитися програмний продукт Zadig , Універсальний інсталятор під Windows для установки загальних драйверів USB ( версія під Windows 7 і вище ):
- WinUSB
- Libusb-Win32
- Libusb0
- LibusbK
Прошивка і утиліти для «AVR Pocket Programmer» знаходяться тут . Драйвер програматора переважно ставити в систему Windows до підключення фізичної схеми до ПК.
Підключення мікроконтролера і програмування
Мікроконтролери AVR програмуються через інтерфейс SPI за допомогою маршрутизації сигналів через шість ліній:
- VCC (напруга живлення),
- GND (сигнальна земля),
- RST (програмний скидання),
- MOSI (прийом даних),
- MISO (передача даних),
- SCK (сигнал синхронізації).
Для маршрутизації всіх зазначених сигналів між пристроями, як правило, використовується один з двох стандартизованих роз'ємів:
- 6-контактний роз'єм (2 × 3).
- 10-контактний роз'єм (2 × 5).
Роз'єми з'єднуються з платою програматора і програмованим пристроєм через шлейф-кабель. фірмова плата програматора «AVR Pocket Programmer» комплектується всіма необхідними аксесуарами.
ATTINY84A-PU
Два типи контактних роз'ємів інтерфейсу ISP застосовні до використання при роботі разом з інструментом програмування
На фірмовій платі програматора присутній перемикач режиму харчування. Якщо перемикач знаходиться в положенні «Power Target», плата запитана напругою 5В від USB.
Інакше, в положенні перемикача «No Power», харчування на контакті 5В відсутня. Цей варіант - «No Power», використовується для програмування чіпів з малим годує напругою (3,3 або 1,8 В).
Мікроконтролери: програмування утилітою AVRDUDE
утиліта AVRDUDE - це інструмент для командного рядка Windows. Щоб застосувати цей інструмент, потрібно запустити «командний рядок» Windows (Пуск -> Виконати). Потім рекомендується перевірити готовність утиліти введенням команди:
avrdude -c usbtiny -p atmega328p
Команда передбачає наявність підключеного до системного роз'єму програматора мікроконтролера ATmega328P. Для чіпа іншій серії команда, відповідно, дещо зміниться.
Так, для мікроконтролера ATtiny45 рядок буде виглядати наступним набором:
avrdude -c usbtiny -p t45
Якщо схематично підключення програматора і програмованої мікросхеми в нормі, утиліта видасть приблизно наступний термінальний текст:
Arduino TE359
Стандарти виготовлення мікроконтролерів припускають впровадження ідентифікаторів. При першому запуску утиліта визначає цей ідентифікатор
Ця базова команда утиліти дозволяє ідентифікувати підключений мікроконтролер AVR. Інструмент AVRDUDE в процесі перевірки читає ідентифікатор чіпа.
Ідентифікатори програмованих мікросхем відрізняються в залежності від типу AVR. Той же мікроконтролер ATmega328P ідентифікується як 0x1E950F, що і зазначено у вікні видачі.
Наступним кроком, коли перевірено робочий стан схеми, можна слідувати далі - читати і записувати програмний код за допомогою утиліти AVRDUDE.
Частина пам'яті чіпа, яка зазвичай прошивається даними, це Flash - незалежна область, де зберігаються програми.
Прошивку Flash-пам'яті виконає команда:
avrdude c usbtiny p atmega328p U flash: w: test.hex
або для варіанту з ATtiny45:
avrdude c usbtiny p t45 U flash: w: test.hex
Примітка: ім'я файлу «test.hex» тільки в якості прикладу.
Процедура запису Flash-пам'яті вимагає деякого часу. Дещо більше, ніж при читанні даних. При цьому рядок стану командного терміналу завжди змінюється при читанні, запису, перевірці пристрою.
GPS NEO-6M
Приблизно такий виглядає послідовність читання записи пам'яті мікроконтролера утилітою в термінальному вікні програмного інструменту
Опція «U» команди AVRDUDE управляє читанням і записом пам'яті мікропроцесора. Цією опцією користувач вказує на роботу з флеш-пам'яттю.
Додатково символом «w» вказується функція запису і слідом через двокрапку вказується ім'я (і розташування) файлу (в прикладі test.hex), вміст якого потрібно записати в пам'ять.
Опція «U» також використовується для читання вмісту пам'яті AVR. Наприклад, наступна команда дозволить вважати вміст пам'яті чіпа AVR і зберегти в файлі під назвою «test.hex»:
avrdude c usbtiny p atmega328p U flash: r: test.hex: r
або для варіанту з ATtiny45:
avrdude c usbtiny p t45 U flash: r: test.hex: r
Інструмент підтримує роботу тільки з файлами, що мають розширення «* .hex»!
Прочитати розгорнуто про утиліту програмування і застосовуються в процесі командах можна на цьому блозі .
Програмування мікроконтролера ATmega8
Практика електронників (початківців і вже досить досвідчених) відзначає часте користування ще одним чіпом з серії AVR, що має назву даташит « ATmega8 ».
Незважаючи на пристойний «вік» з моменту свого народження, ця мікросхема залишається не менш популярною, ніж згадані вище мікроконтролери.
STM32F103C8T6
Завдяки цій мікросхемі вдається збирати електронні пристрої нерідко унікальні за своїми технічними можливостями
Форм-фактор: 28-контактний (PDIP) або 32-контактний (TQFP), причому 23 контакту з 28 - це лінії введення / виводу загального призначення.
Для живлення мікросхеми буде потрібно стабілізований джерело 5В, а для зручності використання рекомендується застосувати колодку (сокет) на 28 контактів.
Щоб зрозуміти ази процедури програмування, досить запрограмувати, наприклад, функцію включення / вимикання світлодіода.
Для вирішення завдання потрібно приєднати електронний елемент - світлодіод, до будь-якого контакту введення / виведення мікроконтролера ATmega8.
Наприклад, вибрати 28 контакт, позначений на схемі «PC5», що входить в 7-контактний набір PC0 - PC6 (порт C). Слід зазначити: згідно зі схемою ATmega8, є також інші набори контактів, що мають відношення до порту B (PB0-PB7) і порту D (PD0-PD7).
Ресурси програмування ATmega8
Потрібно підготувати програмний код для прошивки мікросхеми. Буде потрібно компілятор мови програмування «C». Відповідно, необхідний також програматор під завантаження скомпільованої коду в пам'ять мікроконтролера.
Як компілятора звичайно використовується фірмове програмне засіб «Atmel Studio 7.0» ( установник онлайн ). Для прошивки мікросхеми ATmega8 знову ж вдало виступає утиліта AVRDUDE.
PowerUp X Fpv
Заставка фірмового компілятора програмного коду від компанії «Atmel». Потужний засіб, необхідне для створення унікальних дампов
Далі покроковий процес програмування можна описати таким чином:
- Запускається компілятор «Atmel Studio 7».
- У меню вибрати «Новий проект» (New Project) і далі «AVR GCC».
- Потім вказати місця розташування збереження проектного файлу.
- Перейти «Далі» (Next) і вибрати зі списку симуляторів ATmega
- Завершити кнопкою «Finish» після чого можна писати програмний код.
Перша нитка програмного коду:
#include <avr / io.h>
Функція Include включає системну бібліотеку в проект, забезпечуючи доступ до основних функцій введення / виводу і макросам.
int main ()
Другий рядок вказує точку входу в програму користувача. Звідси програма користувача стартує.
Далі необхідно позначити висновок порту C. В даному випадку - «PC5». Для цього використовується спеціальний регістр DDRC:
DDRC = 0x20;
Значення регістра 0x20 задає цільову «1» для контакту «PC5», відповідно до двійкового поданням. Тим самим користувач відкриває дію на активацію контакту «PC5».
Наступний крок, рішення безпосередньо поставленого завдання - включення і виключення світлодіода виконанням коду. Якщо потрібен нескінченний цикл, рішення може бути таким:
Найпростіший програмний код для мікроконтролера ATmega8, які змушує мерехтіти підключений до мікросхеми світлодіод
Завершальний етап компіляції коду вибір опції меню «Збірка» (Build). В результаті «Atmel Studio 7» створить файл з розширенням .hex, з ім'ям, зазначеним користувачем. Наприклад: «test.hex». Залишиться тільки записати програмний код в пам'ять мікроконтролера за допомогою прошивки.