fix.org.ua

Добро пожаловать, Гость
Логин: Пароль: Запомнить меня

ТЕМА: Як прошити Atmega

Як прошити Atmega 11 мес. 4 нед. назад #6

  • fix
  • fix аватар
  • Не в сети
  • Администратор
  • Сообщений: 35
  • Репутация: 1
Останніми роками все частіше на радіолюбительських ресурсах можна зустріти цікаві розробки, що базуються на мікроконтролерах AVR Atmel. Для відтворення такого пристрою окрім звичної «залізної» складової (англ. - Hardware), необхідна ще й програмна (Software). Мікроконтролер по суті є мікрокомп'ютером, що включає в себе процесор, пам'ять та засоби обміну інформацією з апаратною частиною. Зазвичай автори матеріалів до опису власне апаратної частини (схема, креслення плати і т.п.) додають і програмну частину («прошивку»), адже без неї робота пристрою просто неможлива. «Прошивка» для AVR як правило доступна у вигляді скомпільованого файлу (.hex) або декількох файлів (.hex та .eep). Інколи автори програм також викладають у вільний доступ первинний програмний код так, щоб його можна було певним чином вдосконалити (наприклад шляхом обговорення на форумах або ж розробки на основі програмного коду власних версій програми). Оскільки робота з програмними кодами виходить за межі дано матеріалу, нижче ми обмежимося інформацією про те, як завантажити в мікроконтролер AVR вже готову програму.
Окрім власне файлів прошивки, знадобиться програматор, інформація про підключення контролеру, інформація про фьюзи.
Програматор
Програматор в даному випадку – це пристрій, який необхідний для підключення мікроконтролера до комп’ютера. З'єднання це може бути реалізоване за різними інтерфейсами (RS232 (COM-порти), LPT (порт принтера), USB). Програматор можна зробити власноруч, або придбати готовий. Вартість готових варіює в досить широких межах (від кількох $ до кількох сотень $). Програматор можна придбати у нас на сайті.

До більш складних, а відповідно й дорогих відносяться паралельні програматори, до більш доступних – послідовні (ISP– вsд англ. – insystemprogramming). Найпростішим варіантом саморобного ISP програматора є пристрій, що працює через інтерфейс LPT. По суті, в даному випадку програмуємий мікроконтролер просто приєднується безпосередньо до LPT (порту принтера), інколи через обмежуючі резистори (в мережі такий програматор можна знайти як «FBPRG» на англомовних ресурсах або «пять проводков» на російськомовних). Слід зауважити, що залежно від програмного забезпечення яке планується використовувати, міняється і порядок використання контактів LPT, через що подекуди виникають суперечності щодо правильності тієї чи іншої розпіновки. На рисунку нижче представлено варіант підключення для програми Ponyprog.

У випадку з програмою AVRDude відповідно слід використовувати такий порядок підключення: 7 – RST; 8 – SCK; 9 – MOSI; 10 – MISO; 18-25 – GND. Існують і інші варіанти з’єднання мікроконтролеру з LPT залежно від ПЗ.
Не зважаючи на простоту відтворення, такий спосіб програмування AVR має багато недоліків: 1) технічно застарів (LPT нині можна знайти тільки на дуже небагатьох комп’ютерах); 2) працює не з усіма комп’ютерами (залежить від контролера LPT на материнській платі); 3) довжина дротів має бути якнайменшою (не більше 20 см), через що мікроконтролер має фізично знаходитися за системним блоком; 4) при програмуванні часто виникають помилки, інколи виправити їх перешиванням неможливо, псуються контролери; 5) при помилках в підключенні і т.п. легко зіпсувати контролер LPT в комп’ютері.
Дещо стабільнішою є робота найпростіших COM-програматорів (наприклад, так званий «програматор Громова»), однак вони мають деякі спільні з LPT недоліки: дефіцит RS232 на сучасних комп’ютерах (особливо ноутбуках) та подекуди небажання працювати з віртуальними COM-портами утвореними за допомогою адаптерів.
Серед USB-програматорів AVR найдоступнішим є USBASP. На сайті розробника (fischl.de/usbasp/) можна знайти схему та прошивку USBASP. Однак програматор USBASP побудований на мікроконтролері Atmega8, що означає, що для самостійного збирання такого програматора знадобиться інший програматор. Цю проблему можна вирішити прошивши Atmega8 через LPT, або скориставшись чиїмось програматором. Також ми пропонуємо придбати набір для збирання програматору AVR USBASP. Набір включає плату, прошитий мікроконтролер та усі необхідні елементи.

Підключення мікроконтролеру до програматора USBASP здійснюється 5 дротами у випадку зовнішнього живлення мікроконтролера або 6-ма у випадку живлення від програматора. Доцільно використовувати саме другий варіант, тобто живлення на контролер подати з програматора. При цьому допускається внутрішньосхемне програмування AVR, коли контролер встановлений на плату або підключений до інших елементів, однак живлення має здійснюватися тільки з одного джерела.
Найкращим джерелом інформації щодо схем підключення того чи іншого мікроконтролеру є його технічний опис – «даташит» (від англ. datasheet– інформаційний листок).

При використанні AVR різних форм-факторів зручно використовувати макетну плату, тоді як при програмуванні великої кількості однакових AVR доцільно використати панельку з нульовим зусиллям, до якої припаяти шлейф для з’єднання з програматором.
Також можна придбати спеціальний адаптер


або придбати універсальний адаптер


Програмне забезпечення
В мережі є достатня кількість безкоштовних програм, що працюють з програматорами USBASP. Однією з найпоширеніших є AVRDude. Оскільки AVRDude є консольною і багато хто з сучасних користувачів комп’ютерів справедливо вважає це незручним або ж взагалі не знає як працювати з таким ПЗ, до AVRDude розроблено декілька графічних оболонок (наприклад SinaProg). Окрім графічних оболонок для AVRDude є і самостійні програми з графічним інтерфейсом для роботи з програматорами USBASP. Це, зокрема: Khazama та ExtremeburnerAVR. Також програматор USBASP підтримується програмним забезпеченням Arduino та іншими програмами.
Алгоритм завантаження прошивки у мікроконтролер є аналогічним при використанні будь-якої з наведених вище програм. Після з’єднання мікроконтролера з програматором, а згодом – з комп’ютером, необхідно в опціях ПЗ обрати тип під’єднаного контролеру. Далі застосовують одну з бажаних функцій: «Read» (зчитати з контролера прошивку) «Write»/«Burn» (записати в контролер прошивку) «Save» (зберегти прошивку, яка знаходиться в буфері на комп'ютер). При прошиванні контролера попередньо відкривають файл прошивки *.hex (в ПЗ він може бути означеним як FLASH) та за необхідності *.eep (в ПЗ - EEPROM). У загальному випадку для відкривання/зчитування/запису FLASH та EEPROM передбачені окремі пункти меню або графічні кнопки.

Ф'юзи
Тему так званих «ф'юзів» (від англ. fuses - запобіжники) ми обов’язково розглянемо в окремому матеріалі, оскільки вона зазвичай викликає найбільшу кількість запитань, тут зупинившись лише на загальній інформації. Ф'юзи (або ф'юз-біти) є окремими комірками пам’яті AVR, що не містять власне програми, проте відповідають за деякі налаштування мікроконтролера. Фьюзи є програмуємими комірками, тобто можуть бути змінені за бажанням користувача, однак особливість програмування даних комірок полягає в тому, що інколи, особливо для початківців, це може стати незворотнім процесом. Наприклад, зміною значень так званих «лок-бітів» (від англ. lock - замок) можна домогтися заборони на подальше програмування AVR, тим самим позбавивши себе можливості змінити прошивку або ж взагалі заблокувати непрошитий контролер. Часто виникають проблеми і з налаштуваннями інших фьюзів AVR, які роблять контролер непридатним до подальшого використання (принаймні без застосування спеціальних засобів відновлення).
Отже, на початковому етапі доцільно використовувати інформацію щодо фьюзів від авторів прошивок, уникаючи експериментів. Програми для роботи з програматорами USBASP мають різну реалізацію програмування фьюзів: можна змінювати кожну окрему опцію або ж ввести значення блоків (Highfuses, Lowfuses, Extendedfuses та Lockbits) у шістнадцятковій системі. Спосіб програмування обирають залежно від наявної інформації та знань.
Последнее редактирование: 11 мес. 4 нед. назад от fix.
Администратор запретил публиковать записи гостям.
Время создания страницы: 0.171 секунд
Работает на Kunena форум