Микроконтроллеры Atmega обычно программируются через интерфейс ISP (SPI),но для этого необходимо,хоть и недорогой,но всетаки программатор. Данный способ для подключения использует 5 проводов (SCK, MISO, MOSI, reset, GND).
Но используя специальный загрузчик, зашитый в нижнюю область памяти микроконтроллера можно прошивать через последовательный порт используя выводы (RX, TX ,reset, GND) - Так прошиваются платы Arduino, на которых установлена микросхема переходник USB-RS232. Загрузчик активируется командой сброса на выводе reset микроконтроллера и ждет очень небольшой промежуток времени, если передача по последовтельному порту не началась, то управление переходит на нулевой адрес микроконтроллера, где находится основная программа.
В младших моделях м/к загрузчик занимает всего 512 байт. В Arduino Duemilanove он был 2048 байт.
Для работы загрузчика необходимо установить правильные фьюзы , а так же сам загрузчик должен откомпилирован на нужную частоту внутреннего задающего генератора или внешнего кварца- вся эта процедура отнимает времени , особенно для новичка.
Данный конструктор автоматически создает загрузчик для микроконтроллера , указывает фьюзы для прошивки, а так же генерирует пример блока для вставки в файл board.txt в среде Arduino IDE. Загрузчик можно создать для работы на конкретный кварц или внутренний задающий генератор(например на 8 мгц или 1 мгц). Занижение рабочей частоты ведет к понижению энергопотребления, к сожалению это уменьшает максимальную скорость загрузки.
В конструкторе используется загрузчик optiboot.
Поддерживаемые м/к: Atmega328P, Atmega168 Atmega88 , Atmega8, Atmega16 ,Atmega32.Возможно добавление и других м/к.
Настройка Arduino IDE.
Если Вы хотите добавить среду Arduino нестандартный микроконтроллер (Atmega16 или Atmega32) или использовать не стандартный кварц (не на 16 мгц)., то необходимо в файл boards.txt ,который находится в папке arduino\hardware\arduino/ добавить дополнительную секцию, которую создаст конструктор.
Для Atmega16 и Atmega32 необходима установка своего ядра - это описано в статье Добавляем поддержку не родных м/к в среду Arduino
Конфигурация загрузчика
Для конфигурации загрузчика необходимо для начала выбрать Ваш микроконтроллер и указать задающий генератор:
Внешний кварц - Используя внешний кварц,подключаемый к выводам XTAL м/к. Так же необходима установка конденсаторов на 22pF ,подключенных на GND.
Внутренний генератор - внутренний генератор м/к ,который,в зависимости от модели м/к может работать на 1,2,4,8 мгц.При этом освобождаются выводы XTAL м/к для своих целей.
Watchdog - Внутренний неточный генератор на 256 кгц для системы Watchdog.Доступен не на всех м/к.
Загрузчик может использовать программный последовательный порт,который может назначен на другие выводы м/к (В стадии тестирования). Обратите внимание, что при некоторых частотах программный UART включается принудительно.
На низких частотах, например с использованием Watchdog, возможны с проблемы с загрузкой прошивки, если у вас нет хорошего программатора( который умеет понижать частоту), то использовать низкую частоту не рекомендую !! Понижение частоты возможно на программаторе USBasp с avrdude с ключем -B
Установка загрузчика
После того, как Вы выберете необходимые опции и нажмете создать HEX конструктор выдаст команды для прошивки через утилиту avrdude ,а так же ссылки на статьи , как прошить загрузчик через плату Arduino или USBasp.
Кстати,данными командами можно и не пользоватся,если вы уже добавили блок в board.txt и скопировали загрузчик в папку \hardware\arduino\bootloaders\optiboot\ а затем выбрав в меню Сервис - записать загрузчик.
Внимание !! Конструктор работает в тестовом режиме и необходима проверка фьюзов в калькуляторе !! При обнаружении ошибок просьба связаться с администрацией сайта , воспользовшись форумом или темой на arduino.ru
Конструктор загрузчика: