Мікроконтролери AVR для початківців. Частина 3 - робота з CodeVision AVR
В попередній частині статті я розповідав про прошивку МК за допомогою програми PonyProg, тепер розповім, як прошити за допомогою CodeVision AVR (далі CVAVR). Чесно кажучи, робота в програмі не сильно відрізняється від PonyProg.
Для початку можете мікроконтролер поставити в панель програматора та підключити його до LPT порту, потім подайте живлення.
Запускаємо програму CVAVR
1) Спочатку нам потрібно налаштувати порт, заходимо в меню Settings -> Programmer.
Відкриється вікно, всі налаштування виставляємо як на малюнку нижче
2) Натискаємо ОК, далі заходимо в меню Tools -> Chip Programmer
Відкриється наступне вікно:
Нічого зайвого в цьому вікні не чіпаємо, галочки не ставимо і нічого не перемикаємо.
3) Вибираємо потрібний нам мікроконтролер з випадаючого меню, я вибрав ATmega8. Якщо у вас в назві мікроконтролера після ATmegaX стоїть літера, наприклад V або L, то в списку вибирайте такий же МК, з такою ж літерою.
4) Тепер нам потрібно відкрити файл прошивки, в цьому вікні натискаємо File -> Load FLASH
5) Відкриється вікно, де потрібно буде вибрати файл прошивки з розширенням .hex, до речі, не забудьте внизу з випадаючого меню "Тип файлів" вибрати цей тип файлу.
6) Файл EEPROM вибираємо точно так само, для цього натискаємо меню File -> Load EEPROM, розширення цього файлу .eep, якщо до вашого проекту такий файл не додається, значить потрібно прошивати тільки FLASH т.е. .hex.
Майте на увазі, що процеси прошивки програми, фьюзів
і ПЗУ (EEPROM) це самостійні окремі процедури.
І рекомендовано спочатку шити програму, потім ПЗУ, потім фьюзи, в принципі, що у нас і відбувається, коли ми завантажуємо всі файли для прошивки, і виставляємо фьюзи в вікні.
7) Отже, файли прошивки ми завантажили, тепер нам потрібно виставити фьюзи, для мого проекту фьюзи наступні: BOOTSZ1, BOOTSZ0, SUT1, CKSEL3, CKSEL2, виставляємо їх.
8) Потім ставимо галочку Program Fuse Bit(s), якщо ви не поставите галочку – фьюзи не будуть записуватися.
Щоб перевірити, чи бачить наша програма програматор, підключений до LPT порту, натискаємо кнопку Reset Chip, на програматорі повинні мигнути світлодіоди читання/запису. Якщо світлодіоди не мигнуть, значить нам потрібно виконати операції після пункту 6, описані в попередній частині статті.
9) Тепер можна прошити МК, натискаємо кнопку Program All, і почнеться процес прошивки.
Якщо ви завантажували тільки файл прошивки FLASH, .hex, то під час прошивки програма запропонує завантажити файл EEPROM, натискаємо NO, т.е. НІ.
Після чого пробіжать ще 2 смуги і процес прошивки завершиться
Під час прошивки МК не можна вимикати або перезавантажувати ПК!
Тепер можете перевірити МК, поставивши його в панель вашого пристрою. Якщо ви хочете записати іншу прошивку на цей же МК, нову прошивку можна записати поверх старої, або ж стерти спочатку стару, потім записати нову, як вам зручніше, різниці особливо немає.
11) Щоб стерти дані з МК натискаємо Program -> Erase Chip.
В даній програмі можна прочитати дані FLASH або EEPROM з МК, або переглянути Lock біти, встановлені Fuse біти. Все це в меню Read (зчитати).
Рішення деяких проблем з AVR
З різними програматорами і різними програмами виникають різні помилки, але деякі помилки між собою дуже схожі і усуваються однаково. По-перше, мікроконтролери підключайте строго до вказаних виводів: RESET, VCC, GND, MOSI, MISO, SCK. Якщо сплутаєте виводи, або забудете припаяти один з контактів, МК не прошьеться. Випадково МК в панель можна поставити сплутавши виводи, т.е. задом наперед, від цього МК не згорить, але й не прошьеться, звичайно, теж. Нагадую ще раз, що у деяких МК, наприклад, в ATmega 64 і 128 виводи MOSI і MISO не застосовуються для ISP програмування, замість них виводи MOSI підключають до ніжки PE0, а MISO до PE1. Напруга живлення не повинна бути нижчою, ніж потрібно, інакше МК не буде програмуватися, програми будуть видавати помилки про те, що не можуть виявити МК.
Записувати сторонні програми, наприклад, програму, призначену для ATmega8 в ATmega48, не можна. Буває, що ви запрограмували МК і файли прошивки видалили з комп'ютера, а знайти прошивку, щоб прошити інший МК, не можете знайти. У таких випадках просто зчитуєте програму з мікроконтролера, наприклад, за допомогою CVAVR і зберігаєте її на ПК, потім цією прошивкою прошиваєте інший МК.
Якщо ви випадково запрограмували якийсь фьюз, після чого МК заблокувався, згадайте, що це був за фьюз, деякі МК з неправильно зашитими фьюзами вдається відновити, є кілька способів, як це зробити. На К155ЛА3 можна зібрати генератор, щоб відновити МК з запрограмованим RSTDSBL, якщо ви виставили фьюзи на роботу від зовнішнього генератора, подаючи сигнал на вивід XTAL1, деякі вміють так відновити МК. Також фьюзами можна виставити тактування від зовнішньої RC ланцюга. У такому випадку доведеться зібрати RC ланцюг, щоб знову запустити МК. Є ще фьюзи DWEN, SPIEN..., встановивши які, ви відключите можливість користуватися ISP програматором, тут допоможе тільки паралельний програматор, інші програматори (наприклад, тритон) або пристрої, які зустрічаються в інтернеті: наприклад цей, або ATmega Fusebit Doctor, цей пристрій я збирав, але чомусь він не запрацював належним чином, плата все ще валяється десь у ящику, колись знову потрібно буде взятися за нього. Чесно кажучи, у мене досі валяються три заблокованих мікроконтролера, два меги48 і одна мега8, одного разу мегу 8, яка перестала визначатися в програматорі PonyProg (працює через COM порт), я відновив, зібравши програматор STK200. Притом, знаєте, мій перший куплений мікроконтролер я прошив з першого разу, і він до сих пір працює у мене в лабораторному блоці живлення.