Раніше я писав, що велику і дорогу Arduino Uno можна замінити на малесенький і дешевий мікрочіп Atmega328 або навіть Atmega8
Я покажу як прямо з середовища програмування Arduino прошити мікроконтролери Atmega328 і Atmega8. Перший у мене є в DIP корпусі, а другий в TQFP.
Для програмування я використовую програматор USBasp. Купив його на ebay.com. коштує він в межах 150р.
Перша проблема з якою зіткнуться користувачі Windows8 і Windows10 - установка драйвера для USBasp.
Проблема в тому, що ці операційні системи просять, щоб у драйвера була якась цифровий підпис, а у драйверів для USBasp на сьогоднішній день її немає. Проблема вирішується відключенням перевірки цих цифрових підписів. Для цього перезавантажуємо комп'ютер, натиснувши клавішу Shift. З'являється екран, на якому вибираємо "Діагностика"
Далі - "Додаткові параметри"
Тут варто пояснити значення цього резонатора.Скорее всього в купленому вами микроконтроллере виставлені настройки (fuses) на роботу від зовнішнього тактового генератора, тобто від кварцу. Тому, що б його прошити, потрібно що б він був підключений до цього самого кварцу. Для перепрошивки кварц можна взяти будь-який попався вам під руку. Я коли вперше перепрошивати просто випаяв його з якогось зламаного пристрої, ось він маленький на фото.
Його вистачило що б мікроконтролер перепрошити. Якщо ж ваш мікроконтролер спочатку налаштований на роботу від внутрішнього тактового генератора, то для прошивки кварц вам не потрібен, можна обійтися і без нього.
Для того, що б можна було прошивати мікрочіп прямо з середовища розробки Arduino, потрібно залити на чіп ардуіновскій завантажувач. Для цього скористаємося програмою avrdude і онлайн конструктором загрузчиков для Ардуіно. На сторінці онлайн конструктора загрузчиков переходимо до самого низу і бачимо конструктор
1. Вибираємо "Внутрішній генератор" якщо не хочемо використовувати кварцовий резонатор, або вибираємо "Зовнішній генератор" якщо хочемо збільшити швидкість роботи чіпа.
2. Вибираємо модель мікроконтролера (в нашому випадком Atmega328)
3. Натискаємо "Створити HEX"
З'являється таке вікно:
Перше що ми робимо - завантажуємо наш завантажувач у вигляді hex файлу. Якщо конструктор з якоїсь причини не працює, можна викачати завантажувач для atmega328 для внутрішнього генератора тут.
Нижче ми бачимо блок файлу boards.txt для Arduino IDE. Я довго намагався підключити цей блок, що б в середовищі Ардуіно з'явився вибір плати, але мені це чомусь не вдалося, в результаті обійшовся без цього.
Ще нижче ми бачимо підказку як залити завантажувач через програму avrdude і програматор USBasp. Я роблю так:
-Підключаю програматор до комп'ютера через USB.
-Копіюю HEX файл в папку avrdude
-Створюю bat файл в папці avrdude і копіюю в bat цей рядок
avrdude -c usbasp -p atmega328p -U flash: w: a328p_8MHz_e2_de_5.hex -U lfuse: w: 0xe2: m -U hfuse: w: 0xde: m -U efuse: w: 0x5: m
@echo This batch file
-Запускаю bat файл. Якщо ліньки створювати bat файл, можете завантажити його тут.
Якщо все зроблено правильно, ви побачите щось подібне
Це означає, що все пройшло добре і на наш мікроконтролер залився завантажувач Ардуіно. Тепер ми зможемо прошивати його прямо з середовища програмування Arduino.
Якщо ви десь накосячілі і щось зробили неправильно, можете побачити таке повідомлення:
Тут можуть бути різні причини:
-Можливо ви не правильно з'єднали програматор з мікрочіпом. Перевірте з'єднання.
-Можливо ви не підключили кварцовий резонатор, а ваш мікроконтролер налаштований на роботу від нього. Тоді підключіть будь кварцовий резонатор, хоч з китайських наручних годинників Випаяти.
-І третій варіант про який я не сказав, але з яким теж зіткнувся, коли порушували Atmega8. На якомусь форумі мені підказали, що мікрочіп працює на зниженій частоті і щоб прошити його, потрібно на программаторе замкнути перемичку JP3. Що власне мені і допомогло.
Якщо проблем у вас не виникло і завантажувач Arduino успішно записався на чіп, то переходимо до прошивці чіпа через середу програмування Arduino.
По-перше, якщо ви в онлайн конструкторі завантажувача вибирали "Внутрішній генератор", то кварцовий резонатор можна прибрати зі схеми.
Відкриємо середу розробки Arduino і запустимо класичний приклад моргання светодиодом:
Бачимо, що в прикладі вказано цифровий вихід 13. На мікрочіпі він відповідає ніжці 19
Оскільки цей висновок у нас зараз підключений до программатору під висновок SCK, то змінимо в програмі 13 висновок на 5.
І підключимо до нього світлодіод.
Вибираємо в Інструментах плату, чіп і програматор