Программатор Громова — пожалуй лучший COM программатор AVR контроллеров.

Всем привет. Сегодня у меня для вас новая статья, посвященная одному из самых простых и популярных программаторов AVRок — программаторе Громова — так его называют в сети.

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

programmator_gromova

Запрограммировать контроллер AVR на сегодня возможно двумя способами:

1) С помощью высоковольтного параллельного программатора. Это скорее промышленный вариант, так как в этом случае корпус контроллера усаживается в специальную панельку и подав высокое напряжение (большее напряжения питания) зашивается заранее подготовленная программа. После чего контроллер запаивается в плату по месту назначения. Здесь есть ощутимый плюс —  полный контроль над всем нутром контроллера. А процесс зашивки моментальный.

Но если выяснится, что зашитая программа имеет непростительный баг? И что же делать — контроллер ведь уже запаян? Снова выпаивать?

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

2) Мы пойдем по другому пути — и к нашим услугам внутрисхемный программатор. При этом способе контроллер устанавливается сразу в схему без каких-либо промежуточных действий. В этом случае программа зашивается внутрисхемно. Что же это значит?

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

raz``em PLS

Так вот на этот разъем с контроллера выводится 5 сигналов: mosi, miso, sck, reset, GND. Через эти контакты и будет зашиваться программа. Причем делать это можно многократно — ведь выпаивать нам ничего не придется. Единственное что должно быть сделано так это то, что контроллер должен быть запитан и запущен. Впрочем питание можно подать и с программирующего разъема. Тогда у нас будет уже не пять сигналов а шесть, но это совсем не сложно. Только здесь есть небольшая особенность — нужно быть внимательным при простановке фьюзов (FUSE) перед зашивкой программы. Если при высоковольтном программировании неправильно зашитый фьюз бит легко правится, то при внутрисхемном программировании будет сложно что-либо исправить.

Небольшое отступление.

Фьюзы или фьюз биты — это биты конфигурации контроллера. Их нельзя выставить из тела программы. Фьюз биты обычно проставляются перед зашивкой программы — с помощью программатора и программы-прошивальщика.

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

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


Разновидностей внутрисхемных программаторов на сегодня очень и очень много и выбрать приемлемый вариант бывает не просто. Все программаторы делятся по способу подключения к компьютеру,  мне известны три : через LPT, COM, USB.

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

В наше время когда порты com и lpt уходят в небытие, единственно рабочий вариант остается USB. Но тут есть ряд проблем. Как правило схемы программаторов, работающих от USB имеют в своем составе микроконтроллер, который естественно нужно прошить, а для прошивки нужен программатор. Вот такой вот замкнутый круг. Хотя в последнее время на просторах интернета появилась схема usb программатора, которая не требует прошивки. Схема простая, но я с ней плотно не разбирался поэтому говорить о ней я не буду — если очень интересно найдете сами.

Мы пойдем по более сложному пути — займемся изготовление программатора Громова.  Этот программатор работает через  com порт, который  в отличие от lpt,   редко но все еще встречается в современных компьютерах. И кстати если  на задней стенке своего компьютера  вы его не обнаружили, это еще не значит что его нет, так на многих материнских платах он может присутствовать в виде pls штырьков,  нужно почитать документацию к материнской плате.

Схема.

Схема самого программатора на удивление простая и мне очень жаль, что я не встречал ее раньше.

skhema programmatora gromova

Ее можно собрать даже навесным  монтажом на коленке, но на плате все-таки будет смотреться солиднее. Для этого программатора нам потребуется семь резисторов  по килоому каждый и три маломощных  диода.  Как известно напряжение с com-порта в пределах 12 В, а контроллер работает с 5-ти вольтовым напряжением. Так вот схема из диодов и резисторов послужит нам для согласования уровней. Резисторный делитель из 12 вольт дает нам 6 вольт, а остаток  из одного вольта высаживается на диоде — получаем 5 вольт и это то что нам и нужно.

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

risunoq pechatnoi` platy` programmatora Gromaova

Файлы проекта можете скачать по [urlspan]этой ссылке[/urlspan].

Рисунок ее был распечатан на лазерном принтере  и подвержен зверской технологии ЛУТ.  После всех манипуляций мне оставалось только напаять деталей и выставить сие творение на ваш суд.  🙂

plata programmatora so storony` detalei`

рисунок печатной платы

Входы и выходы.

На плате слева расположены монтажные отверстия для подключения разъема DB-9F (мама) известного как разъема COM-порта. с нашей платой он будет соединен посредством проводов.  На схеме для этого обозначены отверстия: DB9/2, DB9/3, DB9/4, DB9/5, DB9/7, DB9/8. На схеме контакты подписаны — не промахнетесь 🙂 Хочу добавить, что провод желательно брать не длиннее 25 см.  При более длинном проводе возможны помехи, а в результате ошибки  при зашивке программы.

 В моем варианте питание будет подаваться  от компьютера,  поэтому для  удобства  я вывел контакты

raz``em pitaniia

питания PinGND и Pin+5.  Затем они будут соединены с питающим разъемом, в принципе под это дело можно применить и отдельный блок питания с напряжением +5 В — проблемы не будет.

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

С правой стороны расположены контакты для подпайки десятиконтактного программирущего IDC разъема. У меня он выглядит так. Здесь он идет в связке с разъемом DB-9M (папа).

IDC Разъем программирования

К плате программатора вся эта конструкция подключается через разъем DB-9F.

подключение программирующего разъема

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

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

Программа Uniprof —это тот самый софт, с помощью которого наш программатор будет общаться с компьютером. Эту программу написал  автор по фамилии Николаев за что целая армия радиолюбителей говорит ему — СПАСИБО. Кстати саму программу можно скачать с сайта автора или у меня.

Выключаем наш компьютер и подключаем программатор разъемом DB-9F к COM-порту компьютера. Разъем питания я подключил к блоку питания родного компьютера. На этом этапе желательно подключить плату нашего программируемого пациента — плату с контроллером.  Я подключил опытную плату с контроллером Attiny 45. Ну что, теперь минута молчания иии . . . жмем кнопку POWER системного блока компьютера. Ждем когда загрузится наше операционная система.

Запускаем Uniprof. При запуске он у  немного ругнулся, выдав окошко со знакомым ERROR, говорит что у меня что-то неладное с LPT. . . хех, глуповато конечно но  простим его на сей раз,  ткнув по крестику.

error

На следующим этапе окошко программы все-таки открылось, но появилось сообщение о том, что контроллер не откликнулся. Но мы не паникуем.

MK ne otclienulsia

Ведь программа совсем не в курсе к какому именно порту подрублен наш контроллер. Тут на выбор кроме ранее упомянутого LPT порта, есть еще набор с COM1 по COM5.Так что простым перебором добиваемся полного опознания нашего контроллера.

uniprof запуск

Контроллер определился, теперь нам нужно выполнить чтение — нажимаем на READ.

Если контроллер чистый, то в окне программы должны получиться прочерки, но в моем случае получилось иначе — прочерки чередовались с различными шестнадцатиричными числами. Возможно проблема была в длинном проводе, соединяющего программатор с компьютером или с высокой производительностью компьютера. Но в любом случае это вылечилось установкой галочки «ТОРМОЗ» . Время выполнения чтения оказалось несколько более длительным, но зато результат стал лучше.

Чтение памяти контроллера программой uniprof

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

fuses

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

Далее кликаем по кнопке с открытой желтой папкой под названием HEX и выбираем наш HEX. 🙂 Текст программы должен отразиться в окошке Uniprof. Ну что же, теперь остается только нажать на кнопку с красной стрелочкой с названием Prog и дело в шляпе.

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

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

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

 

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

С уважением, Владимир Васильев.

В качестве дополнения предлагаю посмотреть видеоролик на тему программирования контроллеров AVR.  Чтобы не пропустить следующие статьи советую подписаться по [urlspan]RSS[/urlspan]  или по [urlspan]электронной почте.[/urlspan]

 

Лучший способ сказать СПАСИБО автору это отправить донат!


 

Читайте также:

1 комментарий

  1. Андрей:

    здравствуйте. вроде бы всё нормально. СОМ1 увидел.
    После чтения,(с тормозом) заместо прочерков,нули.
    прошивку и фьюзы ставлю, и вот такая выходит ошибка когда нажимаю записать :
    (Ош записи,@=0000,надо 3В,есть 00.повтор?)

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *