Ардуино в качестве программаторов AVR контроллеров

Программатор на АрдуиноС последней версией Arduino IDE перестал работать USBASP, с помощь которого прошивал массу контролеров.

У USBASP пора обновить прошивку, а может быть и схему, а я буду использовать в качестве программатора обычный Arduino.  Тем более я уже использовал эту схему для программирования ATTiny13.

Для Arduino на ATmega168/328 схема будет выглядеть так — между собой соединяем D11, D12, D13, а D10 контроллера программатора соединяем с RESET программируемого контроллера. Устанавливаем кварц для прошивки контроллеров, работающих от внешнего резонатора.

Схема программатора Arduino ISP

Для удобства работы собираю программатор на макетке. Для микросхем в корпусе DIP28 использую панель DIP с нулевым усилием.

945-963

Также на плате устанавливаю разъем под Arduino Pro Mini, на которых делаю все последние Arduino-проекты

Получаю такую платку

Программатор на Arduino

Устанавливаю на плату микроконтроллеры

Программатор на Ардуино

Программатор на Ардуино

Можно приступать к прошивке/

Программатор на Arduino

 

Для этого в Ардуину нужно записать скетч ISP-программатора

Скетч Arduino ISP

Затем выбираем тип программатора

Выбор типа программатора

И все. Программатор собран и настроен.

Немного о применении

  1. Загрузка скетча с 0-го адреса без загрузчика. Экономит память микроконтроллера и время загрузки. Особенно интересно в микросхемах с малой памятью — Atmega8 и различных Attiny.
  2. Установка загрузчика на «голую» Atmega328, чтобы в дальнейшем заливать в нее скетчи через RX/TX, как в обычную Ардуину.
  3. Замена загрузчика, например, на OPTIBOOT, нормально поддерживающий режимы сна и сторожевой таймер.
  4. Установка фьз-битов. Полезно при создании «батареечных проектов», когда отключается BOD — контроль входного напряжения и микроконтроллеру устанавливается режим работы с пониженной частотой, опять же для уменьшения напряжения питания до 2.8-3.3В и энергопотребления.
  5. Восстановление «мертвых» микроконтроллеров после неудачных экспериментов

Если нужно залить прошивку одной Ардуины через другую, то делается все тоже самое, только без платы. Соединяются вывод ардуин согласно схеме и точно так же программируется.

c001

c002

Вы можете оставить отзыв или трекбек со своего сайта.

16 комментариев на «Ардуино в качестве программаторов AVR контроллеров»

  1. Александр:

    Если ATmega328P-PU пришли с завода (изначально на работу с внутреннего генератора), схему необходимо всё равно собирать с внешним кварцем и двумя конденсаторами ?
    Мне в итоге нужно получить микроконтроллер с прошитым загрузчиком для работы с внешним 16MHz кварцем и питанием +5В.

    • Александр:

      Всем спасибо, уже разобрался 😉
      Оказывается, проблема была в номинале керамических конденсаторов в обвязке кварца.
      Решил пересобрать на маленькой 170-ти контактной макетке. На внутреннем генераторе контроллер не заработал. А при установке этих конденсаторов обратил внимание на маркировку. По типоразмеру оказались одинаковые с 22pF, но только номиналом 100nF.
      Сразу же заменил — и всё заработало!
      Прошивал и на новой версии IDE Arduino 1.6.7 и на старой 1.0.1 — везде загрузчик успешно прошился.

      • Игорь:

        Значит можно заливать прошивки которые не будут использованы в среде Ардуино?
        И что для этого надо сделать где установить и прочее

        • Alexey:

          Какая то каша у вас )))
          Прошивка — это бинарник для микроконтроллера AVR
          Среда Ардуино IDE позволяет редактировать исходник на С++ (вернее на Wiring), компилировать при помощи входящего в состав GCC компилятора с использованием своих библиотек и заливать его в МК при помощи AVRDUDE через загрузчик, находящийся в контроллере по интерфейсу UART.
          Также в Ардуино IDE можно настраивать работу с разными микроконтроллерами (не только AVR), загружать их в том числе и через различные программаторы

  2. Если я правильно понимаю при такой схеме подключения нет необходимости в Uno ? Как вы описывали в другой статье программирование Atmega 328

    • Alexey:

      В другой статье программатор USBASP а Ардуино УНО в качестве панельки для ATMega328, здесь в качестве программатора Ардуино. Любой — Nano/Uno?Pro Mini

      • Сергей:

        Спасибо за ответ. я Так и понял. Если вдруг заинтересует Вас мог бы предложить тему создания умного дома начать с построения Блок схемы работы устройств.Например Orange Pi PC Plus + GL.iNet Mini WiFi Router Flash 64MB RAM. И соответственно устройств на базе ESP8266 в этой схеме.

  3. Сергей:

    ESP8266 подключаемся к OpenWRT+Mosquitto+mqttwarn …. статья на esp8266.ru немного не дотягивает полнотой развертки…..может у Вас получиться более подробно обьяснить

  4. Алексей:

    Добрый вечер! А возможно ли как то сделать из ардуино уны высоковльтный программатор Fusebit Doctor?

  5. Андрей:

    Добрый вечер! А можно уточнить?
    Если я хочу по вашему способу прошить китайский заводской USBASP программатор на основе Atmega8A с кварцем на 12 MHz(чертовы китайцы льют в «камни» старые прошивки- из за них выдают ошибку и не шьют микроконтроллеры)
    при помощи Arduino Pro Micro, у нее кварц на 16 MHz и кристалл Atmega32u4- мне нужна какая либо обвязка внешняя к линии SCK? Или там можно в студии ардуино как-то справиться с проблемой разницы частот?

    • Alexey:

      А какая разница на какой частоте работает программатор. Прошивка же не на тактовой процессора выполняется. Этим программатором из статьи я шил Меги 8 на 8МГц, Меги 328 на 16 и 8 и тиньки на всех их рабочих частотах. Главное, подключиться по ICMP. Там есть синхронизация

  6. Geka:

    Кошак зачетный. Сидит и фигеет с происходящего)))

  7. Игорь:

    А ведь можно ардуино сразу к USB подцепить, напрямую. Чтобы как USBAsp определялся, ток где скетч на него взять?

  8. Игорь:

    А это все стандартное, можно Uno или Nano использовать, тогда и TTL конвертер нах не нужен.

Ваш отзыв

Вы должны войти, чтобы оставлять комментарии.