Поиск по этому блогу

31 дек. 2013 г.

056-USB-программатор – легко! (USBTiny)

Ну вот и пришло время нам соорудить USB программатор. Я долго не мог определиться какой бы программатор нам собрать. Выбирал по критериям простоты конструкции и удобства работы с ними, но ничего не нравилось. Выбрать программатор помог случай. Вернее я его не выбирал вообще – я его случайно собрал сам того не подозревая!
А дело было так. Некоторое количество постов назад мы собрали преобразователь USB to UART на ATtiny2313 (а в прошлой статье мы даже улучшили печатную плату). Еще при выборе схемы преобразователя я планировал на его базе (при помощи заливки различных прошивок) получать устройства различного назначения. Тогда я не подозревал, что данный преобразователь можно использовать шире, чем я планировал. Увидев схему USB программатора – USBtiny на ATtiny2313 я понял, что я уже имею готовый программатор!
Посмотрев на схему, сделанного ранее, преобразователя USB to UART (домашняя страничка)
Модифицированная схема преобразователя

и схему USB программатора USBTiny (домашняя страница)usbtiny програматор
можно увидеть, что это одна и та-же схема. Различия незначительны – отсутствуют сигнальные светодиоды и несколько резисторов. Для того, чтобы преобразователь стал USB программатором нужно просто прошить микроконтроллер новой прошивкой и сделать кабель для подключения.
Теперь все по порядку.1  Для начала нужно собрать преобразователь (это если Вы его еще не собрали).
Вот рисунок печатной платы преобразователя:
055-T2313-SMD-2 v2.0 - Рисунок печатной платы UART-USB на ATtiny2313
Если интересно – вот статья о преобразователе USB to UART
В собранном виде преобразователь выглядит так:
Внешний вид преобразователя
Обратная сторона платыЕсть вариант платы на обычных-ТН компонентах – смотрим в конце статьи о преобразователе.
2 Немного модифицируем платуДля того, чтобы обеспечить все необходимые сигналы для программирования впаиваем защитные резисторы номиналом по 100 Ом в линии ножек 12, 16, 17, 18, 19 (номинал не критичен – можно варьировать).
Модифицируем преобразователь
3 Теперь нужно прошить микроконтроллер. 
Линии для программатора выведены на общий разъем платы (кроме сброса – стоит отдельно).
Линии программирования056-usbtinyisp-T2313.hex v1.04 - Прошивка USBtiny программатора для ATtiny2313
056-fuse - Фьюзы для устройства
Для Algorithm Builder и UniProf галочки ставятся как на картинке.
Для PonyProg, AVR Studio, SinaProg галочки ставяться инверсно.
Как правильно прошить AVR фьюзы
Наверно не нужно говорить о том, что для прошивки микроконтроллера Вам понадобится программатор. На скорую руку можно собрать LPT программатор и прошить при помощиUniProf.

4 Далее нам нужен шлейф для того, чтобы соединить программируемое устройство с нашим программатором. Все линии, необходимые для программирования находятся на одном разъеме.
Пинаут программатора
Схема шлейфа проста.
Схема кабеля
Из особенностей – я вынес индикаторный светодиод и балластный резистор для него за плату на разъем – это для того, чтобы плату без перепайки можно было использовать для других устройств (ну и так прикольней – светодиод мигает прямо в разъеме :) ).  Кроме того, линия Vcc отделена от общего разъема – это на случай если программируемое устройство запитывается не от USB, а от своего источника (что, в принципе, желательно). Сигнальные линии (SCK, MISO, MOSI) желательно экранировать (например чередованием сигнальных и земляных линий в шлейфе). Длину шлейфа не стоит делать большой – до 50 см, не больше. Если нужно программировать удаленное устройство всегда можно применить USB удлинитель – так надежней. Вот мой готовый шнурок:
Внешний вид кабеля

5 Сам программатор готов, теперь нужно установить драйвер для того, чтобы Винда смогла с ним работать (для Mac OS X & Linux, вродь-как, драйвера вообще не нужно). Тут все просто:
5.1 Скачиваем драйвер, разархивируем его.
usbtinyisp w32 driver v1.12 - Win драйвер для USBtiny программатора
Если у Вас Винда 64 битная, Vista или Windows 7 нужно установить другой драйвер:
usbtinyisp_libusb-win32_1.2.1.0.zip - Драйвер USBtiny для х64, Vista или Windows 7
Вставляем преобразователь в USB порт
5.2 Вставляем наш программатор в USB порт.

Сообщение в трее 5.3 В трее появится сообщение о том, что найдено новое устройство.

Мастер нового оборудования
5.4 Запустится мастер нового оборудования.

Место поиска
5.5  Указываем в окошке «место поиска» папку с драйвером.

Драйвер установлен
5.6 Пройдет процесс установки драйвера. Появится окошко сообщающее о том, что драйвер установлен. Чтобы проверить, что мы там наустанавливали - заходим в «Мой компьютер/Свойства/Оборудование/Диспетчер устройств» и находим там наш программатор
Установленное устройство
Винда увидела новое устройство и готова с ним работать.
USBtiny программатор поддерживается AVRDude, а это значит, что многие среды программирования будут с ним работать без проблем. Еще одним достоинством работы с AVRDude является то, что для работы с AVRDude существует множество оболочек GUI из которых можно выбрать подходящую именно для Вас (но об этом в следующей статье).
Я с USBTiny до этого не работал, но отзывы о нем в сети положительные (отличается надежностью и быстротой программирования) – мои тестовый прошивки это подтвердили. ATtiny2313 прошивается за 10 секунд (это вместе с проверкой). Микроконтроллер определяется и программируется надежно – не было ни одной ошибки во время моих тестов. Приятный в использовании программатор!

Файлы к статье:055-T2313-SMD-2 v2.0 - Рисунок печатной платы UART-USB на ATtiny2313
056-usbtinyisp-T2313.hex v1.04 - Прошивка USBtiny программатора для ATtiny2313
056-T2313-FuseBit - Фьюз-биты ATtiny2313 для USBtiny
usbtinyisp w32 driver v1.12 - Win драйвер для USBtiny программатора
USBtiny-cable - Схема кабеля для USBtiny программатора
Смотрим также:Программируем AVR-микроконтроллеры USBtiny + AVRdude + SinaProg. (в процессе написания)
055-UART to USB – простой преобразователь на ATtiny2313 (Версия 2). – преобразователь USB to UART из которого мы сделали преобразователь.
053-Практичный шнур для применения в электронных проектах. – Как сделать шлейф для программатора.
041-UART to USB – простой преобразователь на ATtiny2313. – Первый вариант платы USB to UART. В статье есть рисунок платы для для TH-компонентов.
Домашняя страничка преобразователя USB to UARTДомашняя страничка программатора USBtiny

ДОПОЛНЕНИЯ.1 Дмитрий Шпак (Zalognik) сделал довольно удачную разводку программатора. Программатор получился небольшого размера, имеет  стандартный разъем для программирования и, я считаю, будет удобен в работе. Плата двусторонняя.
Программатор USBTinyPCB USBTiny

USBtiny.lay - Разводка USBtiny от Дмитрия Шпака

2 Еще один вариант разводки от Андрея Баранова (Andru_48)
USBtiny.lay - Разводка USBtiny от Андрея Баранова

3 Вариант от mebadboyДоброе время суток.
Новую печатку я не собирал. Я просто исправил старую - Zalognikа. Там минимум исправлений – одну дорожку перерезать, кинуть проводок, впаять резистор и диод впаять в другое место.
USB-tiny-mebadboy - Печатка USBtiny от mebadboy
Вот лог dmesg при подключении под linux:
usb 4-2: new low speed USB device using uhci_hcd and address 2
usb 4-2: New USB device found, idVendor=1781, idProduct=0c9f
usb 4-2: New USB device strings: Mfr=0, Product=2, SerialNumber=0
usb 4-2: Product: USBtiny
4 Вариант от Time191  (Владимир, г. Саратов).
Получилось начертить и развести в Протеусе плату программатора.
Делал под себя, под свой ISP-разъем.
Программировал прямо в плате, джампером соединив Reset c ISP.
Все заработало сразу – большое Вам спасибо!
056usbusbtinytime191.zip - USBTiny от Time191
В приложении есть фото готового устройства, файл в Протеусе и в печатка в ARES. Возможно, это пригодится для разводки «под себя» другим пользователям программатора, т.к. Протеус не даст перепутать компоненты, их полярность и дорожки на плате.

LPT Программатор AVR микроконтроллеров

 Программатор AVR микроконтроллеров
Принципиальная схема более сложного программатора на LPT порт показана на рисунке. В качестве шинного формирователя используется микросхема 74HC244 (К1564АП5), 74LS244 (К555АП5) либо 74ALS244 (К1533АП5), хотя может использоваться любой другой не инвертирующий шинный формирователь с тремя состояниями (в этом случае может потребоваться соответствующее изменение схемы). Светодиод VD1 индицирует режим записи микроконтроллера, светодиод VD2 - чтения, светодиод VD3 - наличие питания схемы. Напряжение, необходимое для питания схема берёт с разъёма ISP, т.е. от программируемого устройства. Эта схема является переработанной схемой программатора STK200/300 (добавлены светодиоды для удобства работы), поэтому она совместима со всеми программами программаторов на PC, работающих со схемой STK200/300. Для работы с этим программатором можно посоветовать программу IC-Prog(где при выборе типа программатора следует установить "STK200 Programmer") или программу AVReal.

Программатор можно выполнить на печатной плате и поместить её в корпус разъёма LPT, как показано на рисунках:
Для работы с программатором удобно использовать удлинитель LPT порта, который несложно изготовить самому (к примеру, из кабеля Centronix для принтера), главное "не жалеть" проводников для земли (18-25 ноги разъёма) или купить. Кабель между программатором и программируемой микросхемой не должен превышать 20-30 см.

Рудных Владимир
Mailto: Dreadatour@mail.ru

Миниатюрный, быстрый, автономный программатор AVR микроконтроллеров с SD картой памяти. Часть 3


Часть 1. Основные характеристики, поддерживаемые режимы и принципиальная схема программатора
Часть 2. Описание функций и опций, режимы работы, результаты тестирования
Как было замечено ранее, для работы программатора требуется наличие системных файлов на SD карте памяти. Файлы должны быть помещены в соответствующие директории:
  • файлы для программирования Flash-памяти в папку «flash»,
  • файлы EEPROM – в папку «eeprom»,
  • конфигурационные txt файлы для программирования Fuse-битов – в папку «fuseb»,
  • Lock-биты – в папку «lockb».
Папка «System» содержит другие файлы, необходимые для работы программатора, включая базу данных по микроконтроллерам (файл chip.db), настройки (файл config.ini), изображения формата BMP. Архив с содержимым SD карты со всеми необходимыми файлами доступен для скачивания в разделе загрузок, в котором находится папка SD-files, содержимое которой необходимо скопировать на карту памяти.
Файлы для программирования памяти целевого микроконтроллера, как известно, генерируются компилятором, в них нет сомнений, и мы помещаем их в соответствующую папку на карте памяти. Нам остается лишь создать конфигурационные txt файлы для программирования Fuse- и Lock-битов, значения в этих файлах должны быть в шестнадцатеричном формате.
Файл с Fuse-битами содержит последовательные данные: младший байт, старший байт, расширенный байт в HEX. К примеру, содержимое файла для микроконтроллера Atmel ATtiny45будет: 62DFFF. В конфигурационном файле могут содержаться комментарии и пользовательская информация, но только первые три байта используются программатором.
Структура конфигурационного файла Lock-битов аналогична, за исключением того, что используется лишь один байт из последовательности. Например, если нужно запрограммировать биты LB0 и LB1, то в файле должно содержаться значение FC (11111100). Это правило применимо и к Fuse-битам, если мы попытаемся запрограммировать несуществующий бит (записать в него 0), ничего страшного не случиться, мы получим лишь ошибку верификации, т.к. этот несуществующий бит всегда будет читаться как 1.
При чтении Fuse- и Lock-битов программатором, создаются соответствующие файлы с такой же структурой.
Список файлов (при работе с программатором) отображается не в алфавитном порядке, а в порядке их записи на карту памяти. Выделение файлов осуществляется кнопками UP и DOWN, выбор кнопкой RIGHT, отмена – кнопкой LEFT.
Программатор поддерживает работу с картами объемом 128 МБайт, 512 МБайт, 1 ГБайт, 2 ГБайт (работа с этими картами тестировалась). В дальнейшем возможна поддержка карт SDHC. Имена файлов на SD карте в формате DOS 8.3.
Поддерживаемые программатором µProg карты памяти
Разъем внутрисхемного программирования целевого микроконтроллера – это стандартный 6-выводный Atmel ISP коннектор. Однако, из-за того, что программатор питается от батареи, вывод коннектора Vcc (вывод 5 коннектора) был переназначен для доставки тактового сигнала 8 МГц к целевому микроконтроллеру (в случае необходимости внешнего тактирования). Сигнал подается через резистор 10 кОм, и поэтому нет необходимости переделывать стандартный кабель для программирования.
ISP коннектор
ISP коннектор программатора при установке на печатную плату

Стандартный ISP коннектор
Стандартный ISP коннектор Atmel
Программатор имеет режим автоматического определения скорости программирования по внутрисхемному интерфейсу. Поддерживаются 7 режимов со скоростью работы 4 МГц, 2 МГц, 1 МГц, 500 кГц, 250 кГц, 125 кГц и 62.500 кГц. Теоретически, выбирается скорость равная ¼ рабочей частоты целевого микроконтроллера, но это не всегда. При каждой инициализации режима программирования программатор стартует на максимальной частоте и выполняет тест скорости, считывая сигнатурные байты 10 раз. В случае ошибки скорость работы (частота SCK) понижается и операция инициализации повторяется. Если же на самой низкой частоте не удается прочитать сигнатурные байты, то программатор выдает сообщение об ошибке «no answer». Самой вероятной причиной этого может быть слишком большая длина кабеля для программирования.
Обновление ПО программатора
Обновление ПО программатора можно провести двумя разными способами: посредством разъема ISP или с помощью загрузчика с карты памяти.
В первом случае необходимо подключить внешний ISP программатор к разъему ISP программатора µProg и замкнуть перемычку SLF-PRG – в этом случае разъем ISP будет служить для обновления ПО (как в программаторе USBasp).
Во втором случае встроенный загрузчик может самостоятельно обновить прошивку из BIN файла на SD карте. Пользователю необходимо поместить файл обновления с именем 000.bin(переименовать файл обновления в 000.bin) в корневую директорию SD карты. При включении питания программатора дисплей будет чистым, что говорит о том, что файл обновления найден и устройство ждет подтверждения пользователя. Пользователь должен нажать кнопку ВПРАВО для подтверждения обновления ПО. Перепрошивка занимает несколько секунд, по окончанию программатор запускается, выводя приветственное сообщение с текущей версией ПО. Теперь файл 000.bin можно удалить. Если программатор не входит в режим обновления, причиной этого может быть режим, неподдерживаемый SD картой, – просто попробуйте заменить карту памяти.
Для конфигурирования программатора используется файл config.ini, в котором содержится конфигурационный байт. Файл помимо конфигурационных данных содержит описание настроек на русском языке и пользователям не составит труда разобраться в нем.
При первоначальном программировании микроконтроллера программатора ATmega328Pнеобходимо установить следующие Fuse-биты: Ext:07 (расширенный байт), high:D0 (старший байт), low:A2 (младший байт). Это означает: работа от внутреннего осциллятора 8 МГц без делителя на 8, включен выход CLKO, Brown-out детектор настроен на уровень 2.7 В, переход по вектору Reset в загрузчик, размер области загрузчика 4 КБайт, бит EESAVE запрограммирован.
Демонстрация работы программатора
Плата с установленными компонентами
Печатная плата с установленными компонентами
 
Кабель для программирования
Загрузки
Архив с принципиальной схемой и рисунками печатной платы, все системные файлы для SD карты памяти, прошивка микроконтроллера (BIN, HEX) – скачать
Перевод: Vadim по заказу РадиоЛоцман