Простой внутрисхемный программатор

AVR. Учебный курс. Трактат о программаторах

Простой внутрисхемный программатор

Программа для микроконтроллера пишется на любом удобном языке программирования, компилируется в бинарный файл (или файл формата intel HEX) и заливается в микроконтроллер посредством программатора.
 

Итак, первым шагом в освоении микроконтроллера обычно становится программатор. Ведь без программатора невозможно загнать программу в микроконтроллер и он так и останется безжизненным куском кремния.
 

Что же представляет из себя это устройство? В простейшем случае программатор это девайс который связывает микроконтроллер и компьютер, позволяя с компа залить файл прошивки в память контроллера. Также нужна прошивающая программа, которая по специальному протоколу загонит данные в микроконтроллер.

Программаторы бывают разные под разные семейства контроллеров существуют свои программаторы. Впрочем, бывают и универсальные. Более того, даже ту же простейшую AVR’ку можно прошить несколькими способами:
 

Внутрисхемное программирование (ISP)
Самый популярный способ прошивать современные контроллеры. Внутрисхемным данный метод называется потому, что микроконтроллер в этот момент находится в схеме целевого устройства — он может быть даже наглухо туда впаян. Для нужд программатора в этом случае выделяется несколько выводов контроллера (обычно 3..5 в зависимости от контроллера).

К этим выводам подключается прошивающий шнур программатора и происходит заливка прошивки. После чего шнур отключается и контроллер начинает работу. У AVR прошивка заливается по интерфейсу SPI и для работы программатора нужно четыре линии и питание (достаточно только земли, чтобы уравнять потенциалы земель программатора и устройства):

  • MISO — данные идущие от контроллера (Master-Input/Slave-Output)
  • MOSI — данные идущие в контроллер (Master-Output/Slave-Input)
  • SCK — тактовые импульсы интерфейса SPI
  • RESET — сигналом на RESET программатор вводит контроллер в режим программирования
  • GND — земля

Сам же разъем внутрисхемного программирования представляет собой всего лишь несколько штырьков. Лишь бы на него было удобно надеть разъем. Конфигурация его может быть любой, как тебе удобней.
Однако все же есть один популярный стандарт:

Для внутрисхемной прошивки контроллеров AVR существует не один десяток разнообразных программаторов. Отличаются они в первую очередь по скорости работы и типу подключения к компьютеру (COM/LPT/USB). А также бывают безмозглыми или со своим управляющим контроллером.
 

Безмозглые программаторы, как правило, дешевые, очень простые в изготовлении и наладке. Но при этом обычно работают исключительно через архаичные COM или LPT порты. Которые найти в современном компьютере целая проблема. А еще требуют прямого доступа к портам, что уже в Windows XP может быть проблемой. Плюс бывает зависимость от тактовой частоты процессора компьютера.
 

Так что твой 3ГГЦ-овый десятиядерный монстр может пролететь, как фанера над Парижем.
 

Идеальный компьютер для работы с такими программаторами это какой-нибудь PIII-800Mhz с Windows98…XP. Вот очень краткая подборка проверенных лично безмозглых программаторов:

  • Программатор Громова.Простейшая схема, работает через оболочку UniProf(удобнейшая вещь!!!), но имеет ряд проблем. В частности тут COM порт используется нетрадиционно и на некоторых материнках может не заработать. А еще на быстрых компах часто не работает. Да, через адаптер USB-COM эта схема работать не будет. По причине извратности подхода 🙂
  • STK200Надежная и дубовая, как кувалда, схема. Работает через LPT порт. Поддерживается многими программами, например avrdude. Требует прямого доступа к порту со стороны операционной системы и наличие LPT порта.
  • FTBB-PROG.Очень надежный и быстрый программатор работающий через USB, причем безо всяких извратов. C драйверами под разные операционные системы. И мощной оболочкой avrdude. Недостаток один — содержит редкую и дорогую микросхему FTDI, да в таком мелком корпусе, что запаять ее без меткого глаза, твердой руки и большого опыта пайки весьма сложно. Шаг выводов около 0.3мм. Данный программатор встроен в демоплаты Pinboard

Программаторы с управляющим контроллером лишены многих проблем безмозглых. Они без особых проблем работают через USB. А если собраны на COM порт, то без извращенских методик работы с данными — как честный COM порт. Так что адаптеры COM-USB работают на ура.

И детали подобрать можно покрупней, чтобы легче было паять. Но у этих программаторов есть другая проблема — для того чтобы сделать такой программатор нужен другой программатор, чтобы прошить ему управляющий контроллер. Проблема курицы и яйца.

Широко получили распространение такие программаторы как:

  • USBASP
  • AVRDOPER
  • AVR910 Protoss

Внутрисхемное программирование, несмотря на все его удобства, имеет ряд ограничений. Микроконтроллер должен быть запущен, иначе он не сможет ответить на сигнал программатора. Поэтому если неправильно выставить биты конфигурации (FUSE), например, переключить на внешний кварцевый резонатор, а сам кварц не поставить.

То контроллер не сможет запуститься и прошить его внутрисхемно будет уже нельзя. По крайней мере до тех пор пока МК не будет запущен. Также в битах конфигурации можно отключить режим внутрисхемной прошивки или преваратить вывод RESET в обычный порт ввода-вывода (это справедливо для малых МК, у которых RESET совмещен с портом).

Такое действо тоже обрубает программирование по ISP.

Параллельное высоковольтное программирование Обычно применяется на поточном производстве при массовой (сотни штук) прошивке чипов в программаторе перед запайкой их в устройство.

Параллельное программирование во много раз быстрей последовательного (ISP), но требует подачи на RESET напряжения в 12 вольт. А также для параллельной зашивки требуется уже не 3 линии данных, а восемь + линии управления. Для программирования в этом режиме микроконтроллер вставляется в панельку программатора, а после прошивки переставляется в целевое устройство.
 

Для радиолюбительской практики он особо не нужен, т.к. ISP программатор решает 99% насущных задач, но тем не менее параллельный программатор может пригодиться.

Например, если в результате ошибочных действий были неправильно выставлены FUSE биты и был отрублен режим ISP. Параллельному программатору на настройку FUSE плевать с высокой колокольни.

Плюс некоторые старые модели микроконтроллеров могут прошиваться только высоковольтным программатором.
Из параллельных программаторов для AVR на ум приходит только:

  • HVProg от ElmChan
  • Paraprog
  • DerHammer

А также есть универсальные вроде TurboProg 6, BeeProg, ChipProg++, Fiton которые могут прошивать огромное количество разных микроконтроллеров, но и стоят неслабо. Тысяч по 10-15. Нужны в основном только ремонтникам, т.к. когда не знаешь что тебе завтра притащат на ремонт надо быть готовым ко всему.
 

Прошивка через JTAG
Вообще JTAG это отладочный интерфейс. Он позволяет пошагово выполнять твою программу прям в кристалле. Но с его помощью можно и программу прошить, или FUSE биты вставить. К сожалению JTAG доступен далеко не во всех микроконтроллерах, только в старших моделях в 40ногих микроконтроллерах. Начиная с Atmega16.
 

Компания AVR продает фирменный комплект JTAG ICEII для работы с микроконтроллерами по JTAG, но стоит он (как и любой профессиональный инструмент) недешево. Около 10-15тыр. Также есть первая модель JTAG ICE. Ее можно легко изготовить самому, а еще она встроена в мою демоплату Pinboard.

Прошивка через Bootloader
Многие микроконтроллеры AVR имеют режим самопрошивки. Т.е. в микроконтроллер изначально, любым указанным выше способом, зашивается спец программка — bootloader. Дальше для перешивки программатор не нужен. Достаточно выполнить сброс микроконтроллера и подать ему специальный сигнал.

После чего он входит в режим программирования и через обычный последовательный интерфейс в него заливается прошивка. Подробней описано в статье посвященной бутлоадеру. Достоинство этого метода еще и в том, что работая через бутлоадер очень сложно закосячить микроконтроллер настолько, что он не будет отвечать вообще. Т.к.

настройки FUSE для бутлоадера недоступны.

Бутлоадер также прошит по умолчанию в главный контроллер демоплаты Pinboard чтобы облегчить и обезопасить первые шаги на пути освоения микроконтроллеров.
 

Pinboard II Прошивка AVR с помощью демоплаты Pinboard II (для Pinboard 1.1 все похоже)

 

Источник: http://easyelectronics.ru/avr-uchebnyj-kurs-traktat-o-programmatorax.html

Копилка знаний – онлайн справочник прогресса в мире

Обзоры новых технологий, изучение инноваций строительства, разбор сантехнических идей, анализ схем электрики и понимание электроники.

Как делают стекловолокно и для чего нужен сшитый полиэтилен? Что такое реактивный ранец и как выбрать гребной винт лодочного мотора?

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

Справочник прогресса мира

Что такое спиннер и как выбрать насос для дома для дачи? Какими технологиями производят углеродное волокно и как собирают схему контроллера заряда аккумулятора?

Насколько сложны для обывателя электроника и подключение напряжения самостоятельно. Чем отличается сантехника стальная от пластика и какое строительство считается экономным?

Безграничный объём тайн механики, электрики, электроники, строительства, сантехники и даже туризма. Где найти разгадку?

Справочник технологий, новинок, прогресса в мире — лучший инструмент. На страницах справочника легко узнать как центровать валы агрегатов,  как сделать своими руками из дерева уникальный интерьер?

Каким способом получить карбон или уложить виниловый сайдинг и ламинат? Что нужно для применения программатора? Как освоить кулинарный туризм и узнать, что такое энтропия и коалесценция?

Интернет-копилка знаний

Новая механика, современная электроника, бытовое строительство, понятная электрика, европейская сантехника. Добавить прочий опыт — вот и доступ к знаниям!

Отныне каждому входящему на сайт ZETSILA.RU открыты технологии мира, а также:

  1. Опыт бывалых
  2. Советы спецов
  3. Инструкции производителей
  4. Анализы, исследования, обзоры
  5. Идеи и практические воплощения
Читайте также:  Подключение семисегментного индикатора (1 разряд) к arduino по spi

База знаний традиционно держится на опорах, испытанных жизнью. Крепкие опоры помогают преодолеть любые преграды.

Как построить опорный механизм на фоне стремительных технологий и прогресса? Легче, чем может показаться на первый взгляд. Требуется немного — актуальная понятная информация.

Двигатель информации

Есть масса источников информации, дающих знания, но далеко не каждый справочник раскрывает тему максимально развёрнуто.

Копилка знаний по образу и подобию справочника — ZETSILA.RU, тоже не претендует на статус Википедии.

Здесь попросту стремятся увидеть детали широко раскрытыми глазами, информативно разъяснить и разложить темы на полочки.

Источник: http://zetsila.ru/%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%D1%82%D0%BE%D1%80-%D0%BC%D0%B8%D0%BA%D1%80%D0%BE%D1%81%D1%85%D0%B5%D0%BC-%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D0%B8/

PIC JDM – простейший программатор для PIC (ICSP)

Этот программатор обойдется вам меньше чем в пол долора, при этом им можно легко прошить много микроконтроллеров PIC. Программируемый микроконтроллер не нуждается во внешнем питании в процессе прошивки если устройство не потребляет больше 15 мА.

Недостатком программатора является необходимость в наличии COM-порта (причем напряжение на линиях порта должно быть не ниже 8.

6 В, очень редко но бывает), которого нет в ноутбуках, однако если вам необходимо разок другой запрограммировать PIC, то PIC JDM подойдет в самый раз.

Одно важное ограничение которое вы должны знать перед сборкой это то что программатор не подойдет для программирования некоторых чипов. А именно чипов в которых линии PGD и PGC (Data и Clock) находятся на тех же пинах где и сигнальные линиии модуля USB (D+, D-). Из за такого совмещения на этих пинах в этих МК нельзя превышать напряжение 3,6 В – в результате PIC JDM может навредить таким МК.

Список поддерживаемых девайсов завист в основном от прошивающего софта (версии программы WinPic 800 или ICProg). Один из производителей Bravekit дает следующий список:

10F series PIC10F200    PIC10F202   PIC10F204   PIC10F206     
12F series PIC12F508   PIC12F509   PIC12F510   PIC12F629   PIC12F635   PIC12F675   PIC12F635   PIC12F683 
16F/C series PIC16F627   PIC16F627A   PIC16F628   PIC16F628A   PIC16F630   PIC16F636   PIC16F639   PIC16F648A   PIC16F676   PIC16F684   PIC16F685   PIC16F687   PIC16F688   PIC16F689   PIC16F690   PIC16F73   PIC16F74   PIC16F76   PIC16F77   PIC16F716   PIC16F737   PIC16F747   PIC16F767   PIC16F777   PIC16F83   PIC16F84   PIC16F84A   PIC16F87   PIC16F88   PIC16F818   PIC16F819   PIC16F870   PIC16F871   PIC16F872   PIC16F873   PIC16F873A   PIC16F874   PIC16F874A   PIC16F876   PIC16F876A   PIC16F877   PIC16F877A      PIC16C61   PIC16C62   PIC16C62A/B   PIC16C63   PIC16C63A   PIC16C64   PIC16C64A   PIC16C65   PIC16C65A/B   PIC16C66   PIC16C67   PIC16C620/A   PIC16C621/A   PIC16C622/A   PIC16CE623   PIC16CE624   PIC16CE625   PIC16C71   PIC16C72   PIC16C72A   PIC16C73   PIC16C73A/B   PIC16C74   PIC16C74A/B   PIC16C76   PIC16C77   PIC16C710   PIC16C711   PIC16C712   PIC16C716   PIC16C745   PIC16C765   PIC16C773   PIC16C774   PIC16C923   PIC16C924   PIC16C925   PIC16C926 
18F series PIC18F1220   PIC18F2220   PIC18F2320   PIC18F2331   PIC18F2410   PIC18F242-2439   PIC18F2420   PIC18F2431   PIC18F2455   PIC18F248   PIC18F2480   PIC18F2510   PIC18F2515   PIC18F252-2539   PIC18F2520   PIC18F2525   PIC18F2550   PIC18F258   PIC18F2580   PIC18F2585   PIC18F2610   PIC18F2620   PIC18F2680   PIC18F4220   PIC18F4320   PIC18F4331   PIC18F4410   PIC18F442-4439   PIC18F4420   PIC18F4431   PIC18F4455   PIC18F448   PIC18F4480   PIC18F4510   PIC18F4515   PIC18F452-4539   PIC18F4520   PIC18F4525   PIC18F4550   PIC18F458   PIC18F4580   PIC18F4585   PIC18F4610   PIC18F4620   PIC18F4680

 Источник http://www.bravekit.com/pic_jdm_icsp_microchip_programmer

Что нужно:

  1. Разъем “гнездо DB9”
  2. 4 x Диод 1N4148 в корпусе SOD27 (DO-35)
  3. 2 х Транзистор BC337, корпус TO-92
  4. 2 х конденсатор электролетический: 100 мкФ >16В
  5. Стабилитрон 6.2 В, например BZX55C6V2
  6. Стабилитрон 5.1 В, например BZX55C5V1
  7. Резистор 1.5к 0.125 Вт или 0.25 Вт.
  8. Резистор 10к 0.125 Вт или 0.25 Вт.
  9. Светодиод

Схема:

Вид сверху (подписи пинов разъёма ICSP)

Скачать проект для EagleCAD можно PIC JDM.zip

Также удобно сделать удленитель “DB9 гнездо-штекер”, о разъемах вы можете прочитать тут. Припаять достаточно контакты номер 3(TX), 4(DTR), 5(SG), 7(RTS), 8(CTS). Оставшиеся жилы кабеля можно припаять куда угодно.

Программатор совместим с несколькими программами, WinPic800, Ic-prog, WinPic. Также можете посмотреть на программу http://picpgm.picprojects.net/. Эта программа поддерживает данный программатор а также работает из Windows, Linux а также с ARM-процессоров (например с Raspberry PI)  

WinPic800 можно скачать тут: http://www.winpic800.com/. Я пробовал только под Windows XP. Запускал я её в VirtualBox (так как у меня Linux), и пробросил в нее COM-порт (Выбрал в списке ВМ систему, Настроить, COM-порты, включить последовательный порт, Режим порта: Хост устройство, путь к устройству /dev/ttyS0 или какой у вас там, ОК)

После установки и запуска WinPic800 выбрать Setting > hardware, “JDM Programmer”, Apply Edits.

После этого можно подключить программатор к контроллеру (через ICSP разъем) и определить микроконтроллер Device>Detect Device.

Источник: https://bovs.org/post/71/

Программатор своими руками. Программатор для PIC своими руками :

Вот есть микроконтроллер, есть написанная программа. Что ещё нужно? Программатор! Ведь без помощи аппаратуры, которая сможет записать последовательностью сигналов процесс, который хочет реализовать человек, сложно будет что-то сделать. А как здорово сделать программатор своими руками!

Также здесь вы найдете описание программаторов и из другого семейства – АВР, но исключительно в сравнительных целях. Приступим к статье, где рассказывается, как сделать программатор-flash своими руками.

Для чего необходим программатор

Так как статья пишется в том числе и для читателей, не слишком осведомленных в этом вопросе, то необходимо взять во внимание и такой пункт. Программатор – это специальное устройство, которое посредством получаемых от компьютера сигналов программирует микроконтроллер, который будет управлять схемой.

Качественное устройство является очень важным, ведь в таком случае можно будет быть уверенным в том, что МК не выйдет из строя, или, что важнее, из строя не выйдет компьютер. Есть небольшое уточнение: программатор для PIC своими руками делают только те, у кого есть микроконтроллеры этого семейства. Другие из-за другой архитектуры могут не работать.

Но можно попробовать своими силами усовершенствовать представленные схемы и собрать программатор AVR своими руками.

Платные против самодельных

Отдельно нужно рассказать о приобретенных в магазинах и самодельных программаторах. Дело в том, что это устройства не очень-то и простые и требуют уже определённых навыков работы, практики пайки и умения обращаться с железом.

При работе с купленным программатором от производителя или его дилера можно быть уверенным в том, что на прибор программа будет записана, и ничего не сгорит.

А в случае обнаружения неисправностей в самом начале периода эксплуатации его можно вернуть и получить взамен работоспособное устройство.

А вот с самодельными программаторами всегда немного сложнее. Дело в том, что даже если они и тестировались, то, как правило, в очень узком диапазоне используемой техники, поэтому вероятность того, что что-то пойдёт не так, высока.

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

Хотя учитывая то, как любят микроконтроллеры перегорать, повреждения будут не только у него.

При пайке своей платы, для того чтобы избежать негативных последствий, перед сборкой механизма следует проверить работоспособность всех элементов, которые будут использованы в плате, с помощью специальных устройств.

Драйвера

Первоначально следует подобрать программное обеспечение. В зависимости от схемы программатор может быть заточен или под один микроконтроллер, или под большое их количество. Тот, что будет далее рассматриваться, рассчитан примерно на 98 программаторов от 12-го до 18-го семейств.

Для тех, кому понравится вариант сборки, следует уточнить, что в качестве драйверного программного обеспечения использовалась программа IC-PROG. Можете попробовать работать и с другой, но уже на свой страх и риск. Это информация для тех, кто хочет создать программатор для AVR своими руками. Далее будет указано, для каких семейств микроконтроллеров РІС он рассчитан.

Если есть желание сделать программатор AVR своими руками или какой-то другой тип МК, то вы всегда можете попытаться.

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

Вот тут уже можно попробовать сделать программатор для PIC своими руками. В качестве гнезда необходимо использовать разъем DB9. Можно сделать и USB-программатор своими руками, но для него понадобятся дополнительные элементы схемы, которые усложнят и без того довольно сложную плату.

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

Процесс сборки и использования программатора таков:

  1. Собрать сам программатор так, как написано на схемах. Просмотреть на наличие некачественной пайки, а также потенциальных мест замыкания. Программатор рассчитан на работу с напряжением 15-18В, больше категорически не рекомендуется.
  2. Подготовьте среду управления прошивкой (выше было упоминание одной программы, с которой программатор точно работает).

Процесс прошивки микроконтроллера

Процесс прошивки микроконтроллера данными можно считать продолжением предыдущего списка:

  1. Произвести необходимые для работы программы настройки.
  2. Установить микроконтроллер в программатор так, как отмечено на схеме. Лучше лишний раз убедиться, что всё так, как должно быть, чем ехать за новым МК.
  3. Подключить питание.
  4. Запустить выбранное программное обеспечения (для этого программатора ещё раз посоветуем IC-Prog).
  5. В выпадающем меню вверху справа выбрать, какой именно микроконтроллер следует прошить.
  6. Подготовленный файл выбрать для программирования. Для этого перейдите по пути “Файл” – “Открыть файл”. Смотрите, не перепутайте с «Открыть файл данных», это совсем другое, прошить микроконтроллер с помощью второй кнопки не получится.
  7. Нажать на кнопку «Начать программировать микросхему». Примерное время, через которое она будет запрограммирована – до 2 минут. Прерывать процесс программирования нельзя, это чревато выведением из строя микроконтроллера.
  8. И в качестве небольшого контроля нажмите на кнопку «Сравнить микросхему с буфером».
Читайте также:  Как укоротить диполь

Не очень сложно, но эта последовательность действий позволяет получить качественный программатор, своими руками сделанный, для различных типов микроконтроллеров РІС.

Какие микроконтроллеры поддерживаются и могут быть прошиты программным обеспечением

Как уже выше упоминалось, этот программатор может работать как минимум с 98 моделями. Как можно заметить по схематическим рисункам и платам, он рассчитан на те МК, что имеют 8, 14, 18, 28 и 40 выводов.

Этого должно хватить для самых различных экспериментов и построения самых разных механизмов, которые только можно сделать в пределах скромного бюджета среднестатистического гражданина.

Можно выразить уверенность, что сделанный программатор своими руками сможет удовлетворить самых требовательных радиолюбителей – при условии, что он будет сделан качественно.

Источник: https://www.syl.ru/article/210461/new_programmator-svoimi-rukami-programmator-dlya-pic-svoimi-rukami

AVR программатор

Введение

   Чтобы “оживить” микроконтроллер AVR, в его flash память нужно записать прошивку. Это процедура выполняется с помощью программатора – устройства, подключаемого между компьютером и микроконтроллером и работающего под управлением специальной программы.

   Наиболее популярным способом программирования микроконтроллеров AVR является внутрисхемное программирование по SPI интерфейсу. Как понятно из названия, этот способ позволяет программировать микроконтроллеры AVR прямо в составе схемы. Это очень удобно, потому что программу микроконтроллера в этом случае можно всегда модифицировать, не вынимая (не выпаивая) его из платы.

   Для внутрисхемного программирования микроконтроллеров AVR нужно вывести на разъем линии SPI интерфейса  – SCK, MISO, MOSI, линию сброса – RESET, а также плюс и минус питания (VCC и GND). 

   Существует две стандартных конфигурации разъема программирования – десяти и шести выводной. В качестве разъемов обычно используют — прямые/угловые разъемы серии IDC или   штыревые вилки PLD.   Принципиальная схема простого внутрисхемного программатора для AVR приведена на рисунке ниже. Разъем Х1 подключается к COM порту компьютера, а Х2 с помощью кабеля соединяется с платой.

   Номиналы и типы элементов программатор понятны из схемы. Диод D1 можно заменить на 1N4148 или любой другой. Стабилитроны D2, D3 можно заменить аналогичными с напряжением стабилизации 5.1 или 4.7 вольт, например отечественными КС147А/2С147А (номиналы резисторов R3, R3 при этом нужно уменьшить до 2 Ком).

AVR программатор, собранный на макетной плате

AVR программатор, собранный на печатной плате

   Прошивка микроконтроллера этим программатором осуществляется с помощью программыPonyProg. Скачиваем программу с официального сайта (v2.07c BETA для windows). Устанавливаем и запускаем ее.   При первом запуске программа предупредит вас о том, что нужно провести калибровку и настроить PonyProg.Запускаем калибровку — Setup > Calibration. В открывшемся диалоговом окошке жмем кнопку Yes. Настраиваем PonyProg для работы с этим программатором – Setup > Interface SetupВ появившемся меню нужно только выбрать номер COM порта и нажать ОК.   Далее… Выбираем тип программируемого устройства — Device > AVR micro > ваш микроконтроллер.Открываем файл прошивки File > Open Program (FLASH) File…  Не забудьте выбрать тип файла *.hex!   Теперь можно программировать микроконтроллер. Стираем его flash память – Command > EraseПрошиваем новую программу – Command > Write Program (FLASH)Наслаждаемся работой микроконтроллера.   Можно немного автоматизировать эту процедуру.Выбираем Command > Program OptionsВ открывшемся окне ставим галочки Erase и Write Program memory (FLASH). Жмем ОК.Теперь стирание и программирование микроконтроллера будет выполняться одной командой — Command > Program.Все перечисленные действия можно выполнять с помощью кнопок, расположенных под строкой меню. Также PonyProg позволяет работать с EEPROM памятью, Fuse и Lock битами микроконтроллеров AVR.

Файлы

Печатка в формате Eagle – avr-programmator.brd

Источник: http://chipenable.ru/index.php/item/64

Внутрисхемное программирование микроконтроллеров PIC

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

Данный процесс сопровождается извлечением микроконтроллера из платы и подсоединение через различные переходники к программатору, после чего опять в плату и так до тех пор, пока устройство не будет работать как нам того хочется.

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

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

Внутрисхемное программирование микроконтроллеров – это программирование микроконтроллеров, не извлекая их с рабочей платы устройства.

Что бы иметь возможность подобной перепрошивки, необходимо заранее позаботиться об этом. Дело в том, что для прошивки практического контроллера используются лишь некоторые его выводы. Таким образом, можно на плате разрабатываемого устройства заранее зарезервировать место под слот (гнездо) к которому будет подключаться кабель с программатора.

Для программирования PIC контроллеров используются следующие выводы: MCLR, VDD,GND/PGM, PGD, PGC. Расположение этих выводов в конкретном микроконтроллере можно просмотреть в соответствующем датасшите(описание от производителя).

Рассмотрим пример внутрисхемного программирования PIC16F876A. Из датасшита на данный микроконтроллер определяем нужные нам выводы.

При составлении схемы устройства зарезервируем эти выводы и, при разводке печатной платы, соберем их вместе, где разместим слот, для подключения кабеля от программатора.

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

Кроме того, через вывод VDD микроконтроллер подключается к питанию, к которому подключена вся схема.

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

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

Пример внутрисхемного программирования генератора псевдослучайных чисел на основе PIC16F876A с помощью PIC и EEPROM программатор:

Так же любые вопросы можно обсудить на форуме.

Источник: http://electroteh.oxnull.net/index.php/stati/mikrokontrollery/198-vnutriskhemnoe-programmirovanie-mikrokontrollerov-pic

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

USB  ПРОГРАММАТОР  

ДЛЯ ВНУТРИСХЕМНОГО ПРОГРАММИРОВАНИЯ  

МИКРОКОНТРОЛЛЕРОВ  AVR

(по мотивам проекта  AvrUsb500 by Petka)

            1) Описание программатора

            2) Программирование МК через LPT порт

            3) Программирование МК через USB-COM преобразователь

            4) Файлы к статье

            Чем дальше, тем меньше остаётся на корпусах компьютеров проверенных, изученных вдоль и попе­рёк портов LPT, COM.

Хотя ещё можно приобрести компьютер (пусть и б/у) с такими портами для использования его в качестве “рабочей лошадки”, всё же приходится задумываться о грядущей за­мене (мо­дернизации) аппаратуры навешанной на старые порты. В частности, что-то нужно делать с ин­стру­ментами для программирования микроконтроллеров.

И лучшие люди Отечества (в данном случае, Petka) не дремлют. В результате появился работоспособный программатор для внутрисхемного програм­мирова­ния микроконтроллеров AVR, совместимый с STK500v2.

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

–  аппаратный преобразователь USB – COM (не надо извращаться с программной реализа­цией USB);

–  новый протокол от Atmel. Теперь не требуется перешивать программатор при появлении но­вых чипов;

–  решена проблема “курицы и яйца” (как / чем запрограммировать микроконтроллер про­грам­матора);

–  возможность изменения режимов работы программатора, при помощи любой терми­наль­ной программы, например HyperTerminal;

–  возможность тактирования программируемого микроконтроллера сигналом 1 МГц;

–  готовый пакет документации, со всеми необходимыми исходниками (схемы, прошивки, чер­тежи печатных плат, исходные тексты программы микроконтроллера).

            К недостаткам проекта в целом, можно отнести некоторую “размытость” полезной информации по 50-ти страницам форума, что приводит к определённым трудностям при повторении конструкции.

            Нужно отметить, что если под рукой ничего, кроме USB порта нет, то выход только один – соби­рать программатор AvrUsb500 by Petka”как есть”. Однако в ряде частных случаев конструкцию можно упростить:

–  уже имеются проверенные инструментальные средства для программирования микро­кон­трол­леров. В этом случае гораздо проще прошить МК программатора отдельно. Если размеры будущего программатора большой роли не играют и допустимо использовать МК в корпусе DIP, то этот вариант однозначно предпочтительнее;

–  есть преобразователь интерфейса USB – RS232 промышленного изготовления. Было бы разумно использовать его в качестве составляющей. Тогда, правда, придётся сделать питание программатора от программируемого устройства, а не от порта USB, однако, по мнению автора статьи, такой вариант надёжнее.

            В результате схема программатора AvrUsb500 by Petka приведена к следующему виду:

            Stk500″ (см. файлы к статье). Содержи­мое ар­хива:

Atmega8_14745600.hex

прошивка для микроконтроллера программатора (ATmega8), при частоте кварцевого резонатора 14,7456 МГц (из архива AvrUSB500_by_Petka_HEX_SRC_v6_uni)

Терминал STK500.ht

файл программы HyperTerminal необходимый для первона­чаль­ных настроек программатора

1. Схема.pdf

принципиальная схема программатора

2. Нижняя сторона ПП (ЛУТ).pdf

8 копий рисунка печатной платы для ла­зерно-утюж­ной тех­нологии изготовления ПП

3. Сборочный чертёж.pdf

расположение компонентов на печатной плате + рису­нок пе­чат­ной платы со стороны деталей (вид “сквозь плату”) + рисунок со стороны дорожек

4. Фьюзы.pdf

файл с указанием фьюзов, которые необходимо выставить при про­шивке мик­роконтроллера программатора

5. Исходник (Схема).pdf

исходная схема программатора (проект AvrUsb500 by Petka)

6. Исходник (Перечень).pdf

перечень элементов (проект AvrUsb500 by Petka)

Читайте также:  Пробник электрика

            Позиционные обозначения элементов на схемах совпадают. Вновь введённые элементы обозна­чены символом (') у названия элемента.

            Детали и конструкция

            По условиям задачи на плате программатора должны быть установлены два разъема DB-9 и микро­контроллер ATmega8 в корпусе DIP. Отсюда ясно, что особенно бороться за миниатюризацию бес­смысленно. Поэтому из SMD компонентов – только конденсаторы C8, C9 типоразмера 0805.

            Программатор собран на пластине одностороннего фольгированного стеклотекстолита. Размеры пластины указаны на сборочном чертеже. На плате имеются две перемычки: одна находится под разъё­мом SPI (на рисунке слева), другая рядом с тем же разъёмом.

            Для удобства трассировки на печатной плате отсутствуют выводы 11, 12, 17, 18 микроконтрол­лера. Перед монтажом панельки МК необходимо вынуть из неё пинцетом указанные контакты.

            На рисунке показан внешний вид программатора, подключённый к преобразователю интерфейса Prolific USB-to-Serial Comm Port (драйвер PL-2303):        

            Распиновка и тип разъёма SPI обусловлен задачами автора статьи и совместимостью с другими имеющимися программаторами.

            При сборке данного программатора под рукой не оказалось резонатора на требуемую частоту 14,7456 МГц. Взамен установлен резонатор со старой материнской платы на частоту 14,3181 МГц. Сбоев в работе программатора не наблюдалось.

            После монтажа программатора необходимо запрограммировать микроконтроллер. При этом должны быть запрограммированы (т.е. установлены = “0”) следующие фьюзы (ATmega8, 14.7456 МГц):

SUT1

= 0

BOOTSZ1

= 0

BOOTSZ0

= 0

CKOPT

= 0

SPIEN

= 0

            Все остальные фьюзы должны быть незапрограммированные, т.е. установлены = “1”. Как пра­вило, установка флажка напротив названия фьюза в программе программатора, соответствует програм­мированию соответствующего фьюза, однако бывают исключения.

            Способы программирования МК с использованием LPT порта и USB-COM преобразователя даны в конце статьи.

            После установки запрограммированного МК в программатор подключаем преобразователь USB-COM к компьютеру. В диспетчере устройств операционной системы узнаём номер появивше­гося виртуального порта.

Запускаем программу HyperTerminal. Запуск либо из главного меню Пуск Программы Стандартные Связь HyperTerminal  (C: ProgramFiles Windows NT hypertrm.exe), либо через файл в архиве с документацией.

Основные настройки программы, кроме номера порта, сле­дующие:

                        – параметры порта:

                        – параметры терминала:

                        – параметры ASCII:

            После выполнения настроек включаем питание программатора. При этом светодиод должен бы­стро миг­нуть шесть раз, затем светиться постоянно (горизонтальный масштаб 100 мс/дел):

            Далее в программе HyperTerminal два раза нажимаем “Enter” на клавиатуре. Должно поя­виться сообщение:

            Если сообщение не появляется, нужно проверить осциллографом прохождение сиг­нала по линии PC_TxD от преобразователя USB-COM к микроконтроллеру.

Периодически нажимая клавишу “Enter” на клавиатуре проверяем наличие и амплитуду сигнала. Верхняя эпюра соответствует сигналу на контакте 3 разъёма RS-232, нижняя – на выводе 2 микроконтроллера.

Вертикальный масштаб: 5 В/дел, горизон­тальный масштаб: 20 мкс/дел:

            Если данные к микроконтроллеру поступают, проверяем “ответ” микроконтроллера на получен­ную команду. На верхней эпюре показан сигнал на выводе 3 микроконтроллера после нажатия “Enter”, на нижней – сигнал на контакте 2 разъёма RS-232. Вертикальный масштаб: 2 В/дел, горизонтальный мас­штаб: 20 мкс/дел:

            Амплитуды всех сигналов за исключением контакта 3 разъёма RS-232 должны быть близки к напря­жению питания программатора.

            Итак, если сообщение есть, вводим цифру “2”, нажимаем “Enter”. После этого появляется новая строка:

            Переключаем раскладку на английскую и вводим букву “a”, что соответствует десятичной цифре “10”. То, что сейчас было введено – версия программатора. Должна быть 2.10, иначе данный програм­матор нельзя будет использовать с некоторыми управляющими программами “верхнего уровня”.

            Программатор может определять подключение к программируемому контроллеру. Реали­зо­вано это путём проверки “подтяжки” линии Reset к Vcc (со стороны программируе­мого мик­роконтроллера). Если подключение есть, то программатор включит светодиод HL1. Этот тест можно от­ключить или включить:

            “1”, “Enter” – тест включён; “0”, “Enter” – тест выключен.

            Сигнал 1 МГц включается / выключается в следующем “пункте меню”:

            “1”, “Enter” – сигнал присутствует, скорость программирования небольшая; “0”, “Enter” – сигнал вы­ключен, при этом скорость программирования максимальна.

            Конфигурирование программа­тора завершено:

            Закрываем программу HyperTerminal. После этого пробуем запрограммировать какой-либо мик­роконтроллер. Для работы с программатором можно использовать программу AVRDude (см. файлы к статье). Эта программа консольная, управляется из командной строки. Для упрощения использования имеется надстройка AVRDudeGui, внешний вид которой показан на рисунке:  

            Скорость работы программатора можно косвенно оценить по следующему: при от­ключенном сигнале 1 МГц программирование микроконтроллера ATmega16 занимает 4 секунды (размер прошивки 8 кБ, т.е. половина всей памяти данного МК).

            LPT порт

            Самый простой способ разово запрограммировать МК – воспользоваться компьютером с LPT пор­том и какой-либо программой-программатором. Микроконтроллер нужно подключить компьютеру в соответствии со схемой:

            Питание микроконтроллера можно взять от блока питания компьютера (красный провод в любом разъёме). Для программирования воспользуемся простой бесплатной программой UniProF (см. файлы к статье). В архиве с программой есть справка. Как любую техническую документацию её настоя­тельно рекомендуется прочитать, чтобы не задавать бестолковых вопросов.

            Основные сведения, необходимые для работы:

                        – при запуске программа автоматически определяет тип микроконтроллера, если, конечно, исправна и работает аппаратная часть. Загрузив в программу файл прошивки Atmega8_14745600.hex и отказавшись от загрузки файла EEPROM, получим следующую картину:

            Предварительно очистив память микроконтроллера через кнопку “Erase”, жмём на кнопку “Prog” – запись выбранного файла программы в память микроконтроллера. Успешная запись программы завер­шается без сообщений;

                        – нажав кнопку “FUSE”, попадаем в окно настойки, где необходимо выста­вить требуемые для данной прошивки фьюзы:

            Как видно из рисунка, эта программа из ряда “исключений”, т.е. запрограммированному фьюзу соот­ветствует снятый флажок. Для записи фьюзов нажимаем подряд три кнопки “Write”. Всё, кон­троллер запрограм­миро­ван;

                        – назначение сигналов SCK, MOSI, MISO, RESET на LPT порт задаётся через кнопку “LPT pins”. Настройки должны соответствовать приведённой схеме соединения LPT и МК:

            Этим окном следует воспользоваться при первом запуске программы, до подключения МК, а также в случае, когда нужные выводы порта сожжены и не действуют.

            USB-COM преобразователь

            МК можно запрограммировать при отсутствии портов LPT и COМ с помощью преобразователя интерфейса и управляющей программы. Особенности способа:

                        – очень низкая скорость записи-чтения, около 4 байт в секунду;

                        – неудачная схема адаптера и логика работы управляющей программы приведут к ошибкам записи-чтения даже на таких мизерных скоростях.

            Наилучшие результаты показал следующий вариант адаптера:

            Диоды VD1…VD3 можно использовать любые с малым временем восстановления.

            Предельная простота схемы позволяет обойтись без печатной платы. Для разового исполь­зова­ния достаточно навесного монтажа. Автор смонтировал все элементы между двух разъёмов DB-9:

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

            Проверка выполняется совместно с программой AVRDude (см. ниже). Периодически нажимая любую кнопку чтения фьюзов “Read”, наблюдаем за следующими сигналами:          

                        – SCK – строго периодический, после нажатия кнопки действует около 10 секунд;

                        – MOSI – непериодический, после нажатия кнопки действует около 10 секунд;

                        – RESET – единичное кратковременное изменение уровня после нажатия “Read”;               

            Сигнал SCK должен быть близок к меандру с частотой 100…150 Гц и амплитудой 3,5…4,5 В. Сигналы MOSI и RESET имеют аналогичную амплитуду. Если уровень всех сигналов отличается от указанного, следует подкорректировать значения резисторов R5…R7.

            Нелишним будет проверить и напряжение питания на указанных в схеме выводах МК.

            Если всё в порядке, нужно вставить микроконтроллер и проверить сигнал MISO на выводе 8 USB-COM преобразователя, естественно, после нажатия кнопки “Read”. Далее пробуем записать в МК какую-либо программу.

            Поскольку скорость записи крайне мала, то для экономии времени следует проверять адаптер на небольших файлах прошивок с обязательной верификацией записанной программы. После успешного тестирования верификацию можно запретить.

            Совместно с адаптером используется программа AVRDude с графической надстройкой AVRDudeGui:

            Основные замечания:

                        – в списке программаторов отсутствует требуемый – “ponyser”. Поэтому название придётся на­брать вручную, после запуска программы Avrdudegui.exe;

                        – первичную проверку работоспособности адаптера и МК следует выполнять путём чтения фьюзов, через нажатие кно­пок “Read”. Если чтения не происходит, нужно тщательно проверить монтаж, оценить наличие и ам­плитуду всех сигналов, уточнить номер виртуального COM порта, заменить МК;

                        – запись файла Atmega8_14745600.hex занимает около 25 минут. Столько же займёт после­дующая верификация, если её не отключить перед программированием;

                        – на рисунке отмечены требуемые фьюзы.

        1) Документация на USB программатор (~ 280 кБ)

        2) Программатор UniProF для МК AVR (~ 580 кБ)

        3) Программатор AVRDude для МК AVR (~ 1 МБ)

Источник: http://r-lab.narod.ru/Stk500.htm

Ссылка на основную публикацию