Хоча я хотів би зануритися в різні доступні методи програмування, у когось ще є. Ось навчальний посібник Діна Камери щодо методів програмування AVRFreaks, AVR :
Існує багато способів програмування мікроконтролерів AVR. Оскільки багато людей запитують про різні в той чи інший час, я подумав, що я їх окресля тут, щоб відповісти на їх питання швидко та ефективно. Пробачте мене, якщо я пропускаю метод або помиляюсь.
МЕТОД 1: У системному програмуванні (ISP)
Підтримується: Велика більшість AVR (див. Нижче повідомлення)
Підтримувані програмісти: AVRISP MKI / II, JTAG MKII, STK500, STK600, Dragon, AVRISP-клони, програмісти AVR910, AVRONE
У системному програмуванні - це, мабуть, найпоширеніший метод програмування спалаху, EEPROM, запобіжника та блоків для всієї лінії AVR. ISP може програмувати AVR з надзвичайно високою тактовою частотою (якщо припустимо, що цільовий AVR працює з високою частотою, а програміст його підтримує) і є методом вибору для майже всіх любителів AVR. На ринку є багато, багато клонів AVRISP та програмістів AVR910, окрім простих ключів, які роблять самі, які підключаються до паралельного порту вашого комп'ютера.
Останні нові конструкції dongle можуть використовувати послідовний порт комп'ютера, однак анекдотичні докази говорять про те, що цей метод є надзвичайно повільним через технічні обмеження.
ISP вимагає, щоб цільовий AVR працював із тактовою частотою, щонайменше, у чотири рази більшою, ніж тактова частота провайдера. Це загальна помилка та джерело плутанини для багатьох нових AVR.
МЕТОД 2: JTAG
Підтримується: Див. Довідку AVRStudio Tools для підтримки пристроїв MKI та MKII.
Підтримувані програмісти: JTAG-ICE, JTAG-ICE MKII, клони Dragon, JTAG-ICE, AVRONE, STK600 (тільки програмування)
Технічно JTAG - це система налагодження, а не метод програмування. Тим не менш, інтерфейс JTAG дозволяє програмувати AVR, який його підтримує.
JTAG - це системний інструмент налагодження, який дозволяє маніпулювати та перевіряти стан підтримуваного AVR, коли він працює в ланцюзі. JTAG дозволяє користувачеві в будь-який час зупинити виконання, маніпулювати внутрішніми регістрами AVR та багато іншого.
Офіційні блоки JTAG-ICE від ATMEL були замінені JTAG-ICE MKII, який підтримує новіший і більш широко підтримуваний протокол налагодження DebugWire від діапазону AVR, а також програмування методом ISP (див. Вище).
Клони JTAG-ICE доступні за низькими цінами, однак їх обмежена сумісність лише з декількома AVR обмежує їх корисність. Незалежно від цього, якщо ваш AVR підтримує інтерфейс JTAG, JTAG-ICE залишається дуже приємним та ефективним методом налагодження та програмістом.
МЕТОД 3: DebugWire
Підтримується: Багато менших AVR-програм, які
підтримуються: JTAG-ICE MKII, Dragon, AVRONE
Знову ж DebugWire - це налагодження, а не інтерфейс програмування, але його можна використовувати для завантаження програм у підтримувані AVR. Інтерфейс dW використовує один контактний штифт AVR (лінія / RESET) для всіх комунікацій, що робить його ідеальним для пристроїв AVR з низькою кількістю контактів.
МЕТОД 4: завантажувач
Підтримується: Більшість нових AVR-програм, що
підтримуються: N / A
Знову технічно це не метод програмування. Завантажувач - це невелика програма AVR, яка розташована у встановленому користувачем розділі звичайного спалаху. Завантажувачі використовують функції самовиправлення спалаху, доступні в новіших AVR, щоб дозволити AVR програмувати себе за допомогою програмних даних, завантажених із зовнішнього джерела. Завантажувачі можуть надсилати свої дані з будь-якого місця (наприклад, із зовнішньої флеш-пам’яті даних або SD-картки), однак найпоширеніший тип завантажувача спілкується з ПК через порт RSR-232 (серійний) AVR AVR.
Завантажувачі обмежені тим, що вони займають спалах простору (обмежуючи розмір спалаху, доступного додатку AVR), і вони не в змозі змінити запобіжники AVR.
Завантажувачі широко доступні в Інтернеті для завантаження, але вони страждають від проблеми "курка і яйця"; вам потрібен інший тип програміста, перерахований тут, щоб програмувати в завантажувачі насамперед. Зазвичай це вирішується шляхом побудови простого паралельного ключа для порту (див. Розділ ISP) або придбання AVR, який уже завантажений завантажувачем (наприклад, платою AVRButterfly).
МЕТОД 5: Паралельне програмування високої напруги (HVPP)
Підтримується: Більшість не TINY AVR (за винятком)
Підтримувані програмісти: STK500, STK600, Dragon, Homebrew Dongles, AVRONE
Паралельне програмування високої напруги - це метод програмування, який рідко застосовується через клопоту, який він потребує налаштування. Незважаючи на це, програмування HVPP зазвичай використовується для "воскресіння" AVR, запобіжники яких неправильно налаштовані за допомогою іншого методу програмування.
І STK500, і Dragon підтримують HVPP. Під час HVPP штифт цілі / RESET піднімається до незвичайно високого значення 12V, яке залучає внутрішню схему паралельного програмування. Штифт / RESET - єдиний штифт AVR (на AVR, підтримуваних HVPP), який можна безпечно підняти до цього рівня.
Ви можете зробити власний ключ HVPP, використовуючи онлайн-плани, наприклад, цей.
МЕТОД 6: Постійне програмування високої напруги (HVSP)
Підтримується: Багато TINY AVR (за винятком)
Підтримувані програмісти: STK500, STK600, Dragon, Homebrew Dongles, AVRONE
HVSP схожий на HVPP, за винятком того, що передача даних здійснюється послідовно, а не паралельно. Це альтернативний метод програмування, який застосовується для багатьох відеореєстраторів серії TINY, яким не вистачає шпильок для HVPP.
МЕТОД 7: ІПП
Підтримуються: XMEGA AVRs
Підтримувані програмісти: STK600, AVRONE, JTAG MKII, Dragon, AVRISP MKII
PDI - це новий інтерфейс програмування, заснований на протоколі debugWire, для лінії AVR з XMEGA. Наразі він не використовується на будь-яких інших 8-бітових мікроконтролерах AVR.
МЕТОД 8: ТПІ
Підтримуються: 6-контактні TINY AVR (ATTINY10 та ін.)
Підтримувані програмісти: STK600, Dragon, AVRISP MKII
TPI - це дуже крихітний інтерфейс програмування для новішої лінійки відеореєстраторів TINY з обмеженими контактами, як 6-контактний ATTINY10. Як і dW, TPI використовує лінію пристрою / RESET як частину комунікаційного інтерфейсу, але на цьому схожість закінчується. Оскільки у TINY AVR розмірів пінта відсутня схема налагодження на мікросхемі, протокол TPI використовує новий інтерфейс програмування з трьох контактів, у напівдуплексному протоколі. Оскільки лінію програму / RESET потрібно підняти до + 12 В для програмування, коли встановлений штифт RSTDSB пристрою, це наразі підтримується лише новішою платою програмування STK600.
Розділ про бонусні запитання!
Який найкращий метод?
Не існує універсального «найкращого» методу. Програмування ISP є простим і надзвичайно популярним, однак всі вищеперелічені методи будуть працювати. Два режими програмування високої напруги (що стосується вашого пристрою) є найбільш багатими функціями, оскільки вони дозволяють ремонтувати AVR, у якого неправильно налаштовані запобіжники. Тим не менш, ці методи - це болісно налаштувати, отже, причина більшості користувачів з ІПО.
Я зробив паралельний порт-ключ. Чи можу я використовувати його з AVRStudio?
Боюся, що немає. AVRStudio не може взаємодіяти з будь-якими «німими» ключами - для розшифровки протоколу зв'язку, який він надсилає, потрібен розумний пристрій програмування, що містить сам мікроконтролер. Прості ключі без мікроконтролера повинні бути "битовими" (тобто відповідні сигнали, змодельовані через ключ до комп'ютера).
Тож мій донгл тоді марний?
Ні. Ви все ще можете програмувати через домашній ключ, використовуючи сторонній програмний інструмент програмування. AVRDude - хороша, відома, безкоштовна утиліта командного рядка - і вона входить до комплекту WinAVR.
Які мої варіанти, якщо я хочу, щоб мій програміст працював з AVRStudio?
Виберіть програміста, який використовує підтримуваний AVRStudio протокол. Це може бути простий протокол "AVR910" (застарілий) або власна реалізація протоколу, який використовується STK500 / AVRISP. Зауважте, що цим програмістам потрібен мікроконтролер, що призводить до ситуації лову 22. Це може бути вирішено шляхом попередньо запрограмованого AVR програміста під час покупки відповідною прошивкою або попереднього програмування AVR завантажувачем.
Гаразд, я хочу використовувати завантажувач. Як я вперше потрапляю туди ?!
Щоб використовувати завантажувач в AVR, спочатку потрібно запрограмувати завантажувач. Якщо у вас немає існуючого програміста (навіть для початкового програмування вистачить навіть простого тупого ключа), ви можете придбати AVR, попередньо запрограмовані за допомогою завантажувач від кількох постачальників.
Atmel також виготовляє демонстраційну плату Butterfly, до якої MEGA169 AVR поставляється попередньо завантаженим завантажувачем, сумісним з AVR-Studio.
Довідка! Я заплутався з запобіжниками і підключив AVR під час використання провайдера!
Найпоширенішою помилкою є зміна запобіжників вибору годинника на недійсну установку. Спробуйте поставити зовнішній годинник на контакт XRAL1 AVR і подивіться, чи це допомагає.
Якщо цього не можливо, скористайтеся одним із методів високої напруги. Вони виправлять будь-які неправильні конфігурації, включаючи ті, що включають джерело тактових годин, оскільки високонапружені методи надають AVR власний годинник для програмування.
Як я взаємодію зі своїм програмістом?
Яке програмне забезпечення ви використовуєте для взаємодії зі своїм програмістом, залежить від типу програми, який ви використовуєте.
Прості "німі" ключі потребують програмного забезпечення сторонніх виробників, наприклад, PonyProg або AVRDude. Це може бути командний рядок або інструменти графічного інтерфейсу - огляньте в Інтернеті, і ви вподобаєте його відповідно до ваших потреб.
Програмісти та завантажувачі, засновані на протоколі AVR910, можуть використовуватися в межах AVRStudio. У меню Інструменти виберіть параметр "AVRProg", щоб відкрити екран GUI для взаємодії з вашим програмістом. Як альтернатива, сторонні інструменти, такі як AVRDude, також сумісні з AVR910.
Офіційні інструменти тісно інтегровані в AVRStudio, особливо у випадку варіантів налагодження (JTAG / Dragon / тощо). У меню інструментів AVRStudio виберіть підменю «Програму AVR ...» та натисніть на пункт «Підключити». У новому вікні виберіть інструмент та його інтерфейс підключення та натисніть кнопку ОК.
Як і у випадку з тупими ключами та програмістами AVR910, офіційні інструменти також можуть використовуватися з програмним забезпеченням сторонніх програм.
(C) Дін Камера, 2009. Усі права захищені. Не для відтворення на будь-якому веб-сайті, окрім AVRFreaks.net без попереднього явного дозволу.