Программатор AVR vusbtiny |
![]() |
Добавил(а) microsin | ||||||
Программатор собран на чипе ATtiny85 (или ATtiny45), работает без кварца, и наверное это самый простой и самый маленький из программаторов AVR, который работает через USB. Проект был опубликован на сайте simpleavr.com, в этой статье переведенное и доработанное описание программатора. Все выводы микроконтроллера ATtiny45 (ATtiny85) задействованы, даже вывод сброса RESET (для этого необходимо специальным образом запрограммировать фьюзы, см. далее). На рисунке показана цоколевка микроконтроллера, и красным шрифтом сигналы программатора, которые соответствуют его выводам. RESET выход сигнала сброса для программируемого устройства (внешнего микроконтроллера AVR). Чтобы firmware программатора могло использовать ножку этого порта, необходимо запрограммировать фьюз RSTDISBL. В firmware программатора используется библиотека V-USB [1], которая позволяет реализовать программную поддержку протокола USB 1.0 без использования кварцевого резонатора (работает внутренний генератор на 16.5 МГц, программно подстраиваемый по частоте импульсов конца фрейма EOF USB). 1. Логика программирования взята из исходного кода программатора usbtiny isp [2]. Имейте в виду, что сигнальные линии до программируемого устройства не имеют защиты. Вы можете на всякий случай добавить резисторы номиналом 1..2 кОм на линии SCK и MOSI для защиты программатора от возможного неправильного подключения к программируемому устройству (на схеме эти резисторы показаны пунктиром). [Список деталей] - микроконтроллер Atmel AVR ATtiny45 (или ATtiny85). [Необходимые инструменты] - работающий программатор AVR. Он нужен, чтобы записать firmware программатора, и правильно установить фьюзы микроконтроллера ATtiny45 (ATtiny85). [Указания по использованию] 1. Программатор vusbtiny работает совместно с консольной программой/утилитой avrdude [3], и avrdude видит программатор как usbtiny programmer. На рисунке показано цоколевка размещение деталей и соединений на макетном поле breadboard. На фото показан внешний вид монтажа.
[Фьюзы микроконтроллера ATtiny85] В таблице показаны фьюзы микроконтроллера ATtiny45 (ATtiny85), их отличие от фьюзов по умолчанию, и расшифровано значение отличающихся фьюзов (отличающиеся значения фьюзов помечены красным цветом). CKDIV8 бит, который отключает делитель тактовой частоты для ядра. Раньше частота тактового генератора делилась на 8. В программаторе vusbtiny делитель отключен, чтобы частота тактов могла быть 16.5 МГц. [Сборка vusbtiny firmware из исходного кода, прошивка чипа программатора] Проект был написан и собран в среде linux ubuntu lucid box, с использованием инструмента разработчика avr-gcc toolchain [5]. Подразумевается, что у Вас уже установлен avr-gcc, и Вы можете скачать исходный код vusbtiny (распространяется под лицензией gnu gpl v2), ссылка на закачку [4]. Можно также скомпилировать исходный код и в среде Windows, имея установленный пакет разработчика WinAVR [6]. Структура исходного кода выдержана в стиле библиотеки V-USB. Скачайте vusbtiny.tgz [4] и распакуйте его в папку проекта. В файле main.c содержится основной код программатора, который был взят от usbtiny programmer и модифицирован. Поддиректория usbdrv содержит код библиотеки V-USB. Процесс сборки по шагам в среде Linux: 1. Распакуйте файл vusbtiny.tgz [4] командой tar -zxvf vusbtiny.tgz. Для того, чтобы пользоваться программатором через makefile, предназначен макрос AVRDUDE_PROGRAMMERID, в котором указан тип программатора. Например, для программатора usbtiny и для vusbtiny строка в makefile должна быть: AVRDUDE_PROGRAMMERID=usbtiny После того, как настроите программатор и подключите программируемый микроконтроллер к чипу, выполните команду make install, и код vusbtiny firmware запишется в чип программатора. Далее необходимо поменять фьюзы так, чтобы firmware могло использовать вывод 1 микроконтроллера (который пока по умолчанию используется для сброса). Для этого выполните команду: avrdude -c usbtiny -p t45 -V -U lfuse:w:0xe1:m -U hfuse:w:0x5d:m -U efuse:w:0xff:m Внимание! Эта команда запретит дальнейшую перепрошивку запрограммированного чипа, так как вывод 1 микроконтроллера перестанет работать как вход сброса. Это происходит потому, что фьюз RSTDISBL будет перепрошит так, что он начнет работать как простой порт ввода/вывода (чтобы им можно было управлять программно), и перестанет работать как вход сброса микроконтроллера (вход сброса должен работать, чтобы можно было запрограммировать микроконтроллер через протокол ISP). Чтобы стереть/перепрограммировать микроконтроллер программатора, нужно использовать специальный высоковольтный программатор HVSP. Только им можно восстановить фьюзы, чтобы чип снова программировался по ISP. [Использование программатора] Если Вам нужно использовать vusbtiny для программирования 8-выводных AVR в корпусе DIP8, то можете просто повесить программируемый чип сверху, как показано на фото (сверху насажен программируемый чип ATtiny13V). Программатор vusbtiny разработан так, что программирующие ножки программатора совпадают с соответствующими ножками программируемого чипа. Однако нужно отключить выводы 2 и 3 программируемого чипа (можно немного отогнуть их в сторону, или использовать полоску скотча), чтобы они не мешали работе сигналов D+ и D- интерфейса USB.
Для программирования внешних устройств нужно использовать коннектор ISP J2. Аббревиатура ISP расшифровывается как In-System Programming. Для соединения с программируемым устройством применяется кабель, который с одной стороны подключается к J2 программатора, а с другой стороны к программируемому устройству. На рисунках показаны стандартные цоколевки кабелей ISP (они бывают ISP6PIN 2x3 и ISP10PIN 2x5). [Устранение проблем (troubleshooting)] 1. Не прошивается firmware? Проверьте исходный программатор, возможно нужно подстроить скорость тактирования с помощью флага -B утилиты avrdude. Сначала попробуйте прочитать чип - если он совсем не читается, то возможно в нем неправильно установлены фьюзы. В этом случае возможно нужно подать внешнюю тактовую частоту, либо воспользоваться программатором HVSP для восстановления фьюзов. 2. Часто чип не прошивается из-за неправильного подключения. Проверьте все контакты соединения с программируемым устройством. 3. Если программатор не видится в компьютере как устройство USB, проверьте диоды Зенера 3.6V. Вы можете их заменить на 400 или 500 милливаттные версии (не используете диоды Зенера на 1 Ватт). Если программатор работает неустойчиво, попробуйте также уменьшить значение резистора R3 до 1.2 кОм. 4. Поэкспериментируйте с флагом -B утилиты avrdude, попробуйте применить более короткий кабель USB. 5. Windows: проблема в компиляции firmware vusbtiny после make clean, make, компилятор выдает ошибку: Проблема была в том, что make clean запускал строку $(REMOVE) $(GENASMFILES), которая удаляла файл usbdrvasm.S. Под Linux этот файл не удалялся, так как там в именах маленькие и большие буквы дают разные имена, а в Windows имена usbdrvasm.S и usbdrvasm.s совпадают. Закомментировал строку $(REMOVE) $(GENASMFILES). После этого проект стал нормально компилироваться после выполнения команд make clean, make. 6. Windows: снова ошибка, связанная с длинными именами файлов. Возникает при повторной перекомпиляции из-за того, что файл usbdrvasm.S перетирается генерируемым дампом. Файл перетирался из-за опций ASMFLAGS makefile, исправил. Было раньше: ASMFLAGS =-I. $(INC) -mmcu=$(MCU) \ Исправленные опции ASMFLAGS, которые не перетирают usbdrvasm.S: ASMFLAGS =-I. $(INC) -mmcu=$(MCU) \ [Программатор vusbtiny, собранный на макетной плате AVR-USB-TINY45] [Ссылки] 1. V-USB site:obdev.at - официальный сайт библиотеки V-USB. |