Використання завантажувача Bascom-AVR
У мікроконтролерів AVR є така корисна фішка як вміння працювати з Bootloader'ом, завдяки якому перепрошити мікроконтролер можна за стандартним UART інтерфейсу, без використання програм (але щоб прошити bootloader програматор все ж буде потрібно). Bootloader завантажується в спеціальну область флеш пам'яті і спрацьовує тоді коли мікроконтролер тільки починає працювати (при подачі живлення або після скидання). Якщо, якщо активні bootloader, в буфер UART потрапить байт ініціалізації, завантажувач активізується і починає записувати ці дані в пам'ять мікроконтролера, а по завершенню запису запустить щойно записали програму.
Існує велика кількість готових загрузчиков, та ж популярна зараз Arduino має вбудований Bootloader, завдяки якому відбувається швидке завантаження скетчів в пам'ять МК.
Bascom-AVR, теж не відстає від конкурентів :) і для цього є вже готові Bootloader'и для більшості мікроконтролерів серії Mega.
Зараз як раз і розглянемо bootloader для Bascom-AVR і спробуємо за допомогою нього прошити мікроконтролер. А в якості узгоджувального ланки використовується перетворювач USB-UART на мікросхемі FT232RL.
Насамперед вибираємо мікроконтролер, в якому хочемо використовувати завантажувач. У мене це нафарширована ATMega64a. Пам'яті в ній багато і тому вирішив завантажити туди бутлоадер, з неї не убуде :)
Тестова схема нижче, крім мікроконтролера і перетворювача в схемі присутні світлодіод, кварц на 16 МГц і кнопка скидання
Зібрана схема у мене виглядає так (про цю хустці я напишу трохи пізніше)
Отже, отримавши прошивку буту з потрібними настройками, залишається тільки завантажити його в мікроконтролер. Це робиться стандартним способом - за допомогою програматора :)
По-друге, необхідно правильно налаштувати фьюз - виставити розмір завантажувача "Boot Flash section Size" (для ATMega64 розмір становить 1024 слів) і запрограмувати фьюз "Boot Reset Vector". Тільки після цього наш завантажений бутлоадер Будера стартувати першим при запуску мікроконтролера.
Розмір завантажувача прописаний у файлі бутлоадер, тому вибирайте в залежності від використовуваного типу мікроконтролера.
Скрін з налаштованими фьюз для ATMega64 привів нижче (в Khazama AVR Programmer). Тут до того ж вибрано тактирование від зовнішнього кварцового резонатора.
Після всього цього наш bootloader готовий до роботи!
Тепер потрібно налаштувати ПО на боці комп'ютера. Відкриваємо Bascom-AVR і заходимо в налаштування у вкладку Programmer. У списку вибираємо потрібний нам тип програматора - MCS Bootloader.
У цій же вкладці вибираємо номер COM порту (у мене він під номером 15) і швидкість з'єднання. Тут я залишив все по умолчаніяю - 38400 бод.
Тепер необхідно відкрити вкладку MCS Loader і поставити величину завантажувального сектора, що відповідає тому значенню, яке виставили в прошивці бутлоадер (в моєму випадку +1024 слів)
Інші налаштування мало цікаві, за винятком пункту "Reset via DTR". Ця галочка дозволяє автоматично смикати ногу Reset на мікроконтролері, якщо підключити її до висновку DTR на перетворювачі. У мене це не реалізовано тому при прошивці кожен раз буду натискати на кнопку Reset вручну :) Але для повного щастя можна застосувати цю фічу.
Ви зберегли, можна приступати до завантаження програми через бутлоадер. Для прикладу, завантажимо в контролер просту програмку миготіння світлодіода на нозі PortD.7
$ Regfile = "m64def.dat"
$ Crystal = 16000000
Config Portd. 7 = Output
Led Alias Portd. 7
компілюємо (F7) і натискаємо F4 і тут же з'явиться вікно завантажувача
Як я вже писав, він очікує коли стартує завантажувач в мікроконтролері, тому для початку заливки файлу, необхідно скинути мікроконтролер, натисканням на кнопку Reset. Після натискання відбудеться завантаження нової програми. І тут, треба зізнатися, був приємно здивований, тим з якою швидкістю відбувається завантаження програми - "літає" навіть швидше ніж на юсбаспе і всяких STK200.