Ну вот и пришло время нам соорудить USB программатор. Я долго не мог определиться какой бы программатор нам собрать. Выбирал по критериям простоты конструкции и удобства работы с ними, но ничего не нравилось. Выбрать программатор помог случай. Вернее я его не выбирал вообще – я его случайно собрал сам того не подозревая!
А дело было так. Некоторое количество постов назад мы собрали преобразователь USB to UART на ATtiny2313 (а в прошлой статье мы даже улучшили печатную плату). Еще при выборе схемы преобразователя я планировал на его базе (при помощи заливки различных прошивок) получать устройства различного назначения. Тогда я не подозревал, что данный преобразователь можно использовать шире, чем я планировал. Увидев схему USB программатора — USBtiny на ATtiny2313 я понял, что я уже имею готовый программатор!
Посмотрев на схему, сделанного ранее, преобразователя USB to UART (домашняя страничка)
и схему USB программатора USBTiny (домашняя страница)
можно увидеть, что это одна и та-же схема. Различия незначительны – отсутствуют сигнальные светодиоды и несколько резисторов. Для того, чтобы преобразователь стал USB программатором нужно просто прошить микроконтроллер новой прошивкой и сделать кабель для подключения.
Теперь все по порядку.
1 Для начала нужно собрать преобразователь (это если Вы его еще не собрали).
Вот рисунок печатной платы преобразователя:
055-T2313-SMD-2.zip (24517 Загрузок)
Если интересно — вот статья о преобразователе USB to UART.
В собранном виде преобразователь выглядит так:
Есть вариант платы на обычных-ТН компонентах — смотрим в конце статьи о преобразователе.
2 Немного модифицируем плату
Для того, чтобы обеспечить все необходимые сигналы для программирования впаиваем защитные резисторы номиналом по 100 Ом в линии ножек 12, 16, 17, 18, 19 (номинал не критичен — можно варьировать).
3 Теперь нужно прошить микроконтроллер.
Линии для программатора выведены на общий разъем платы (кроме сброса — стоит отдельно).
056-usbtinyisp-T2313.zip (15826 Загрузок)
056-fuse.png (8308 Загрузок)
Для 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 Скачиваем драйвер, разархивируем его.
Страничка с драйверами
5.2 Вставляем наш программатор в USB порт.
5.3 В трее появится сообщение о том, что найдено новое устройство.
5.4 Запустится мастер нового оборудования.
5.5 Указываем в окошке «место поиска» папку с драйвером.
5.6 Пройдет процесс установки драйвера. Появится окошко сообщающее о том, что драйвер установлен. Чтобы проверить, что мы там наустанавливали — заходим в «Мой компьютер/Свойства/Оборудование/Диспетчер устройств» и находим там наш программатор
Винда увидела новое устройство и готова с ним работать.
USBtiny программатор поддерживается AVRDude, а это значит, что многие среды программирования будут с ним работать без проблем. Еще одним достоинством работы с AVRDude является то, что для работы с AVRDude существует множество оболочек GUI из которых можно выбрать подходящую именно для Вас (но об этом в следующей статье).
Я с USBTiny до этого не работал, но отзывы о нем в сети положительные (отличается надежностью и быстротой программирования) — мои тестовый прошивки это подтвердили. ATtiny2313 прошивается за 10 секунд (это вместе с проверкой). Микроконтроллер определяется и программируется надежно — не было ни одной ошибки во время моих тестов. Приятный в использовании программатор!
Смотрим также:
Программируем 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) сделал довольно удачную разводку программатора. Программатор получился небольшого размера, имеет стандартный разъем для программирования и, я считаю, будет удобен в работе. Плата двусторонняя.
USBtiny.zip (8246 Загрузок)
2 Еще один вариант разводки от Андрея Баранова (Andru_48)
usbtiny_a_baranov.zip (5886 Загрузок)
3 Вариант от mebadboy
Доброе время суток.
4 Вариант от Time191 (Владимир, г. Саратов).
Получилось начертить и развести в Протеусе плату программатора.
Делал под себя, под свой ISP-разъем.
Программировал прямо в плате, джампером соединив Reset c ISP.
Все заработало сразу — большое Вам спасибо!
056-usbusbtinytime191.zip (5024 Загрузки)
В приложении есть фото готового устройства, файл в Протеусе и в печатка в ARES. Возможно, это пригодится для разводки «под себя» другим пользователям программатора, т.к. Протеус не даст перепутать компоненты, их полярность и дорожки на плате.
Различия во фьюзах не должны влиять на работу устройства. Но попробуйте те что из середины статьи.
но фюзы то разные! или это не имеет значения?
Это одни и те же файлы.
Откуда надо брать:- из пункта 3 -Теперь нужно прошить микроконтроллер
или из — Файлы к статье ?
Ну с генерацией вродибы я уже разобрался. А вот запустить никак не получается. Ну разбирал програматор пару раз и снова собирал, проверял tiny ну вродибы все ок! а он не работает, начал смотреть и обнаружил не соответствие фюзов пункта — 3 Теперь нужно прошить микроконтроллер и — Файлы к статье: Где правильно? Я прошивал по пункту 3 и hex тоже.
Чем это все отличается?
.
Генерация кварца очень нежная — ее сорвать даже грязь на плате может.
Слава Богу увидел программатор мою tiny. Что я только ей не делал. Сегодня пришла мысль, а если на 5 ногу подать 12 мгц с генератора на 555ЛА3 ну и она таки проявилась. Прошивка осталась на месте, фьюзы тоже те что я записал. Может добротность кварца плохая. Когда он припаян к 4 и 5 ножке то осцилографом я не увидил возбуждения хотя он возбуждался на PL2303 прямо перед выпайкой,включил проверил, все определилось. Хотя я заметил что там не были впаяны два конденсатора на массу. Завтра попробую без кондеров. Подумал может осцил срывает генерацию.
Теперь думаю что с этим всем делать? Какие мысли?
@awas5
Рано сдаётесь.
Указаны только Low и High фьюзы, потому что только их и надо было прошить (у меня вот avrfuses — gui над avrdude под MacOS вообще не позволяет выставить lock и ext).
Алгоритм работы должен был быть такой:
1. считать заводские настройки с контроллера;
2. выставить Low и High фьюзы из статьи и прошить.
Давайте подумаем, что же у Вас произошло с МК.
Lock-биты отвечают за запрет чтения прошивки из мк. Если вы их даже зашили в не заводскую конфигурацию (в чём я лично сомневаюсь), то от этого спасёт полная очистка мк. При очистке мк lock-биты ставятся в своё заводское состояние. Раз мк не видится вообще, то дело не в lock-битах.
Ext-биты «предназначены для установки порога срабатывания схемы детектора напряжения питания: когда напряжения питания достигнет установленного уровня, произойдет сброс микроконтроллера». Тоже вряд ли после изменения их конфигурации контроллер перестанет видеться.
Вангую, что Вы прошили контроллер вне схемы, подпаявшись к выводам. Прошивка залилась без проблем. Затем Вы зашили фьюзы. Фьюзы, которые Вы зашили (из статьи) соответствуют работе с внешним кварцем на 12МГц. Поскольку кварца на 12 МГц к мк не подключено, работать он отказывается, соответственно программатором больше не определяется. Работать снова он начнёт, когда вы подключите к нему кварц. Посему, советую попробовать припаять между 4-м и 5-м пином attiny2313 кварц на 12МГц и попробовать прочитать снова. Если с Low и High фьюзами не налажали, то должны прочитаться те же фьюзы.
Вообще я бы посоветовал прошивать МК внутрисхемно (то есть после того, как плата полностью собрана). В этом случае подобных проблем возникать не должно.
Удачи! Пишите, если есть вопросы.
Ну в общем то после считывания правки и записи фьюзов мой контролер перестал определятся.
Задавать вечный вопрос — что делать? я думаю бесполезно.
Перечитав все про прошивку я понял, что вопрос фьюзов действительно положил не одного радиолюбителя и отбил охоту этим заниматься. Сегодня поехал на радиорынок чтоб купить контролер новый, там встретил парочку знакомых радиолюбителей, поплакался. Говорю мол сделал прогер, залил прошивку сверил — сошлось, а на фьюзах «сгорел», мол почему как то непонятно выкладывается… — их ответ меня поверг в шок. Ну и ладно.
У меня вопрос. Почему нельзя выложить полный скрин фьюзов как должно быть после правки, все четыре колонки сразу?
да
-Кварц на программаторе еще не к чему не обязывает – если схема самого устройства кварц не содержит, то его и ставить не нужно — значит так я понял что прошить 5 проводками я могу и без кварца
Кварц на программаторе еще не к чему не обязывает — если схема самого устройства кварц не содержит, то его и ставить не нужно.
Фьюзы нужно сначала считать а потом править (те что даны). Те фьюзы что не правились или не записываюся вообще (если есть такая возможность) или записываются такими как были прочитаны.
День добрый. Купил tiny2313,кварц 12мгц, собрал -5 проводков-, uniprof зашил HEX файл, сверил — сошлось, а вот fuse шить побоялся:
1.-если на схеме программатора стоит кварц то его тоже надо вешать на tiny при прошивке? (ответ можно — да, нет)
2.- в таблице фьюзов есть 4 колонки: 1 — Lock fuse, 2 — Fuse low, 3 — Fuse higt, 4 — Fuse ext, на скачанной установке фьюзов похоже есть только 2 и 3,ну как поставить я то понял. А вот в 1 и 4 похоже оставить так как есть?
3.- При нажатии Read в каждой колонке высветились cвои галочки.В 1и 4 колонках есть все галочки их и нодо снова записать write?
по моему нет
Привет всем. Спасибо за сайт и за статьи, очень хорошие! Собрал USBTiny — пока не программировал, но системой ( Win7 ) определился как надо (спасибо за драйвер). я новичок из новичков поэтому есть вопрос: можно ли USBTiny переделать так, чтобы можно было программировать PIC контроллеры? Заранее спасибо.
@popka-ru
Вы смысл улавливаете? Я говорю берется камень новый. Считываются фьюзы с него. Фьюзы будут показаны в вашей программе с галочкой или без(не отмеченые). Вот по SPIEN и нужно смотреть. Он по умолчанию включон. Если у вас он будет без галочки, то значит у вас инверсный показ фьюз. Значит вы должны поставить галочки там, где на скрине галочки не стоят.
@popka-ru
Бит spien запрещает isp-программирование. Это как раз такое, каким вы шьёте мк. Если изменить его состояние, придётся собирать высоковольтный программатора. Трогать его не надо. Да и не получится в современных контроллерах.
@SIG74
SPIEN я отключил в скрипте самой программы дудка и при считывании любого камня, SPIEN не активен
http://dl3.joxi.net/drive/0007/0071/503879/160131/bb388e3ab2.png
а должен ли быть активен в данном случае, не понятно. так как по фузам прилагаемым в данной статье снимается галочка с SPIEN. как и в большинстве случаев при прошивке
@popka-ru
Фьюзы даны в статье. считываете заводские фьюзы и смотрите как отмечен SPIEN считаный с вашего камня и сравниваете со скрином. Есть программы где фьюзы даются чтоб их отметить галочкой. Есть программы, где на оборот.
я так понял фузы выставляются дефолтные а нужно на 8.0МГц, то есть не читается только из-за того что кварц не работает, не включен.
Фьюзы ATtiny2313 внутренний RC генератор на 8.0МГц
http://dl1.joxi.net/drive/0007/0071/503879/160131/02154d11e2.png
работает и определяется, но не всегда. прошивал через дудку, работает через раз
дополнение https://vk.com/im?peers=56253256&sel=8734954&z=photo237869720_399213882%2Fmail11053
@mebadboy
я то выпаял но не тот. выпаял и второй результата ноль комп его видит но имя так и не распознает
https://pp.vk.me/c633127/v633127720/10234/DuKIkprxTLQ.jpg
при этом драйвера установил, устанавливал как при подключенном , так и при отключенном программаторе.
@popka-ru
И выпаяйте всё-таки красный диод. У меня была такая же проблема из-за такого же диода.
@popka-ru
Откапал свой UsbTinyISP и UsbAsp. Правильные фьюзы с помощью avrdude в UsbTinyISP, используя UsbAsp, можно залить командой:
avrdude -P usb -c usbasp -p ATtiny2313 -qq -U lfuse:w:0xee:m -U efuse:w:0xff:m -U hfuse:w:0xdf:m
То есть Low fuses: 0xee; High fuses: 0xdf; Extended fuses: 0xff.
@mebadboy
так я и выложил фото, только тут нет возможности загружать полноценно. то на скрины ведут ссылки . по поводу фузов. как считать не знаю и не умею.пользуюсь только го товыми подробными проектами. нуб я в этом. программатором пользуюс UsbAsp V2. и дудкой
@mebadboy
И ещё советую тестировать вс] же под XP. Под 7-кой и старше будут проблемы с тем: что драйвер не подписан — придётся загружаться без службы проверки драйверов.
@popka-ru
Доброго времечка
У меня нет сейчас возможности открыть плату Time191, потому как ARES у меня под рукой нет. Не могли бы вы выложить её в виде картинки? По фото платы есть предположение, что индикация питания сделана также, как на плате у Zalognik. Если это так, то попробуйте отпаять диод — индикатор питания (а по-моему так и есть).
Касаемо фьюзов, советую юзать для UsbAsp GUI отсюда: http://extremeelectronics.co.in/avr-tutorials/gui-software-for-usbasp-based-usb-avr-programmers/
Работает кроссплатформенно.
Есть ещё калькуляторы фьюзов: http://homes-smart.ru/fusecalc/?prog=avrstudio&part=ATtiny2313
@popka-ru
дополнение к предыдущему. прошиваю через дудку. под нее фузы нужны, так как не понимаю, не знаю как высчитывать и править, что в дудке и не возможно, то могу только выставить галочки на нужных. помогите пожалуйста.
@time191
не моглибы вы дать точные фузы для прошивки вашей версии . собрал по вашей схеме и ни как не определяется.драйвера установил а все равно пишет что устройство не определено. все установленые элементы соответствуют вашему скрину. вот мой
https://pp.vk.me/c633127/v633127720/1023d/evej_L62YBU.jpg
https://pp.vk.me/c633127/v633127720/10246/8JDFYbJdVTg.jpg
камень прошиваю на другом прогере USBASP. фузы выставляю все из предложеных и ни с одним вариантом не определяется.специально купил несколько 2313 и со всеми результат одинаковый. программатор подкулючал на виндовсах ХР,7,8,10. везде определяется как неизвестное. всю неоч просидел, а толку ноль.
Всем доброго времени. возникла проблема с программатором собранный по последней схеме. проблема заключается в том что система его не распознает но в диспетчере устройств он отображается как»Неизвестное USB-устройство (сбой запроса дескриптора устройства)»
Система Windows остановила это устройство, так как оно сообщило о возникновении неполадок. (Код 43)
Сбой запроса дескриптора USB-устройства.
как решить данную проблему, какая прошивка подходит под даный прогер и какие именно фузы выставлять для правильной работы. все те фузы что выложены тут, не решают проблему.
К предидущему посту. Форма ввода в тексте команды поставила не те кавычки, использовать простые двойные кавычки))
Привет Всем!
Благодарность автору за сайт, а сообществу за обмен опытом. Я тоже хочу поделиться, т.к. пришлось приложить усилия. чтобы запустить USBTiny под linux)).
1)Linux видит USBTiny, но не как Serial/COM/port и соответственно не создает /dev/ttyXX устройств. По этому SinaProg под Wine — с ним отказывается работать )) Может у кого получилось их подружить под Wine-поделитесь?
Для того чтобы указать avrdude нужно задать ключик -P usb[:bus][:device]
bus, device — можно посмотреть командой lsusb
2)USBTiny не определялся avrdude с ошибкой
avrdude: Error: Could not find USBtiny device (0x1781/0xc9f)
Для решения создал файлик /etc/udev/rules.d/usbtinyisp.rules под root c единственной строкой
SUBSYSTEM==»usb», ATTR{product}==»USBtiny», ATTR{idProduct}==»0c9f», ATTRS{idVendor}==»1781″, MODE=»0666″, GROUP=»dialout»
Затем рестарт udev
systemctl restart systemd-udevd
должно сработать
Все что есть по этому программатору можно посмотреть на авторской страничке https://learn.adafruit.com/usbtinyisp
Соответственно и драйвера там есть.
Здравствуйте автор.
Сделал плату по ссылке http://www.getchip.net/posts/040-uartrs-232-to-usb-prostojj-preobrazovatel/ добавил разъем ISP, резисторы. Можете ли Вы написать Win драйвер для USB Atmega8 программатора.
Спасибо за статьи!
@fox40
Судя по треду, разъём он специально собрал не стандартный, потому что он такой везде использует, джампер на питание ему не нужен, а индикацию он сделал самую простую, чтобы не париться. В общем-то индикация должна работать. Я подозреваю, что это сильно зависит от качеств диода.
@mebadboy
Мне вот интересно, судя по фотке он его тоже собрал, у него работает без исправлений?
@mebadboy
Да, сейчас обратил внимание! Молодец:)
@fox40
Моя печатка — это как раз печатка Дмитрия Шпака с исправлениями.
Всем привет. Повторил программер по Разводка USBtiny от Дмитрия Шпака, светодиод PWR стоит неправильно, с ним не работает и ошибка в разводке платы на стороне где установлены конденсаторы кварца «+» приходит на 10 ногу ISP разъёма вместо 2, там поправить и будет всё работать.
1 вывод — это сброс, его нужно подключить через резистор 10кОм к +питанию
20 — питание МК — здесь никаких резисторов не нужно
Здравствуйте! хотел повторить программатора по печатной плате «USBtiny.lay — Разводка USBtiny от Андрея Баранова» но запутался с номиналами резисторов так непонятно сколько к 1 выводу и 20 выводу где можно глянуть схему? в схеме первоисточника изменено питание там резисторы подключены к +5v Подскажите пожалуйста?
Для программирования МК используется аппаратный интерфейс SPI, а он жестко привязан к своим ножкам. Поменять нельзя.
Зачем знать размер прошивки? Если она сделана для определенного МК — она в любом случае в него влезет. Если прошивка для другого МК она работать не будет.
Да, извиняюсь, еще вопрос.
Здесь в комментариях объяснялось, что объем текстового файла с прошивкой и объем самой прошивки — не одно и то же.
А как узнать тогда объем самой прошивки, или она где то указывается автором?
Здравствуйте.
У меня такой вопрос. Согласно даташита, сигналы для пограммирования у 2313 берутся с определенных ножек МК: 19-SCK, 18-MISO, 17-MOSI. А возможно ли переназначить выходы, к примеру, MISO станет 17, а MOSI 18 ? Ну, допустим мне так будет удобнее плату развести.
Нет, так работать не будет.
Уважаемый автор, подскажите будет ли работать ваша схема с прилагающейся прошивкой, если убрать кварц с конденсаторами и установить фьюз-биты на работу контроллера от внутреннего кварца.
@ufofly
Можно.
@summit
А ты его прошил, перед тем как в usb подключать?
Добрый вечер) у меня в наличие мк тини2313а, можно будет использовать ее в данной схеме?
уже все прозвонил — проблем нету
такое впечатление что МК не заводится с прошивкой програматора