Программатор Громова :: Практическая электроника
Софт. Программы для компьютера. Для пк

Вот уже два года я юзаю маленькую платку с FT в качестве программатора и отладчика. Я выкладывал ее проект еще давно. Как видно, это интерфейсная часть выдернутая из Pinboard II. И вот я решил запилить себе его фабричный образец и, чуток подредактировав, сунул в общий заказ с модулями. Комплектуха уже в пути, монтажники уже нервно потирают рукоятки паяльников. Так что скоро оно появится в моем магазинчике. Все любят внутрисхемное программирование. Удобно же — воткнул провода в девайсину и прошил. Один минус — надо выводить разъем для программирования. Хорошо когда плата большая и есть куда дороги кинуть.

Как выглядит программатор

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

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

Как выглядит программатор

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

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

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

Постараюсь на конкретном примере именно этого программатора рассказать, как это делаю я. Разумеется, в своем повествовании буду использовать программу Eagle Cad. Недавно DI HALT на своем сайте публиковал ряд статей по Eagle Cad Часть 1 , Часть 2 и часть 3. Программа сама по себе довольна интересна, хотя и заточена на автоматическое производство и сравнивать ее с Sprint Layout не имеет смысла, т.

Каждая из которых хороша для своих масштабов. Например, мне в Eagle нравится то, что и схема и плата все вместе. Как отмечал DI HALT, при разводке очень удобна подсветка связей которые в данный момент трассируешь, если есть желание то можно сразу, после того как плата готова, создать выходные файлы и отдать на производство. В итоге получить красивую зелененькую плату, но в данной статье речь пойдет не об этом. Но я немного отвлекся… Итак, скачали Eagle Cad, установили ту версию какая нравится Demo или порыскали и нашли ключик , прочитали прошлые статьи и получили примерное представление о том что же представляет из себя Eagle Cad.

Последняя версия на данный момент Eagle Cad 5. Все учебные курсы по микроконтроллерам которые я встречал в том числе, к сожалению, и мой ассемблерный, но я надеюсь это постепенно поправить страдают одной и той же проблемой. В курсе бросаются строить дом не заложив фундамент. Только показав на примере как мигнуть светодиодом, сразу же кидаются в периферию. Начинают осваивать ШИМ-ы, таймеры, подключать дисплеи и всякие термодатчики.

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

Итак, что такое структура программы. Как организованы переходы между задачами прошивки. То как распределяется процессорное время. Без краткого ликбеза по общим принципам построения прошивки дальше двигаться нет смысла. Все ниже написанное это лишь продукт моих умозаключений, поэтому терминология может отличаться от общепринятой. Если это сильно кому то будет резать глаз — поправляйте в комментах. Итак, я для себя выделяю следующие структуры, по порядку возростания сложности конструкции и количеству управляющего кода: А теперь подробно по каждому пункту: Один из самых мутных для понимания и в то же время совершенно необходимый инструмент любого языка программирования.

Вызывает массу вопросов и непонимания на начальном этапе обучения.

Primary Menu

Инфа, любая инфа команды, данные лежит в памяти по ячейкам. У каждой ячейки есть порядковый номер — адрес. Мы можем напрямую сказать процессору — возьми данные из ячейки с адресом 0xA0 и положи его в ячейку с адресом 0x Здесь адреса 0xA0 и 0x11 содержатся напрямую в машинном коде. Это очень быстро, просто и не требует никаких дополнительных телодвижений. Один минус — адреса 0xA0 и 0x11 нельзя изменить, как мы их впишем в код, так они там и останутся. Когда у нас есть еще две ячейки памяти. Например, А и Б в которые мы предварительно положим числа 0xA0 и 0x11 соответственно.

И тогда предыдущая операция будет выглядеть так. Возьми число из ячейки адрес который лежит в А и положи в ячейку адрес которой узнаешь из Б. Результат тот же, но возникло множество дополнительных телодвижений. Во первых положить первоначальные адреса 0xA0 и 0x11 в ячейки А и Б. Потом, при совершеннии операции, используая данные ячеек А и Б как адреса, взять уже оттуда нужные нам данные и совершить обмен. Но прелесть вся в том, что при этом мы можем как угодно менять А и Б ведь это такие же переменные как и любые другие и они будут указывать на разные данные.

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

Дело в том, что для работы простейшего программатора, не требующего в своем составе микроконтроллера, нужен компьютер с COM или LPT портом, причем желательно с частотой процессора не выше гигагерца-двух. Да операционную систему подревней — WinXP или Win2K. С другой стороны, для USB программаторов нужно предварительно прошить контроллер. Вот тут и возникает проблема курицы и яйца — как прошить контроллер программатора не имея программатора. Не так давно появилось решение позволяющее сделать надежный и быстрый USB программатор AVR на базе тупой, непрограммируемой, логики.

Bitbang, что это такое и с чем его едят Это не что иное как прямое управление выводами какого либо порта. В COM порт можно отправить байт через какой либо высокоупровневый API и он просто выйдет через линию TX потоком стандартого RS сигнала. А можно достучаться напрямую до регистров отвечающих за состоянием каждого пина порта и дрыгая их как нам угодно сэмулировать через тот же COM порт не только RS, но и SPI, I2C или Dallas 1-wire, HD протокол, применив простейший тупой обвяз. В старых программаторах вроде SiProg PonyProg или в схеме Громова так и было сделано с COM портом.

Но, увы, СОМ порт ушел в небытье, а при попытке сделать то же самое с виртуальным COM портом на конвертере USB-RS ничего не получалось. В результате такие схемы либо не работали вовсе, либо работали ОЧЕНЬ медленно, прошивая контроллер за час-полтора, что ни в какие ворота не лезет. Все изменилось с появлением микросхемы конвертера USB-UART FTR у которой стал доступен битбанг режим не через виртуальный COM порт, а напрямую через драйвер FTDI.

За битбанг там отвечает 8 выводов. В результате, из одной только FTDI получается первоклассный скоростной программатор, прошивающий 16кб прошивки за секунд и это вместе с верификацией!!! А из деталей надо ТОЛЬКО микросхему FTRL, два конденсатора на 0. Схема включения получается следующей: Снова Элемент порадовал новым робоконструктором. Опять от Innovative Experiments. Выглядит почти точно также как и MICROCAMP и шасси сходное, а вот начинка несколько иная.

Вот уже почти два года активно использую USBasp в качестве основного программатора. Все мне в нем нравится, кроме прошивающей программы — avrdude консольная, а мне под каждую прошивку писать свой батник лениво. Да и начинающим порой разобраться в прорве его ключей бывает сложно. Так что будем натягивать на него ГУЙ ака Графически Удобный Йнтерфейс. Их существует с пол десятка я же отобрал наиболее удачные, на мой взгляд, оболочки. Признаюсь, что я этот программатор никогда не собирал, так как у меня с первого раза заработала и никогда не подводила схема Громова.

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

Помогает установка буфферной микросхемы 74HC Достоинства этой схемы в том, что это классика жанра. Ее поддерживают по моему вообще все прошивающие программы и оболочки. В том числе и разные среды разработки вроде CVAVR. Надежная и простая, как кувалда, схема. Недостаток один — нужен LPT порт, который ныне редкость. Но что мешает под свои радиоопыты завести древнюю машинку уровня PIII которую можно собрать из хлама за пиво? И работать будет все отлично и пожечь не жалко. Ну, а вдоволь наигравшись с STK и поняв премудрости процесса прошивки в деталях, можно собрать и USB программатор.

А тут Михаил Code написал отличную статью по сборке этого девайса. В настоящее время микроконтроллеры AVR фирмы ATMEL получили весьма широкое распространение. Это обусловлено небольшой стоимостью, развитой периферией, доступностью и удобством средств разработки.

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

В данной статье я попытаюсь подробно описать процесс сборки этого адаптера. Причем настоятельно рекомендую повторить конструкцию именно так, как описано, а не на куске макетной платы. Рекомендация вытекает из шести летнего использования адаптера собранного на чем попало. Адаптер получил свое название от комплектующихся им отладочных плат фирмы ATMEL для быстрого начала работы с микроконтроллерами AT90S и ATmega соответственно. На самом деле приведенная схема соответствует одновременно обоим адаптерам, в ней присутствуют перемычки для определения наличия как адаптера STK выводы разъема X1 , так и STK выводы Тот, кто пытался купить такую штуку, наверняка офигевал от цены за, казалось бы, несложную вещь — от полутора до восьми тысяч рублей.

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

И стоило это чудо всего 50 баксов. Прикол в том, что эти AVR Dragon горели пачками без видимых причин, вскоре выяснилось почему — разработчики допустили ошибку, в результате чего, из-за помех по питанию, стабилизатор питания взбрыкивает и, источая вонь, красиво сгорает. Также вышла официальная дока от Atmel в которой было сказано, что да, прокосячили, а поэтому возьмите напильник и доработайте Нужно допаять проводок от питания USB до выхода стабилизатора.

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

Появилась схема USB программатора которая НЕ требует предварительной прошивки управляющего микроконтроллера. Так как у многих уже давным давно нет ни COM ни LPT порта, то я решил выложить схему USB программатора для AVR.

Это будет широко известный в узких кругах USBASP. Схема простая как три копейки, но COM или LPT порт все же потребуется — для того, чтобы прошить управляющий контроллер. Так что можешь сходить к другану. Программатор строится на контроллере ATMega48 или ATMega8. Нужна именно 8 или 48, без всяких индексов L. Так как у нас требуется частота выше чем 8 Мгц. В прошлых статьях я советовал тебе не лезть к этим битам.

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

В Atmel AVR принята следующая нотация: Пример Бит RSTDSBL, как можно догадаться из названия, это RESET DISABLE. Включил эту опцию и у тебя нога RESET превращается в порт ввода-вывода, но за это ты теряешь возможность перешить контроллер через ISP. Так вот, чтобы выключить RESET и получить большое западло с прошивкой в обмен на мелкую подачку в виде дополнительной ножки в этот бит надо записать 0. С одной стороны нелогично и криво. Как бы во всем мире принята нотация, что ноль это выключено, а тут, понимаешь, наоборот. С другой стороны, это их контроллер, что хотят то и делают.

Да и вообще, в электронике часто за сигнал берут ноль. Помнится я обещал, что будет прошивка позволяющая превратить демоплату Pinboard 1. Для плат на базе Atmega16 и Atmega Тактовая 8 МГц дефолтная настройка. Вот уже много лет я пользуюсь мощнейшей программой для прошивки — avrdude. Программа эта поддерживает почти все виды программаторов, а те что не поддерживает изначально легко в нее добавляются.

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

И ладно бы ключи прописать, да файл с прошивкой указать. Самая засада начинается с fuse битами впрочем, как и везде в мире AVR ; Тут их надо вначале внимательно проштудировать в даташите, выписать в виде байтов, вписать правильно в командную строку и молиться на то, чтобы нигде не ошибиться. Проблема решилась с появлением новой версии оболочки SinaProg от команды программистов-террористов из Аль-каиды иранских AVR программеров. Запускаем… Если не запустилась, то возможно потребуется установить фреймворк от NI — LabView RunTime Library. Самый простой вариант программатора для AVR это пять проводков, припаиваемых к порту контроллера и втыкаемых в LPT порт.

Но я все же не рекомендую этот способ.

Программатор Громова

Даже схему подключения давать не буду — если надо будет сам найдешь. Так как данный метод не очень стабилен, возможны сбои при прошивке , длина проводков ограничена двадцатью сантиметрами если больше, то будет глючить , поэтому придется шариться в комповой заднице. Да и LPT порт спалить проще простого. Шарясь по инету, я нашел отличный программатор, работающий через RS он же COM порт. А также удобную программу для прошивки контроллера UniProf от Николаева. Схему программатора придумал Громов, создатель Algorithm Builder. Саму программу UniProf можно скачать у меня, но лучше взять с сайта автора.

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

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

Для нужд программатора в этом случае выделяется несколько выводов контроллера обычно Форум Сообщество Чат Магазин Ссылки Справочная Язык программирования С 1. Использование комментариев в тексте программы 1. Переменные перечислимого типа 1.

Переменные с изменяемой структурой 1. Преобразования при вычислении выражений 1. Операции отрицания и дополнения 1. Операции разадресации и адреса 1. Операции увеличения и уменьшения 1. Вызов функции с переменным числом параметров 1. Передача параметров функции main 1. Исходные файлы и объявление переменных 1. Время жизни и область видимости программных объектов 1. Инициализация глобальных и локальных переменных 1. Методы доступа к элементам массивов 1. Указатели на многомерные массивы 1. Динамическое размещение массивов О проекте.

Программатор Универсальная плата FT Готовые устройства 20 Июнь DI HALT 29 Comments. Инструмент 7 Апрель DI HALT 35 Comments. Готовые устройства , Начинающим , Радиолюбительские Технологии 1 Ноябрь Sailanser 81 Comments. Недавно DI HALT на своем сайте публиковал ряд статей по Eagle Cad Часть 1 , Часть 2 и часть 3 Программа сама по себе довольна интересна, хотя и заточена на автоматическое производство и сравнивать ее с Sprint Layout не имеет смысла, т.

Учебный курс 14 Январь DI HALT Comments. Учебный курс 9 Январь DI HALT Comments. Готовые устройства 2 Декабрь DI HALT 1 Comments. Робототехника 1 Ноябрь DI HALT Comments. Софт 2 Октябрь DI HALT 50 Comments. Готовые устройства 27 Август Code Comments. Радиолюбительские Технологии 8 Январь DI HALT 39 Comments. Диагностика и ремонт 27 Август DI HALT 46 Comments. Если у кого есть какие мнения по поводу этого девайса поделитесь.

Готовые устройства 15 Август DI HALT 1 Comments. Учебный курс 15 Июль DI HALT Comments. Учебный курс , Готовые устройства 14 Июль DI HALT 73 Comments. Учебный курс , Софт 14 Июль DI HALT Comments. Готовые устройства 13 Июль DI HALT 1 Comments. Учебный курс 13 Июль DI HALT 81 Comments. Учебный курс MegaHard Lab MSP Учебный курс Автоэлектроника Готовые устройства Диагностика и ремонт Инструмент Книги Начинающим Новости Радиолюбительские Технологии Робототехника Софт Регистрация Войти RSS записей RSS комментариев WordPress.

Опубликовано в рубрике Драйвер high definition
Twitter Delicious Facebook Digg Stumbleupon Favorites More
  • Прикрепленное видео

Все права защищены. © 2001 toozza.ru