Как собрать программатор для микроконтроллера atmega8 в домашних условиях. Какие компоненты понадобятся для сборки простого программатора. Как прошить и настроить программатор для работы с atmega8. Какое программное обеспечение использовать для программирования atmega8.
Необходимые компоненты для сборки программатора atmega8
Для создания простого и надежного программатора для микроконтроллера atmega8 понадобятся следующие компоненты:
- Микроконтроллер ATmega8 в корпусе TQFP32
- Кварцевый резонатор на 12 МГц
- Два конденсатора по 22 пФ
- Резисторы: 2 x 68 Ом, 2 x 1.5 кОм, 1 x 10 кОм
- Два стабилитрона на 3.6В
- Два светодиода (красный и синий)
- Разъем USB type B
- Разъем ISP 6 pin
- Печатная плата
Этот набор компонентов позволит собрать программатор, способный программировать atmega8 и другие микроконтроллеры AVR через USB-интерфейс компьютера.
Схема программатора для atmega8
Схема программатора для atmega8 достаточно проста:

- ATmega8 служит основой устройства
- Кварцевый резонатор на 12 МГц с двумя конденсаторами обеспечивает тактирование микроконтроллера
- Резисторы и стабилитроны необходимы для согласования уровней сигналов между USB и микроконтроллером
- Светодиоды индицируют состояние устройства
- Разъем USB для подключения к компьютеру
- Разъем ISP для подключения программируемого микроконтроллера
При сборке важно правильно подключить все компоненты согласно схеме. Особое внимание стоит уделить подключению разъемов USB и ISP.
Пошаговая сборка программатора
Сборку программатора для atmega8 можно разделить на несколько этапов:
- Подготовка печатной платы — при использовании готовой платы нужно проверить качество дорожек и контактных площадок
- Монтаж пассивных компонентов — резисторов, конденсаторов, кварцевого резонатора
- Установка и пайка микроконтроллера ATmega8 — важно соблюдать полярность и не перегревать микросхему
- Монтаж светодиодов и стабилитронов
- Установка разъемов USB и ISP
- Финальная проверка монтажа и отсутствия замыканий
При аккуратной пайке и соблюдении полярности компонентов программатор должен заработать с первого раза. Рекомендуется использовать качественный паяльник и припой для надежности соединений.

Прошивка микроконтроллера программатора
После сборки программатора необходимо прошить управляющую программу в микроконтроллер ATmega8. Для этого потребуется:
- Скачать прошивку для программатора USBASP с сайта разработчика
- Подключить собранный программатор к другому программатору через разъем ISP
- Запустить программу для прошивки (например, AVRDUDE) и записать hex-файл прошивки в ATmega8
- Установить нужные фьюзы микроконтроллера для работы от внешнего кварца на 12 МГц
После успешной прошивки программатор готов к работе. При первом подключении к компьютеру Windows предложит установить драйвер устройства.
Настройка программного обеспечения для работы с программатором
Для программирования микроконтроллеров с помощью собранного программатора понадобится специальное ПО. Можно использовать следующие программы:
- AVRDUDE — консольная утилита для программирования AVR-микроконтроллеров
- AVR Studio — интегрированная среда разработки от Atmel
- PonyProg — программа с графическим интерфейсом для программирования различных микроконтроллеров
В настройках программы нужно выбрать тип программатора USBASP и указать используемый COM-порт. После этого можно приступать к программированию atmega8 и других МК.

Тестирование и отладка программатора
После сборки и настройки программатора рекомендуется провести его тестирование:
- Попробовать считать сигнатуру подключенного микроконтроллера
- Записать тестовую программу (например, мигание светодиодом) в atmega8
- Проверить корректность записи путем считывания прошивки обратно
- Протестировать программирование фьюзов микроконтроллера
Если все тесты пройдены успешно, программатор полностью готов к работе. При возникновении проблем следует проверить правильность монтажа и настроек ПО.
Использование программатора для прошивки atmega8
Процесс программирования микроконтроллера atmega8 с помощью собранного программатора выглядит следующим образом:
- Подключить программатор к компьютеру через USB
- Соединить программатор и микроконтроллер atmega8 через 6-пиновый разъем ISP
- Запустить программу для прошивки и выбрать hex-файл прошивки
- Запустить процесс программирования
- Дождаться окончания прошивки и проверки записанных данных
При правильном подключении и настройке процесс занимает несколько секунд. После прошивки микроконтроллер готов к работе в целевом устройстве.

Преимущества самодельного программатора для atmega8
Создание собственного программатора для atmega8 имеет ряд преимуществ:
- Низкая стоимость по сравнению с готовыми решениями
- Возможность программировать широкий спектр микроконтроллеров AVR
- Полный контроль над устройством и возможность модификации
- Приобретение практического опыта в разработке электроники
- Компактные размеры устройства
Самодельный программатор становится незаменимым инструментом при разработке проектов на базе микроконтроллеров atmega8 и других AVR.
Миниатюрный USB программатор для AVR микроконтроллеров / Хабр
Как театр начинается с вешалки, так программирование микроконтроллеров начинается с выбора хорошего программатора. Так как начинаю осваивать микроконтроллеры фирмы ATMEL, то досконально пришлось ознакомится с тем что предлагают производители. Предлагают они много всего интересного и вкусного, только совсем по заоблачным ценам. К примеру, платка с одним двадцатиногим микроконтроллером с парой резисторов и диодов в качестве обвязки, стоит как «самолет». Поэтому остро встал вопрос о самостоятельной сборке программатора. После долгого изучения наработок радиолюбителей со стажем, было решено собрать хорошо зарекомендовавший себя программатор USBASP, мозгом которого служит микроконтроллер Atmega8 (так же есть варианты прошивки под atmega88 и atmega48). Минимальная обвязка микроконтроллера позволяет собрать достаточно миниатюрный программатор, который всегда можно взять с собой, как флэшку.Автором данного программатора является немец Thomas Fichl, страничка его разработки со схемами, файлами печатных плат и драйверами.

Раз решено было собрать миниатюрный программатор, то перерисовал схему под микроконтроллер Atmega8 в корпусе TQFP32 (распиновка микроконтроллера отличается от распиновки в корпусе DIP):
Перемычка J1 применяется, в случае если необходимо прошить микроконтроллер с тактовой частотой ниже 1,5МГц. Кстати, эту перемычку вообще можно исключить, посадив 25 ногу МК на землю. Тогда программатор будет всегда работать на пониженной частоте. Лично для себя отметил, что программирование на пониженной скорости на доли секунды дольше, и поэтому теперь перемычку не дёргаю, а постоянно шью с ней.
Стабилитроны D1 и D2 служат для согласования уровней между программатором и USB шиной, без них работать будет, но далеко не на всех компьютерах.
Светодиод blue показывает наличие готовности к программированию схемы, red загорается во время программирования. Контакты для программирования выведены на разъем IDC-06, распиновка соответствует стандарту ATMEL для 6-ти пинового ISP разъема:
На этот разъем выведены контакты для питания программируемых устройств, здесь оно берется напрямую с USB порта компьютера, поэтому нужно быть внимательным и не допускать кз.
Разъем для программирования и перемычка для снижения скорости работы программатора вынесены на торец устройства, это очень удобно
Прошивка управляющего микроконтроллера
Итак, после сборки устройства осталось самое важное — прошить управляющий микроконтроллер. Для этих целей хорошо подходят друзья у которых остались компьютеры с LPT портом 🙂 Простейший программатор на пяти проводках для AVRМикроконтроллер можно прошивать с разъема программирования, соединив выводы Reset микроконтроллера (29 нога) и разъема. Прошивка существует для моделей Atmega48, Atmega8 и Atmega88.

После прошивки должен загореться светодиод подключенный к 23 ноге микроконтроллера. Это будет верный признак того, что программатор прошит удачно и готов к работе.
Установка драйвера
Установка велась на машину с системой Windows 7 и никаких проблем не возникло. При первом подключении к компьютеру выйдет сообщение об обнаружении нового устройства, с предложением установки драйвера. Выбираем установку из указанного места:Выбираем папку где лежат дрова и жмем Далее
Мигом появится окно с предупреждением о том, что устанавливаемый драйвер не имеет цифровой подписи у мелкомягких:
Забиваем на предупреждение и продолжаем установку, после небольшой паузы появится окно, сообщающее об успешном окончании операции установки драйвера
Все, теперь программатор готов к работе.
Khazama AVR Programmer
Для работы c программатором я выбрал прошивальщик Khazama AVR Programmer. Замечательная программка, с минималистичным интерфейсом.Она работает со всеми ходовыми микроконтроллерами AVR, позволяет прошивать flash и eeprom, смотреть содержимое памяти, стирать чип, а также менять конфигурацию фьюз-битов. В общем, вполне стандартный набор. Настройка фьюзов осуществляется выбором источника тактирования из выпадающего списка, таким образом, вероятность залочить кристалл по ошибке резко снижается. Фьюзы можно менять и расстановкой галок в нижнем поле, при этом нельзя расставить галки на несуществующую конфигурацию, и это тоже большой плюс в плане безопасности.
Запись фьюзов в память мк, как можно догадаться, осуществляется при нажатии кнопки Write All. Кнопка Save сохраняет текущую конфигурацию, а Load возвращает сохраненную. Правда я так и не смог придумать практического применения этих кнопок. Кнопка Default предназначена для записи стандартной конфигурации фьюзов, такой, с какой микроконтроллеры идут с завода (обычно это 1МГц от внутреннего RC).
В общем, за все время пользования этим программатором, он показал себя с наилучшей стороны в плане стабильности и скорости работы. Он без проблем заработал как на древнем стационарном пк так и на новом ноутбуке.
Скачать файл печатной платы в SprintLayout можно по этой ссылке
Ну вроде все, если возникнут вопросы, постараюсь ответить.
Параллельный программатор для микроконтроллеров AVR
Поводом для создания данного устройства послужило появление новых чипов AVR поддерживающих отладку по протоколу debugWIRE. Так как он не является протоколом программирования, то после смены исходного кода во время отладки и, естесственно, забыв отключить фуз DWEN — AVRStudio не может заново «подключиться» к отлаживаему кристаллу. Это значит, что фуз DWEN не может быть «сброшен» и, следовательно, отлаживаемый чип больше не может быть запрограммирован через SPI.
После «убийства» двух tiny2313 была написана программа для mega16, которая позволяла, подключившись к меге через житаг, в AVRStudio перепрограммировать фузы тини в параллельном режиме.
Правда это было несколько неудобно и была написана программа для PC, в которой была возможность программирования всех бит фузов для tiny2313.
Дальнейшим развитием стало введение возможности программирования, проверки и чтения Flash памяти, а также введена поддержка других МК.
Поддержка программирования EEPROM не вводилась в виду ненадобности. Вообще программа для МК должна быть написана таким образом, чтоб она сама устанавливала начальные значения EEPROM.
Самым очевидным недостатком данного устройства является то, что для сборки программатора AVR необходимо запрограммировать mega16. Однако такой подход имеет право на существование, т.к. даже Atmel предлагает для своего программатора AVRISP схему на своем же микроконтроллере.
Mega16, используемая в данном устройстве, может быть запрограммирована при помощи программатора AVReal и схемы FBPRG («6 проводков на LPT»). Или через интерфейс JTAG с помощью AVR miniICE
К сожалению COM порт компьютера не позволил реализовать «супербыстрое» программирование. Однако на глаз все равно оно проходит быстрее чем последовательное. DIP корпуса использованы исключительно потому, что автором при отладке используются именно они. Желающие могут сами переделать всю эту конструкцию под SMD.
Особенности:
- Программирование AVR в параллельном режиме.
- Возможность «безболезненно» программировать фузы DWEN и RSTDISBL
- Возможность программирования фуза SPIEN
Поддерживаемые микроконтроллеры:
ATtiny 2313, ATmega32, ATmega16, ATmega8515, ATmega8535, ATmega8, ATmega48, ATmega88, ATmega168
Схема:
Схема проста и не имеет каких то особенностей.
- На микросхеме DA1 собран стабилизатор напряжения +5V
- На транзисторах VT1 и VT2 реализован конвертер TTL — RS232
- Микросхема DD2 может быть применена с любым буквенным индексом
- Разъем XS2 служит для подключения к COM порту компьютера
- К разъему XS3 подключается программируемый микроконтроллер.
- Разъем XS4 предназначался для внутрисхемной отладки и может быть исключен или же использован для программирования mega16 по интерфейсу JTAG
- Питание устройства осуществляется от внешнего стабилизированного источника +12V
Mega16 должна быть запрограммирована файлом code.hex из прилагаемого архива.
Фузы mega16 должны быть запрограммированы следующим образом:
CKSEL = 1110
SUT = 00
В архиве также имеется схема в форматах PDF и PCAD2002, разведенная печатная плата для головного модуля устройства и адаптеров для различных видов МК.
Пример реализации:
Центральный модуль.
Плата адаптеров.
Работа с устройством
Перед началом работы необходимо вставить программируемый микроконтроллер в соответствующую панельку. Соединить центральный модуль устройства с платой адаптеров 20-ти проводным кабелем. Подать питание и запустить управляющую программу ParaPROG.exe
После старта управляющая программа имеет следующий вид:
Доступна только одна кнопка «Read Chip». При нажатии на эту кнопку программа ParaPROG осуществляет поиск программируемого микроконтроллера и пытается прочесть фузы и лок биты.
Если поиск устройства был неудачным программа выводит сообщение о неудачной попытке и остается в прежнем состоянии.
При удачном поиске осуществляется автоопределение подключенного микроконтроллера, считываются фузы, лок биты и вся эта информация выводится в основном окне программы. Становятся доступны все остальные кнопки.
Значения фузов и лок битов выводятся в формате принятом Atmel. Т.е. 1 = бит не запрограммирован (соответсвует установленному флажку) и 0 = бит запрограммирован (соответсвует снятому флажку)
Кнопки выполняют следующие функции:
Read Chip
Нажатие на эту кнопку осуществляет синхронизацию управляющей программы и центрального модуля программатора, поиск программируемого микроконтроллера, читает сигнатуру, фузы и лок биты
Write Fuses
Запись фузов в соответсвии со значениями заданными флажками для фузов
Write Lock Bits
Запись лок битов соответсвии со значениями заданными флажками для фузов
Chip Erase
Стирает Flash память программируемого микроконтроллера и сброс лок битов
Write Flash
Программирование Flash памяти в соответсвии с файлом, имя которого задано в поле рядом с этой кнопкой
Verify Flash
Сравнение Flash памяти с содержимым файла, имя которого задано в поле рядом с кнопкой Write Flash
Read Flash
Считывание Flash памяти в файл, имя которого задано в поле рядом с этой кнопкой
Программа принимает для записи/сравнения, а также выходным для чтения Flash является файлы binary формата. Получить их можно при помощи утилиты hex2bin из прилагаемого архива.
Во время работы программой выводятся сообщения в строке состояния, диалоговых окнах помогающие пользователю сориентироваться в работе программы.
Замеченные и пока не устранненные ошибки:
Так как при постоянно поданном напряжении +12V на Reset программируемые МК довольно сильно грелись, алгоритм работы устройства был сменен на временное включение режима программирования и немедленное выключение его после выполнения действия. Вледсвие этого при работе с некоторыми МК (например мега48) происходит рассинхронизация управляющей программы и основного модуля программатора. Поэтому рекомендуется иногда нажимать кнопку «Read Chip» проводя этим повторную синхронизацию (желательно перед каждым новым действием)
Иногда имя выходного файла при операции «Read Flash» самопроизвольно меняется на имя «Reading Flash»
Новая версия управляющей программы 0.2.0.7
Добавлено:
- Поддержка ATmega162.
- Возможность добавления пользователем новых кристаллов. Поддержка различных процессоров вынесена в INI-файлы. Теперь для добавления нового процессора достаточно создать для него файл. В этом файле помимо всего прочего есть дефолтные значения для фузов (из даташита).
- После считывания битов конфигурации с чипа для каждого байта отображается его HEX-представление (для более удобного переноса значений, например, в скрипт пакетной прошивки PonyProg).
- Значения фузов, не соответствующие дефолтным, отображаются красным цветом.
- Окошко ввода ком-порта и сохранение этой информации, а также путей к файлам BIN и HEX, в файл конфигурации.
- Ручной выбор программируемого кристалла. Это полезно, когда у программируемого чипа испортились байты сигнатуры и обычным способом он не видится программатором (иногда бывает 🙂 ).
- Автоматический запуск конвертера hex2bin при выборе для заливки во флэш файла типа HEX.
- Исправлена ошибка самопроизвольного изменения имени выходного файла при операции «Read Flash».
Прошивка, управляющая программа, схема и печатные платы (436 Кб). Загрузок: 726
ParaPROG v 0.2.0.7 (217 Кб). Загрузок: 572
Автор статьи: Павел Сироткин и Олег Шепель E-mail: [email protected] [email protected]
Просмотров: 11968
Печать
|
Макетная схема ATmega8 — Часть 2 из 3 — Микроконтроллер
Микроконтроллеры AVR, учебные пособия
Этот учебник является продолжением макетной платы ATmega8 — Часть 1, где мы собираем небольшой блок питания на макетной плате. В этой части мы добавим микроконтроллер ATmega8 и интерфейс, позволяющий его программировать.
Первым делом нужно ориентироваться в микроконтроллере ATMEGA8. Поскольку мы строим нашу схему на макетной плате, мы используем вариант PDIP (ATMEGA8A-PU). Вы также можете построить эту схему, используя ATmega48, 88, 168 или 328, так как все они имеют одинаковую схему контактов, но имеют немного разные функции, тактовую частоту и память.
Когда вы посмотрите на микроконтроллер, вы увидите несколько особенностей, которые помогают определить номера контактов. На одном конце есть полукруг/полумесяц. Это обозначает верхнюю часть IC (интегральной схемы). В корпусе PDIP/DIP выводы нумеруются с 1 против часовой стрелки от этого маркера. Кроме того, на ATmega8 есть небольшой кружок, обозначающий контакт 1.
Когда вы посмотрите на распиновку, вы заметите, что многие из контактов помечены как порты ввода-вывода. например Контакт 28 имеет маркировку «PC5», что означает «порт C, контакт 5». Порты ввода-вывода также имеют второстепенные функции, указанные в скобках. например контакт 28 имеет вторичные функции ADC5 (входной канал 5 АЦП) и SCL (линия синхронизации двухпроводной последовательной шины). В некоторых случаях (например, сброс на контакте 1) вторичная функция используется гораздо чаще, чем основная функция.
Теперь пришло время вставить микроконтроллер на макетную плату. Вам нужно будет немного согнуть штифты внутрь. Один из способов заключается в том, чтобы неглубоко вставить одну сторону микросхемы, а затем согнуть штырьки на другой стороне так, чтобы они вошли в точки крепления на этой стороне. Затем вы можете аккуратно втолкнуть/пошевелить микросхему внутрь.
Теперь подадим питание на ИМС. ATmega8 имеет 2 контакта заземления (8 и 22), контакт VCC (7) для положительного источника питания и аналоговый контакт VCC (20) для подачи питания на АЦП. На рисунке ниже показано, как они подключены.
Для нормальной работы контакт 1 (PD0/Reset) должен быть высоким. Когда этот вывод временно заземлен, система перезагружается/перезагружается. Это обозначено на схеме выводов горизонтальной линией над надписью «RESET». Это обозначение довольно распространено и означает, что функция активируется, когда контакт заземлен.
Мы построим схему, состоящую из или 10k; резистор и кнопочный переключатель. Резистор «подтягивает» контакт, чтобы он был высоким для нормальной работы, в то время как кнопочный переключатель временно заземляет контакт для операции сброса. Если бы резистора не было (т. е. он был бы заменен куском провода сопротивлением 0 Ом), то нажатие кнопки отводило бы всю мощность на землю, что означало бы отсутствие питания для VCC/AVCC и взрыв блока питания.
Переключатель, который мы используем, представляет собой микротактильный переключатель. Эти переключатели имеют 2 пары контактов, причем контакты в каждой паре соединены друг с другом. Это показано на диаграммах ниже.
Вам будет полезно выпрямить контакты микротактильного переключателя перед его установкой на макетную плату. Теперь нам просто нужно построить схему на плате.
Последним этапом является создание интерфейса ISP (в системном программировании). Это позволяет записывать прошивку в микроконтроллер с помощью программатора, такого как USBASP AVR Programmer.
Интерфейс интернет-провайдера будет через 10-контактный разъем IDC (закрытый / коробчатый), что вызывает у нас проблемы. Эти разъемы не помещаются на макетную плату, поскольку расстояние между рядами составляет 0,1 дюйма (2,54 мм). Нам нужно, чтобы ряды были 0,3 дюйма (7,62 мм), чтобы они поместились по обе стороны от центрального канала макетной платы. Есть много решений этой проблемы. Мы будем сгибать контакты разъема IDC с выводами под прямым углом. Это может выглядеть не очень красиво, но это работает.
Наконец, мы вставляем разъем IDC, затем подключаем его к источнику питания 5 В, земле и микроконтроллеру.