Программирование микроконтроллеров AVR программатором USBASP

Рассмотрим легкий и неразорительный способ записать программу в любой микроконтроллер (МК) серии AVR от Atmel. Нам понадобятся программатор USBASP и программное обеспечение для прошивания, также если на вашей плате установлен 6-пиновый разъём, вам потребуется переходник с 10 выводов на 6. Программатор USBASP, созданный немцем Томасом Фишлем, является очень распространённым, наиболее дешёвым и простым среди других программаторов для МК AVR. Купить его можно в каком-нибудь радиомагазине вашего города (стоимость — 1,5-3$).

Рисунок 1 — подключённый программатор (красная плата)

Программатор USBASP
Данный программатор соединяется через USB штекер к компьютеру и через шлейф к прошиваемому микроконтроллеру или к конструкции, в которой находится микроконтроллер. Если в первом случае связь устанавливается через последовательный интерфейс USB для обмена информацией, то во втором — через SPI-интерфейс последовательного программирования. Стоит сказать, что SPI-интерфейс последовательного программирования, имеющийся во всех МК AVR, и аппаратный SPI для обмена информации, — это разные составные микроконтроллера, что можно наглядно увидеть на рисунке 2. В некоторых МК у них даже могут не совпадать выводы. К тому же, полнофункциональный SPI-интерфейс может вообще отсутствовать, как, к примеру, в ATtiny13.

Рисунок 2 — общая структурная схема микроконтроллеров AVR

Существует множество версий программатора USBASP. Его можно собрать и самому.
Распространены две версии программатора: USBASP 2.0 и USBASP 3.0
Рассмотрим USBASP на примере версии 3.0, как наиболее продвинутой (Рис. 3).

Особенности программатора USBASP

Особенности:

  • Поддерживается операционными системами Windows, Linux и Mac OC;
  • Поддерживает напряжение питания 5 В и 3,3 В (не все USB-порты выдают 5 В);
  • скорость записи до 375 кб/сек (скорость программирования можно настраивать самому в некотором ПО);
  • питается от ПК;

Рисунок 3 —программатора USBASP 3.0

Организация USBASP 3.0

На плате программатора присутствует не много радиокомпонентов, перечислим основные:

  • МК ATmega8A, имеющий 8 кб флеш-памяти и 1 кб ОЗУ (SRAM);
  • кварцевый резонатор на 12 МГц. Аппаратный USB интерфейс в этом МК отсутствует, но присутствует программный USB, и из-за особенностей последнего МК работает на частоте 12 МГц;
  • 10-контактный разъём (двухрядный штырьковый разъём типа IDC);
  • LED1 и LED2 индикатор включения и индикатор программирования соответственно;
  • F1 — самовосстанавливающийся предохранитель на 500мА;
  • JP1 — джампер для выбора напряжения: 5 В и 3,3 В в зависимости от позиции перемычки (по умолчанию 5 В). Если ваша конструкция потребляет не более 200 мА (!), то её можно запитать с программатора (вывод VCC на разъёме программатора). Желательно питать устройство от ПК, в этом случае «земля» вашего устройства будет соединена с корпусом ПК и можно будет безопасно подключать и отключать разъем программирующего адаптера;
  • JP2 — необходимо закоротить, если хотим перепрошить МК программатора;
  • JP3 — выбор частоты тактирования линии SCK (разомкнут — частота 375 кГц, замкнут — 8 кГц). Если более подробно, то данный джампер предназначен для уменьшения скорости записи данных в прошиваемый МК. Это требуется, когда частота тактирования SPI-интерфейса последовательного программирования МК меньше частоты тактирования программатора, то есть меньше 375 кГц. Если в такой ситуации не замкнуть контакты JP3, то МК не прошьётся. Определим, необходимо это в вашем случае или нет. Для примера возьмём МК ATtiny13, который с завода поставляется настроенным на тактовую частоту 1,2 МГц. SPI МК AVR предполагает максимальную частоту тактирования равной ¼ от частоты тактового сигнала МК. Получаем частоту тактирования SPI равной 1,2/4=0,3 (МГц)=300 (кГц). Выходит, что в данном случае замыкание контактов JP3 необходимо.

Однако при использовании AVRDUDE_PROG перемычку можем не трогать.

Программатор поддерживается следующим программным обеспечением:

  • AVRdude;
  • AVRdude_Prog;
  • Khazama AVR Prog;
  • Bascom-AVR;
  • eXtreme Burner AVR.

Подключение и распиновка USBASP

Подключить программатор USBASP ничего не стоит, надо лишь правильными сторонами вставить шлейф в разъём программатора и в разъём на вашей конструкции. Подсоедините шлейф в разъём USBASP точно так же, как показано на рисунке 4, обратите внимание на красный провод.

Рисунок 4 — пример соединения шлейфа с программатором и распиновка

Рисунок 5 — обозначения проводов

Назначение выводов:

  • MOSI — выход информационных данных;
  • MISO — вход информационных данных;
  • SCK — линия для подачи тактовых импульсов (синхронизация данных);
  • RESET — подключается к выводу RESET программируемого микроконтроллера;
  • VCC — вывод для подачи питания 5 или 3,3 В на прошиваемый МК (не более 200 мА, чтобы не сжечь USB-порт);
  • GND — земля (минус);
  • NC — не используется.

Установка драйверов для программатора USBASP

Установим драйвера, чтобы можно было пользоваться программатором. Раньше драйвер для USBASP был основан на библиотеке libusb-win32. Затем, после истечения срока сертификата, перевели на новую библиотеку libusbK. Поэтому при установке драйвера из нашего архива не придётся использовать программу Zadig или прибегать к другим манипуляциям с сертификатом. Драйвер тестировался на Windows XP, 7, 8, 10 (32-х и 64-х разрядных версиях).

Процесс установки драйверов:

  • Подключите программатор к ПК, при этом в диспетчере устройств появится новое устройство USBasp с жёлтым значком, что осведомляет об отсутствии драйверов;
  • Скачайте под статьёй архив “USBasp_software”. Найдите папку “usbasp-win-driver-x86-x64-v3.0.7” и запустите “InstallDriver.exe”;
  • Проверьте диспетчер устройств — желтый значок должен исчезнуть (если нет, щелкните правой кнопкой по устройству «USBasp» и выберите пункт «Обновить»);

Программатор готов к работе.

Прошивание программы и FUSE-битов в микроконтроллер

Рисунок 6 — стартовое окно программы AVRDUDE_PROG 3.3

Цепочка действий для записи программы в МК:

  • Выбираем программатор USBASP (выставлено по умолчанию);
  • Кликаем на программируемый МК в списке;
  • Считываем калибровочные ячейки генератора для проверки связи: если появится окно с надписью “Калибровочные ячейки генератора считаны!”, значит, связь с программируемым МК установлена;
  • Стираем на всякий случай флеш-память микроконтроллера;
  • Указываем путь к нашему файлу прошивки (формат HEX);
  • Прошиваем. После благополучной прошивки возникнет сообщение как на рисунке 7.

Рисунок 7 — сообщение об успешной прошивки

Рисунок 8 — вкладка Fuses программы AVRDUDE_PROG 3.3

У каждого МК AVR свой набор FUSE-битов. Настройка FUSE-битов, или, по-русски, конфигурационных битов, обладает извращенской логикой: “1” — это “0”, а “0” — это “1”. Поэтому при прямых FUSE-битах “0” будет означать запрограммированное состояние, а “1” — незапрограммированное.

В программе AVRDUDE_PROG можно без волнения прошивать МК, не трогая FUSE-биты, т.к. программа выставляет их заводские значения.

Кнопка “Программирование” на вкладке Fuses служит для прошивки FUSE-битов в МК. Если нажать “Чтение”, то узнаем какие значения установлены в FUSE-битах микроконтроллера в данный момент.

Автор: Лепешкин Алексей, г. Москва

Возможно, Вам это будет интересно:

Постоянная ссылка на это сообщение: http://meandr.org/archives/36583

Добавить комментарий