SinaProg — графическая оболочка для AVRDude
Автор DI HALT
Опубликовано 16 Фев 2010
Рубрики: AVR. Учебный курс, Софт
Метки: avrdude, GUI, Программатор, Софт
Вот уже много лет я пользуюсь мощнейшей программой для прошивки — avrdude. Программа эта поддерживает почти все виды программаторов, а те что не поддерживает изначально легко в нее добавляются.
Но есть у ней особенность которая сильно отпугивает многих — она консольная. И все шаманства с ней заключаются в формировании командной строки.
С одной стороны это хорошо — консольная утилита позволяет очень сильно ускорить и автоматизировать процесс прошивки. Один раз написал батничек и для перешивки только вызывать его и все.
Остается проблема прошивки разных устройств, ведь под каждую придется делать свой батник. И ладно бы ключи прописать, да файл с прошивкой указать. Самая засада начинается с fuse битами (впрочем, как и везде в мире AVR ;) ) Тут их надо вначале внимательно проштудировать в даташите, выписать в виде байтов, вписать правильно в командную строку и молиться на то, чтобы нигде не ошибиться.
Да, для avrdude написано много оболочек, но все что мне встречались раньше решали лишь малозначительную проблему выбора нужного ключа файла и/или программатора, а фузы также было надо указывать числом.
Проблема решилась с появлением новой версии оболочки SinaProg от команды программистов-террористов из Аль-каиды иранских AVR программеров.
![]() |
AVR. Учебный Курс. Архитектура Программ
Автор DI HALT
Опубликовано 14 Янв 2010
Рубрики: AVR. Учебный курс
Метки: Алгоритм, Микроконтроллер, Программатор
Все учебные курсы по микроконтроллерам которые я встречал (в том числе, к сожалению, и мой ассемблерный, но я надеюсь это постепенно поправить) страдают одной и той же проблемой.
В курсе бросаются строить дом не заложив фундамент. Только показав на примере как мигнуть светодиодом, сразу же кидаются в периферию. Начинают осваивать ШИМ-ы, таймеры, подключать дисплеи и всякие термодатчики.
С одной стороны это понятно — хочется действа и результата мгновенно. С другой — рано или поздно такой подход упрется в тот факт, что программа, надстраиваемая без четкой идеологии, просто обрушится под своей сложностью. Сделав невозможным дальнейшее развитие.
Итогом становится либо рождение жутких программных уродцев, либо миллионы вопросов на форуме вида “а как бы мне все сделать одновременно, а то частоты контроллера уже на все не хватает”.
Самое интересное, что правильной организации программы учат программистов в ВУЗах, но вот только к микроконтроллеру народ обычно идет не от программирования, а от железа. А, как показала практика обучения в ВУЗе, электронщиков толковому программингу практически не обучают :( Приходится все додумывать самостоятельно.
Итак, что такое структура программы. Это, прежде всего, ее скелет. То какими путями движется код. Как организованы переходы между задачами прошивки. То как распределяется процессорное время. Без краткого ликбеза по общим принципам построения прошивки дальше двигаться нет смысла.
Все ниже написанное это лишь продукт моих умозаключений, поэтому терминология может отличаться от общепринятой. Если это сильно кому то будет резать глаз — поправляйте в комментах.
Итак, я для себя выделяю следующие структуры, по порядку возростания сложности конструкции и количеству управляющего кода:
- Суперцикл
- Суперцикл+прерывания
- Флаговый автомат
- Диспетчер
- Приоритетный диспетчер
- Кооперативная RTOS
- Вытесняющая RTOS
А теперь подробно по каждому пункту: Читать полностью
AVR. Учебный Курс. Программирование на Си. Работа с памятью, адреса и указатели
Автор DI HALT
Опубликовано 09 Янв 2010
Рубрики: AVR. Учебный курс
Метки: AVR, C, Программатор, Язык Си
Указатель. Один из самых мутных для понимания и в то же время совершенно необходимый инструмент любого языка программирования. Вызывает массу вопросов и непонимания на начальном этапе обучения.
Итак, начну по порядку.
Инфа, любая инфа (команды, данные) лежит в памяти по ячейкам. У каждой ячейки есть порядковый номер — адрес.
Мы можем напрямую сказать процессору — возьми данные из ячейки с адресом 0xA0 и положи его в ячейку с адресом 0×11. Это будет прямая адресация. Здесь адреса 0xA0 и 0×11 содержатся напрямую в машинном коде. Это очень быстро, просто и не требует никаких дополнительных телодвижений. Один минус — адреса 0xA0 и 0×11 нельзя изменить, как мы их впишем в код, так они там и останутся.
Но может быть и другой способ. Когда у нас есть еще две ячейки памяти. Например, А и Б в которые мы предварительно положим числа 0xA0 и 0×11 соответственно. И тогда предыдущая операция будет выглядеть так.
Возьми число из ячейки адрес который лежит в А и положи в ячейку адрес которой узнаешь из Б.
Результат тот же, но возникло множество дополнительных телодвижений. Во первых положить первоначальные адреса 0xA0 и 0×11 в ячейки А и Б. Потом, при совершеннии операции, используая данные ячеек А и Б как адреса, взять уже оттуда нужные нам данные и совершить обмен.
Но прелесть вся в том, что при этом мы можем как угодно менять А и Б (ведь это такие же переменные как и любые другие) и они будут указывать на разные данные.
А один и тот же кусок кода становится универсальным. Он может работать с любыми данными адреса которых нам укажут переменные А и Б.
А сами эти переменные и будут указателями.
Читать полностью
Прошивка PinboardProg для превращения демоплаты PinBoard в ISP программатор
Автор DI HALT
Опубликовано 13 Дек 2009
Рубрики: AVR. Учебный курс, Готовые устройства
Метки: Bootloader, ISP, Программатор
Хай PinBoard сообщество! Нас теперь уже почти сто человек :) Помнится я обещал, что будет прошивка позволяющая превратить демоплату в программатор для прошивки других МК. Пацан сказал — пацан сделал :)
Итак, вот две прошивки. Для плат на базе Atmega16 и Atmega32. Тактовая 8 МГц (дефолтная настройка).
16_PinboardPROG.hex
32_PinboardPROG.hex
Далее как обычно в картинках. Читать полностью
Скоростной AVR USB программатор на FT232RL без вспомогательного контроллера
Автор DI HALT
Опубликовано 02 Дек 2009
Рубрики: AVR. Учебный курс, Готовые устройства
Метки: AVR, Программатор, Схемотехника
При работе с микроконтроллерами важнейшим девайсом являетя программатор, именно он может залить в МК нашу программу. Он же часто становится камнем преткновения на пути освоения AVR.
Дело в том, что для работы простейшего программатора, не требующего в своем составе микроконтроллера, нужен компьютер с COM или LPT портом, причем желательно с частотой процессора не выше гигагерца-двух. Да операционную систему подревней - WinXP или Win2K. А это ныне редкость.
С другой стороны, для USB программаторов нужно предварительно прошить контроллер. А чем его прошить? Вот тут и возникает проблема курицы и яйца — как прошить контроллер программатора не имея программатора.
Не так давно появилось решение позволяющее сделать надежный и быстрый USB программатор AVR на базе тупой, непрограммируемой, логики.
Bitbang, что это такое и с чем его едят
Это не что иное как прямое управление выводами какого либо порта. В COM порт можно отправить байт через какой либо высокоупровневый API и он просто выйдет через линию TX потоком стандартого RS232 сигнала.
А можно достучаться напрямую до регистров отвечающих за состоянием каждого пина порта и дрыгая их как нам угодно сэмулировать через тот же COM порт не только RS232, но и SPI, I2C или Dallas 1-wire, HD44780 протокол, применив простейший тупой обвяз. Это и будет битбанг.
В старых программаторах вроде SiProg (PonyProg) или в схеме Громова так и было сделано с COM портом. И работало надежно и стабильно. Но, увы, СОМ порт ушел в небытье, а при попытке сделать то же самое с виртуальным COM портом на конвертере USB-RS232 ничего не получалось. Т.к. заточен он был все же на работу нормального COM порта, а для битбанга приходилось извращаться. В результате такие схемы либо не работали вовсе, либо работали ОЧЕНЬ медленно, прошивая контроллер за час-полтора, что ни в какие ворота не лезет.
Все изменилось с появлением микросхемы конвертера USB-UART FT232R у которой стал доступен битбанг режим не через виртуальный COM порт, а напрямую через драйвер FTDI. И вот тут наступила нирвана.
В результате, из одной только FTDI получается первоклассный скоростной программатор, прошивающий 16кб прошивки за 10-12 секунд и это вместе с верификацией!!!
А из деталей надо ТОЛЬКО микросхему FT232RL, два конденсатора на 0.1uF и гнездо USB. ВСЕ! Ну и проводочки естественно.
Схема включения получается следующей:
Робоконструктор POP-BOT
Автор DI HALT
Опубликовано 01 Ноя 2009
Рубрики: Робототехника
Метки: МК, Программатор, Робот
Снова Элемент порадовал новым робоконструктором. Опять от Innovative Experiments. На этот раз это POP-BOT.
![]() |
Выглядит почти точно также как и MICROCAMP и шасси сходное, а вот начинка несколько иная. Читать полностью
Оболочки для USBASP
Автор DI HALT
Опубликовано 02 Окт 2009
Рубрики: Софт
Метки: AVR, Программатор
Вот уже почти два года активно использую USBasp в качестве основного программатора. Все мне в нем нравится, кроме прошивающей программы — avrdude консольная, а мне под каждую прошивку писать свой батник лениво.
Да и начинающим порой разобраться в прорве его ключей бывает сложно. Так что будем натягивать на него ГУЙ ака Графически Удобный Йнтерфейс. Их существует с пол десятка я же отобрал наиболее удачные, на мой взгляд, оболочки.
Читать полностью
Программатор STK200/300 для микроконтроллеров AVR
Автор Code007
Опубликовано 27 Авг 2009
Рубрики: Готовые устройства
Метки: AVR, Программатор
DI HALT:
Признаюсь, что я этот программатор никогда не собирал, т.к. у меня с первого раза заработала и никогда не подводила схема Громова. Однако, судя по многочисленным комментариям, эта схема работает далеко не у всех и тут не все гладко. Даже если есть COM порт, то не факт что он захочет правильно работать в таком режиме. Многое зависит и от операционки, и от тактовой частоты проца. В общем, грабель там закопано много. Но есть еще варианты относительно простой прошивки микроконтроллеров AVR — это программатор на LPT, аналог STK500/300. В своей простейшей модификации “пять проводков” не требует вообще ничего, даже резисторов. Соединяешь все напрямую и шьешь. Правда пожечь LPT порт тут проще простого. C токоограничитльными резисторами все безопасней, однако и это не спасает. Помогает установка буфферной микросхемы 74HC244.
И получаем STK200! Достоинства этой схемы в том, что это классика жанра. Ее поддерживают по моему вообще все прошивающие программы и оболочки. В том числе и разные среды разработки вроде CVAVR. Надежная и простая, как кувалда, схема. Недостаток один - нужен LPT порт, который ныне редкость.
Но что мешает под свои радиоопыты завести древнюю машинку уровня PIII-500 которую можно собрать из хлама за пиво? И работать будет все отлично и пожечь не жалко. Ну, а вдоволь наигравшись с STK и поняв премудрости процесса прошивки в деталях, можно собрать и USB программатор. А тут Михаил (Code007) написал отличную статью по сборке этого девайса. Грех не выложить.
В настоящее время микроконтроллеры AVR фирмы ATMEL получили весьма широкое распространение. Это обусловлено небольшой стоимостью, развитой периферией, доступностью и удобством средств разработки. Несомненным достоинством процессоров этой серии является возможность внутрисхемного программирования с использованием интерфейса SPI.
Для начала работы с этими микроконтроллерами необходимо обзавестись какими либо средствами осуществляющими внутрисхемное программирование. Существует достаточно большое количество различных конструкций программаторов, но на первоначальном этапе вполне подойдет адаптер STK200/300. В данной статье я попытаюсь подробно описать процесс сборки этого адаптера. Причем настоятельно рекомендую повторить конструкцию именно так, как описано, а не на куске макетной платы. Рекомендация вытекает из шести летнего использования адаптера собранного на чем попало.
Адаптер получил свое название от комплектующихся им отладочных плат фирмы ATMEL для быстрого начала работы с микроконтроллерами AT90S8515 и ATmega103 соответственно. На самом деле приведенная схема соответствует одновременно обоим адаптерам, в ней присутствуют перемычки для определения наличия как адаптера STK200 (выводы 2-12 разъема X1), так и STK300 (выводы 3-11).
![]() |
Рисунок 1. Электрическая принципиальная схема адаптера STK200/300
Самодельная ZIF панель для SOIC
Автор DI HALT
Опубликовано 08 Янв 2009
Рубрики: Радиолюбительские Технологии
Метки: ZIF, Программатор, самопал
Вячеслав, из магазина “Элемент”, придумал оригинальную конструкцию ZIF панельки для SOIC. Тот, кто пытался купить такую штуку, наверняка офигевал от цены за, казалось бы, несложную вещь - от полутора до восьми тысяч рублей. В зависимости от наглости продавца. А в некоторых случаях без нее довольно неудобно. Потому решаем проблему, так сказать, подручными средствами, из говна и палок.
Читать полностью
AVR. Учебный Курс. Конфигурация FUSE бит
Автор DI HALT
Опубликовано 18 Окт 2008
Рубрики: AVR. Учебный курс
Метки: AVR, FUSE, Конфигурация, Программатор
Конфигурационные биты находятся в особой области памяти и могут быть изменены только с помощью программатора при записи контроллера.
Итак, главное:
В Atmel AVR принята следующая нотация: сброшенный в ноль fuse bit считается активным. С одной стороны нелогично и криво, с другой стороны это их контроллер, что хотят то и делают. Один раз запомнить и все.
Однако есть такой популярный программатор как Pony Prog так вот они там решили, что всех умнее и сделали все наоборот. И в Pony Prog уже установленный бит считается активным. Возникает жуткая путаница, поэтому тут надо быть внимательным как никогда, иначе последствия могут быть печальными - контроллер заблокируется и оживить его можно будет только высоковольтным программатором.
По умолчанию все контроллеры AVR сконфигурированы так, чтобы работать от внутреннего источника тактов. За источник тактов отвечают биты CKSEL
Выставив их правильным образом можно выбрать частоту работы контроллера, а также источник тактового сигнала.
Ответный удар по Китаю!
Автор DI HALT
Опубликовано 27 Авг 2008
Рубрики: Диагностика и ремонт
Метки: AVR Dragon, От Автора, Программатор
![]() |
Прикол в том, что эти AVR Dragon горели пачками без видимых причин, вскоре выяснилось почему — разработчики допустили ошибку, в результате чего, из-за помех по питанию, стабилизатор питания взбрыкивает и, источая вонь, красиво сгорает. Также вышла официальная дока от Atmel в которой было сказано, что да, прокосячили, а поэтому возьмите напильник и доработайте Нужно допаять проводок от питания USB до выхода стабилизатора. Как показано на рисунке в документации. При этом обещают полное сохранение гарантии.
Хе хе хе, ну прям как “нате, захавайте и вы глючного дерьмеца, ускоглазые утырки” получилось. =))))
В целом, не считая этого косяка, выглядит девайсина многообещающе, особенно при ее цене. Правда где ее можно отхватить за 50$ я не нашел, говорят была в ЭФО, но ныне у них на складах нету. В Чип и Дип он лежит по 116 баксов, а это уже перебор. Если найду за приемлемую цену то прикуплю.
Если у кого есть какие мнения по поводу этого девайса поделитесь.
USB программатор AVR - USBAsp
Автор DI HALT
Опубликовано 15 Авг 2008
Рубрики: Готовые устройства
Метки: AVR, Программатор
|
| Вид сверху |
!!! ЭТЕНШН !!!
Появилась схема USB программатора которая НЕ требует предварительной прошивки управляющего микроконтроллера.
Так как у многих уже давным давно нет ни COM ни LPT порта, то я решил выложить схему USB программатора для AVR. Это будет широко известный в узких кругах USBASP. Схема простая как три копейки, но COM или LPT порт все же потребуется - для того, чтобы прошить управляющий контроллер. Так что можешь сходить к другану. Программатор строится на контроллере ATMega48 или ATMega8. Нужна именно 8 или 48, без всяких индексов L. Так как у нас требуется частота выше чем 8 Мгц. Читать полностью
Программатор Громова
Автор DI HALT
Опубликовано 13 июля 2008
Рубрики: Готовые устройства
Метки: AVR, Микроконтроллер, Описание, Программатор
Самый простой вариант программатора для AVR это пять проводков, припаиваемых к порту контроллера и втыкаемых в LPT порт. Не спорю, можно и так. Но я все же не рекомендую этот способ. Даже схему подключения давать не буду — если надо будет сам найдешь. Так как данный метод не очень стабилен, возможны сбои при прошивке, длина проводков ограничена двадцатью сантиметрами (если больше, то будет глючить), поэтому придется шариться в комповой заднице. Да и LPT порт спалить проще простого. В общем не рулез.
Шарясь по инету, я нашел отличный программатор, работающий через RS232 он же COM порт. А также удобную программу для прошивки контроллера от Николаева. Схему программатора придумал Громов, создатель Algorithm Builder.
![]() |
Саму программу UniProf можно скачать у меня, но лучше взять с . Возможно там будет версия посвежее.
Читать полностью
AVR. Учебный курс. Трактат о программаторах
Автор DI HALT
Опубликовано 13 июля 2008
Рубрики: AVR. Учебный курс
Метки: AVR, Программатор
Программа для микроконтроллера пишется на любом удобном языке программирования, компилируется в бинарный файл (или файл формата intel HEX) и заливается в микроконтроллер посредством программатора.
Итак, первым шагом в освоении микроконтроллера обычно становится программатор. Ведь без программатора невозможно загнать программу в микроконтроллер и он так и останется безжизненным куском кремния.
Что же представляет из себя это устройство?
В простейшем случае программатор это девайс который связывает микроконтроллер и компьютер, позволяя. Также нужна прошивающая программа, которая по специальному протоколу загонит данные в микроконтроллер.
Программаторы бывают разные под разные семейства контроллеров существуют свои программаторы. Впрочем, бывают и универсальные. Более того, даже ту же простейшую AVR’ку можно прошить несколькими способами:
Внутрисхемное программирование (ISP)
Самый популярный способ прошивать современные контроллеры. Внутрисхемным данный метод называется потому, что микроконтроллер в этот момент находится в схеме целевого устройства — он может быть даже наглухо туда впаян. Для нужд программатора в этом случае выделяется несколько выводов контроллера (обычно 3..5 в зависимости от контроллера).







