Программирование микроконтроллеров AVR под LINUX: Нулевой уровень
Вводная статья. Она описывает используемый мною программатор, его положительные и отрицательные стороны, показывает общие принципы подключения программатора к микроконтроллеру.
Для начала мой рабочий комп 🙂
DNS Porto [0133642]
Процессор: AMD E-350, 2 х 1600 МГц
Оперативная память: 4 Гб
Графика: AMD Radeon HD 6310M
Диски: SSD 64 Гб + ESATA HDD 320 Гб
Операционная система: Linux Mint 15 (Mate)
Для прошивки микроконтроллеров был куплен USBasp программатор
Сайт изготовителя: www.betemcu.cn
Страничка продавца: www.aliexpress.com/…
Стоимость покупки: 5.2$
Спаян очень аккуратно. В комплект входит: собственно плата программатора, разборный пластиковый корпус, 65см шлейф с 10-пиновыми разъемами, плата-переходник 10/6 пин. Может питать программируемый микроконтроллер от 5В или 3В.
Программатор собран практически по классической схеме от Thomas Fischl, но есть небольшие отличия и дополнения.
(скачать схему USBasp_schematics.jpg)
Минусы данного программатора:
— Перемычки JP3 (Slow SCK) на плате не предусмотрено. 25-я ножка микроконтроллера просто никуда не подключена. Наличие данной перемычки порой весьма желательно, см. ниже.
— Перемычка JP2 (Self Programming) хоть и предусмотрена, но не распаяна на плате. Она представлена двумя отверстиями чуть выше светодиодов. Поэтому для перепрошивки МК самого программатора необходимо или установить этот джампер, или временно чем-либо надежно замыкать эти отверстия.
— Использована модифицированная прошивка МК (по сравнению с Thomas Fischl), которая не всегда корректно работает с avrdude — утилитой для прошивки МК.
— Рекомендуемая китайцами утилита Progisp якобы полностью поддерживает программатор, умеет автоматически менять частоту SCK (видимо из этих соображений китайцы и убрали JP3), но увы, Progisp рассчитан на запуск из-под windows.
Плюсы программатора:
— Классическая схема и возможность перепрошивки МК в программаторе различными альтернативными прошивками.
— Установлены защитные резисторы 100 Ом перед ножками MOSI, MISO, SCK, RESET выходного ISP разъема
— Установлен ращитный предохранитель 500мА, защищающий шину USB компьютера от короткого замыкания с схеме программируемого устройства.
Про режим Slow SCK
Если использовать avrdude и стандартную родную прошивку (usbasp.
Понижение частоты требуется для программирования микроконтроллеров с низкой частотой тактирования (меньше 1.5 МГц). Как известно многие МК исходно запрограммированы на заводе на тактирование от внутреннего RC-генератора 1 МГц, поэтому требуется установка джампера JP3, как минимум для первичного программирования МК.
В этом случае обычно программируют в два приема: сначала с джампером выставляют ставлю фьюзы для работы от внешнего кварца (4, 8, 12… МГц), затем снимают джампер, подключают кварц, и заливают микропрограмму на максимальной скорости обеспечиваемой программатором.
Без перемычки JP3 скорость программирования ~5 КБайт/с, с перемычкой ~0,1КБайт/с.
Например, ATmega8 (8К флеш памяти) шить на пониженной скорости весьма тоскливо (1.5 мин), а для ATmega328 (32К) вообще можно уходить на 5 минутное чаепитие.
С «китайской» версией прошивки МК в программаторе, утилитf avrdude постоянно выводит ошибку:
avrdude: warning: cannot set sck period.please check for usbasp firmware update.
и пытается работать с прошиваемым МК на максимальной частоте SCK, и как вы уже понимаете, это будет получаться у ней не всегда удачно.
Поддерживаемые программатором микроконтроллеры
Сайт продавца утверждает что поддерживаются следующие микроконтроллеры:
AT89S51,AT89S52
AT86RF401,AT90CAN32,AT90CAN64,AT90CAN128,
AT90PWM2,AT90PWM2B,AT90PWM3,AT90PWM3B,
AT90PWM81,AT90PWM216,AT90PWM316,AT90S1200,
AT90S2313,AT90S2323,AT90S2343,AT90S4414,AT90S4433,
AT90S4434,AT90S8515,AT90S8535,AT90SCR100H,AT90USB82,
AT90USB162,AT90USB646,AT90USB647,AT90USB1286,AT90USB1287,
ATmega16HVA,ATmega16HVB,ATmega16M1,ATmega16U2,ATmega16U4,
ATmega32,ATmega32A,ATmega32C1,ATmega32HVB,ATmega32M1,ATmega32U2,
ATmega32U4,ATmega32U6,ATmega48,ATmega48P,ATmega48PA,ATmega64,ATmega64A,
ATmega64C1,ATmega64M1,ATmega88,ATmega88P,ATmega88PA,ATmega103,ATmega128,
ATmega128A,ATmega128RFA1,ATmega161,ATmega162,ATmega163,ATmega164P,ATmega164PA,
ATmega165,ATmega165P,ATmega168,ATmega168P,ATmega168PA,ATmega169,ATmega169P,
ATmega323,ATmega324,ATmega324PA,ATmega325,ATmega325P,ATmega328P,ATmega329,
ATmega329P,ATmega406,ATmega640,ATmega644,ATmega644P,ATmega644PA,ATmega645,
ATmega649,ATmega1280,ATmega1281,ATmega1284P,ATmega2560,ATmega2561,ATmega3250,
ATtiny10,ATtiny11,ATtiny12,ATtiny13,ATtiny13A,ATtiny15,ATtiny22,ATtiny24,ATtiny24A,
ATtiny25,ATtiny26,ATtiny28,ATtiny43U,ATtiny44,ATtiny44A,ATtiny45,ATtiny48,ATtiny84,
ATtiny85,ATtiny88,ATtiny167,ATtiny261,ATtiny261A,ATtiny461,ATtiny861,ATtiny861A,ATtiny2313,ATtiny231A
Программатор: разъемы для подключения
Программатор имеет USB разъем для подключения к компьютеру, и 10-выводной ISP разъем для подключения к программируемому микроконтроллеру.
Допустим вы решили собрать некую схему, пусть будет такая:
Для прошивки микроконтроллера необходимо соединить выходы программатора VCC, GND, RESET, SCK, MOSI, MISO с соответствующими выходами микроконтроллера.
В рассматриваемом примере это ATMega8. Он имеет следующее расположение выводов:
Необходимые нам ножки :
1 — RESET
17 — MOSI
18 — MISO
19 — SCK
20 — AVCC
Итак, соединяем одноименные ножки МК и программатора. Вот как это может выглядеть если собирать на макетной плате:
___
Продолжение следует ….
Установка USBaspLoader на плату USBasp
SocButtons v1.5
Продолжаем опыты над дешевым программатором USBasp,который можно научить работать как другое устройство.
Для программирования платы USBasp необходим другой программатор USBasp или Arduino в режиме программатора, но если мы хотим быстро сменить назначение платы на другое без дополнительных внешних программаторов ?
Тут придет на помощь проект USBaspLoader ,который позволяет программировать микроконтроллеры AVR без программатора,залив один раз специальный загрузчик. Для программирования необходимо поставить перемычку,которая подключена на свободный пин м/к.
К сожаленью существует и недостаток USB загрузчика — он занимает 2 кб flash памяти Вашего м/к .Получается ,что в нашем случае остается свободно для самой программы всего 6144 байт,но этого может быть достаточно для большинства проектов.
Установка загрузчика
Для начала скачаем прошивку-загрузчик,который адаптирован под схему USBasp и выберем через что будем его прошивать:
Команда через Arduino:
avrdude -c avrisp -P COM1 -b 19200 -p m8 -U flash:w:boot_m8.hex -U hfuse:w:0xc0:m -U lfuse:w:0x9f:m -U lock:w:0x2f:m
Команда через другую USBasp:
avrdude -c usbasp -p m8 -U flash:w:boot_m8.hex -U hfuse:w:0xc0:m -U lfuse:w:0x9f:m -U lock:w:0x2f:m
Файлы avrdude,avrdude.conf и boot_m8.hex должны находится в одной папке,если в команде не указан конкретный путь.Программку avrdude можно найти по адресу в Arduino IDE — путь_к_папке_ардуины_/hardware/tools/
Теперь можно загружать прошивки без дополнительных программаторов.
Прошить загрузчик можно и через Arduino IDE,если файл загрузчика положить в папку hardware/arduino/bootloaders/atmega8/ .Для прошивки необходимо выбрать пункт ATmega8 USB 12 MHz в меню плат(см ниже по тексту как его добавить) и выбрать опцию в меню сервис «записать загрузчик».
Переключение в режим программирования
Для того,чтобы «залить» прошивку в устройство с установленным USBaspLoader необходимо установить перемычку JP3 ,которая переводит устройство в режим программирования и сбросить устройство ,замкнув контакт ближний к перемычке выбора питания(JP1) на перемычке JP2 на землю.
Слева на фото показан пример как подключается кнопка для сброса микроконтроллера с установленной перемычкой JP3 .Кнопка и разъем взяты из старого системно блока.
Теперь устройство видно в системе как USBasp и с ним можно работать как обычным программатором USBasp.
Прошивка микропрограмм
Прошивка программы ,используя USBaspLoader ничем не отличается от обычной прошивки микроконтроллеров через USBasp:
avrdude -c usbasp -p m8 -U flash:w:Имя_файла_для прошивки.hex
Обращаю внимание,что чтение и установка фьюзов не доступна — avrdude будет выводить нули.
Используем USBasp как макетную плату в Arduino IDE
Для бывшего программатора USBasp можно писать скетчи в Arduino IDE ,но к сожалению,без пайки нам будут доступны только 6 выводов микроконтроллера и 2 светодиода.
Добавляем поддержку Atmega8+USB ,дописав секцию в файл boards.txt:
atmega8usb.name=ATmega8 USB 12 MHz
atmega8usb.upload.protocol=arduino
atmega8usb.upload.maximum_size=6144
atmega8usb.upload.speed=19200
atmega8usb.bootloader.low_fuses=0x9f
atmega8usb.bootloader.high_fuses=0xc0
atmega8usb.bootloader.path=atmega8
atmega8usb.bootloader.file=boot_m8. hex
atmega8usb.bootloader.unlock_bits=0x3F
atmega8usb.bootloader.lock_bits=0x2F
atmega8usb.build.mcu=atmega8
atmega8usb.build.f_cpu=12000000L
atmega8usb.build.core=arduino
atmega8usb.build.variant=standard
Теперь в меню выбора плат появился пункт ATmega8 USB 12 MHz и скетчи сейчас можно заливать через меню файл — «прошить с помощью программатора».Не забываем в меню «программатор» выбрать USBasp.
Доступные цифровые выводы микроконтроллера на разъеме:
0,1,10(PWM),11(PWM),12,13. Можно воспользоватся интерфейсом SPI,например для подключения Ethernet ENC28J60.
А так же доступны цифровые выводы 14 и 15 для управления светодиодами на плате.
Можно задействовать и интерфейс USB ,используя библиотеку для Arduino V-USB.
Обновление прошивки USBasp — пайка и сборка электроники для хобби
Обновление прошивки USBaspЕсли у вас есть USBasp, особенно более старая или китайская версия, вы можете подумать об обновлении прошивки USBasp. Если вы перейдете на веб-сайт:
https://fischl.de/usbasp/
Здесь вы можете скачать код .hex. Есть также другие прошивки, доступные на других веб-сайтах, которые вы можете рассмотреть. Позже в этой статье я разместил ссылку, по которой вы можете загрузить прошивку в USBasp, которая дополняет WCID. Это означает, что он будет просто использовать родной USB-драйвер Windows, и вам не придется возиться с отключением или загрузкой других драйверов, использованием Zadig или просто надеждой, что он будет работать.
Определите, какой тип USBasp у вас естьПеред обновлением микропрограммы вам необходимо знать, какой чип установлен в вашем USBasp. Вероятно, это будет ATMega88, ATMega48 или ATMega8. Вы можете увидеть, что на нем напечатано, с помощью лупы. У меня был ATMega8.
Поскольку вы являетесь пользователем USBasp, вы, скорее всего, немного знаете о ISP. Вот как мы собираемся обновить прошивку на USBasp путем схемного программирования ATMega. К сожалению, вам придется использовать другой программатор, чтобы сделать это. Большинство людей используют либо Arduino, либо другой USBasp. Я решил сделать это с другим USBasp. Причина в том, что у меня тогда был бы запасной USBasp (никогда не помешает иметь резервное устройство — на всякий случай). Также проще подключить провод, так как вы можете просто соединить два устройства вместе с проводом, который вы уже используете.
Первое, что нужно сделать, это проверить, есть ли у вас устройство, которое будет легко обновить или нет. Чтобы запрограммировать USBasp, вам нужно закоротить ссылку. На более новых устройствах он четко обозначен как JP2 и напечатан трафаретной печатью на печатной плате. На более старых вам, возможно, придется соединить две дорожки с помощью пайки, что может привести к беспорядку и вызвать серьезные проблемы, если вы ошибетесь, поэтому убедитесь, что он находится в пределах допустимого диапазона. ваши возможности, прежде чем начать, если у вас есть старый.
Припой в разъеме DILУ меня новая версия, и хотя вы можете легко припаять проводное соединение, после того, как вы запрограммируете новую прошивку, вам придется отрезать или отпаять соединение, поэтому я подумал, что это будет слишком более аккуратный и лучший способ на самом деле припаять правильный контактный разъем DIL и использовать правильную перемычку. Затем вы можете вставить его на место и удалить, когда захотите, если вам понадобится обновить прошивку в будущем.
Итак, возьмите устройство, которое вы собираетесь обновить, и закоротите JP2 либо припаяв перемычку, либо перемычкой. Соедините два USBasp вместе, используя два 10-контактных разъема и 10-контактный ленточный кабель. Затем установите USBasp для программирования на 5 В, установив перемычку рядом с JP2. На моем устройстве это четко обозначено 3,3 В 5 В. Затем подключите его к ноутбуку, который вы обычно используете для программирования.
Программирование новой прошивкиЗайдите на сайт и загрузите правильную прошивку для вашего устройства. Затем поместите его на диск C пользователя под своим именем.
Я делаю это, потому что каждый раз, когда я пытаюсь связать команду с файлом, я получаю что-то вроде этого сообщения:
avrdude: не удается открыть входной файл usbasp.atmega8.2011-05-28.hex: Нет такого файл или каталог
Если вы получаете подобное сообщение об ошибке, это обычно означает, что файл, который вы хотите загрузить, находится не в том месте. Я считаю, что гораздо проще поместить файл в то место, которое, как я знаю, ищет командная строка, поэтому для себя я поместил файл:
usb.atmega8.2011-05-28.hex
В диске C/Users/ваше имя
Затем с помощью Winavr, используя CMD, я использую команду:
avrdude -p atmega8 -c usbasp -U flash :w:usbasp.atmega8.2011-05-28.hex:i -F -P usbЭто удалит файл .hex в mega8 и запишет новый файл. С новой прошивкой я больше не получаю сообщение: Cannot установить период SCK. Необходимо обновить версию прошивки. Другие сообщения, которые вы можете получить:
avrdude: Подпись устройства = 0x1e930b
avrdude: Ожидаемая подпись для ATMEGA8: 1E 93 07
Это если у вас не та Mega, либо в USBasp, либо в программе коммендной строки.
После обновления прошивки USBasp не забудьте снять перемычку JP2.
Вот ссылка на прошивку для комплимента вашему USBasp WCID. После этого вы сможете попрощаться со всеми этими проблемами с драйверами Windows:
https://github.com/dioannidis/usbasp
Последние мысли об обновлении прошивки USBaspОбновить прошивку USBasp довольно быстро и просто. Пока у вас есть другие средства для программирования и следуйте инструкциям. Usbasp доступны на Amazon за 7 фунтов стерлингов. Если вы являетесь основным участником, вы можете получить свой заказ на следующий день с бесплатной доставкой.
Скачать темы WordPress бесплатно
LC-01 51 Программатор AVR ISP USBASP Загрузчик Встроенный чип ATMega8 (L) — модуль RS232 для TTL
1.Описание:
Это загрузчик USBASP. Этот продукт может быть напрямую подключен к USB-порту компьютера, настоящий USB-загрузчик, через который он подключается к целевой плате, может загружать и программировать однокристальный микрокомпьютер.
2. Характеристика:
1).Встроенный чип ATMega8 (L)
2). С двумя индикаторными лампами для питания и программирования.
3). Встроенный предохранитель самовосстановления с защитой от перегрузки по току 500 мА.
4).Поддержка источника питания 5 В и 3,3 В для целевой платы.
5).Поддерживает микроконтроллер AT89S51/52.
6). Поддержка всех чипов ASP AVR.
7). Выходной порт является стандартным портом ATMEL.
8). Имеется источник питания USB, а целевая плата поддерживает целевое напряжение 5 В, которое можно выбрать с помощью соединения с перемычкой.
9). AUTOSPEED может автоматически регулировать скорость прошивки, загрузчик автоматически отслеживает программируемую частоту чипа и автоматически меняет скорость для достижения автоматической регулировки скорости.
10). Резервный интерфейс MOSI, MISO, RET, SCK, VCC, GND.6PIN, удобный для пользователей для подключения к целевой плате по мере необходимости.
11). Интерфейс программирования PROGRAMMING зарезервирован, и пользователи могут самостоятельно обновлять прошивку загрузчика.
3. Параметр:
1). Название продукта: Загрузчик USBASP
2).Напряжение питания: 5 В-3,3 В постоянного тока
3). Программное обеспечение: AVR_fighter, PROGISP1.66, PROGISP1.67, PROGISP1.68
4).Рабочая температура: -25℃~85℃
5). Рабочая влажность: 5% ~ 95% относительной влажности
6). Размер: 68*21*15 мм
4. Определение интерфейса:
1).МОСИ:П1.5
2).МИСО: П1.6
3).СКК: П1.7
4).РЕЗ: РСТ
5).ЗЕМЛЯ:ЗЕМЛЯ
6).5В:ВКК
5. Чипы, поддерживающие программирование:
1) 51 ряд:
АТ89С51, АТ89С52, АТ89С53, АТ89С8253, АТ89С2051, АТ89С8252, АТ89С4051
2) Серия АВР:
ATTiny12(L), ATTiny13(V), ATTiny15(L), ATTiny24(V), ATTiny25(V), ATTiny26(L), ATTiny2313(V), ATTiny44(V), ATTiny45(V), ATTiny84(V), ATTiny85(V), AT90S2313(L), AT90S2323(L), AT90S2343(L), AT90S1200(L), AT90S8515(L), AT90S8535(L), ATMEGA48(V), ATMEGA8(L), ATMEGA88(V), ATMEGA8515(L), ATMEGA8535(L), ATMEGA16(L), ATMEGA162(V), ATMEGA163(L), ATMEGA164(V), ATMEGA165(V), ATMEGA168(V), ATMEGA169(V), ATMEGA169P(V), ATMEGA32(L), ATMEGA324(V), ATMEGA325(V), ATMEGA3250(V), ATMEGA329(V), ATMEGA3290(V), ATMEGA64(L), ATMEGA640(V), ATMEGA644(V), ATMEGA645(V), ATMEGA6450(V), ATMEGA649(V), ATMEGA6490(V), ATMEGA128(L), ATMEGA1280(V), ATMEGA1281(V), ATMEGA2560(V), ATMEGA2561(V),AT90CAN32,AT90CAN64,AT90CAN128 ,AT90PWM2(Б),AT90PWM3(Б)
6. Пакет:
1).1 шт. USBASP загрузчик
2).1шт 10P кабель для передачи данных
9(с бесплатным номером отслеживания и платой за страхование доставки)
(2) Время доставки
Время доставки составляет 7-20 рабочих дней в большинство стран; Пожалуйста, просмотрите таблицу ниже, чтобы узнать точное время доставки в ваше местоположение.
7-15 рабочих дней в: Большинство стран Азии
10-16 рабочих дней в: США, Канаду, Австралию, Великобританию, большинство стран Европы
13-20 рабочих дней в: Германия, Россия
18-25 рабочих дней в: Францию, Италию, Испанию, Южную Африку
20-45 рабочих дней в: Бразилию, большинство стран Южной Америки
2. DHL/FedEx Express
(1) Плата за доставку: Бесплатно для заказа, соответствующего следующим требованиям
Общая стоимость заказа >= 200 долларов США или общий вес заказа >= 2,2 кг
Когда заказ соответствует одному из вышеуказанных требований, он будет отправлен БЕСПЛАТНО через EMS/DHL/UPS Express в указанную ниже страну.
Азия: Япония, Южная Корея, Монголия. Малайзия , Сингапур , Таиланд , Вьетнам , Камбоджа , Индонезия , Филиппины
Океания: Австралия , Новая Зеландия , Папуа-Новая Гвинея
Европа и Америка: Бельгия, Великобритания, Дания, Финляндия, Греция, Ирландия, Италия, Люксембург, Мальта, Норвегия, Португалия, Швейцария, Германия, Швеция, Франция, Испания, США, Австрия, Канада
Примечание. Плата за доставку в другие страны, пожалуйста, свяжитесь с [email protected]
(2) Время доставки и время доставки
Срок доставки: 1-3 дня
Срок доставки: 5-10 рабочих дней (около 1-2 недель) в большинство стран.
Поскольку посылка будет возвращена отправителю, если она не была подписана получателем, обратите внимание на время прибытия посылки.
Примечание:
1) Адреса APO и абонентских ящиков
Настоятельно рекомендуем указывать физический адрес для доставки заказа.