Как Вы помните, ранее нами была перепрошита плата преобразователя UART to USB для того, чтобы получить USB программатор USBtiny. USBtiny у нас получился, он отлично работает под AVRdude, но хочется большего – использовать его еще шире! Автор AVRtiny, вероятно, задавался такой же целью. В результате им была написана программа позволяющая использовать USBtiny в режиме совместимости с STK500/AVRISP. STK500/AVRISP является общепринятым программатором, поэтому он будет поддерживаться в любой среде программирования.
В общем это работает следующим образом:
Теперь я покажу как реализовать режим совместимости USBtiny с STK500/AVRISP. Следующее описание – перевод оригинальной статьи http://www.ladyada.net/make/usbtinyisp/stk500compat.html. Лично мной такой способ программирования не проверялся. Если уже кто-то работал при помощи такого эмулятора, обязательно поделитесь впечатлениями!
Если коротко, то режим совместимости реализуется так:
— устанавливается программа виртуального нуль-модема (com0com), которая создает два виртуальных COM порта, связанных между собой (при посылке сообщения одному оно появляется на другом). Один из виртуальных портов будет восприниматься средой программирования как STK500/AVRISP;
— устанавливается вторая программа USBtiny500 – которая преобразовывает сообщения среды программирования для USBtiny.
Теперь подробно:
1 Устанавливаем виртуальный нуль-модем (com0com)
Скачиваем программу или у меня:
com0com-2.2.2.0-i386-fre.zip (4660 Загрузок)
или с SourceForge.
Устанавливаем и запускаем.
Жмем Далее.
Важно! Снимаем CNCA0 <-> CNCB0 флажок!
Оставляем галочку «Launch the setup command prompt» (Запуск установки с командной строки), жмем финиш. Запустится программа в режиме командной строки.
Можно набрать в командной строке help для вывода списка команд.
Нам нужно установить два виртуальных порта, в первую очередь проверьте диспетчер устройств Start->Settings->Control Panel->System->Hardware (Пуск-> Настройка-> Панель управления-> Система-> Оборудование).
В закладке Ports смотрим список COM-портов. Запоминаем какие порта заняты. (в данном случае мы видим, что COM1 уже занят).
Набираем install PortName=COM2 PortName=COM6
-в первый PortName подставляем свободный (не занятый) COM-порт из диапазона COM1 — COM4 (в данном случае COM1 уже занят – ставим COM2);
-во второй PortName подставляем свободный (не занятый) COM-порт из диапазона COM5 – COM9 (в данном случае ставим COM6).
Запоминаем установленные порта – позже мы будем к ним обращаться.
После нажатия «Enter» появится сообщение в трее, о том, что найдено новое оборудование. Автоматически запустится установщик нового оборудования.
Выбераем «No not this time» (Нет, не сейчас), нажимаем кнопку Далее.
Выбираем «Установить автоматически» и нажимаем далее.
Возможно придется пройти эту процедуру дважды, для каждого COM-порта отдельно.
В Диспетчере устройств должны появится наши новые порта.
2 Устанавливаем среду программирования AVRStudio (или любую другую с поддержкой STK500).
— без особенностей.
3 Скачиваем USBtiny500.
Качаем или у меня:
usbtiny500_v0.2.zip (4723 Загрузки)
или со странички сайта источника.
Устанавливаем и запускаем USBtiny500.
Выбираем один из установленных нами виртуальных COM-портов (в данном случае COM6). Если выбрать несуществующий, то программа выдаст следующее предупреждение:
Далее программа попытается найти USBtiny. Если не найдет выдаст следующее сообщение:
Если оба COM-порта и USBtiny найдены – выведется сообщение о готовности к работе:
Далее, запускаем AVRStudio (или любую другую программу с поддержкой STK500). Открываем панель выбора программатора, выбираем AVRISP или STK500. В качестве порта на котором установлен программатор выбираем другой из установленных нами виртуальных COM-портов (в данном случае COM2).
Готово! Теперь Ваш микроконтроллер станет доступен для программирования через STK500/AVRISP.
Если возникают проблемы связи с микроконтроллером, проверьте питание (микроконтроллера), кварц (если микроконтроллер работает от внешнего задающего генератора), правильность подключения. Также при ошибках связи причиной может быть завышенная частота ISP – поменяете ее.
Смотрим еще:
Оригинальная статья на английском
Страничка эмулятора нуль-модема (com0com)
Статья по изготовлению USBtiny
Null Modem Emulator — гораздо приятней выглядит
и работать с ним попроще будет!
Спасибо за статью!
Все работает. Единственное что изменила в вышеуказанном алгоритме — заменила сом0сом на другую прогу по эмуляции виртуальных серийных портов (были некоторые трудности в предыдущем опыте работы на Windows 8.1). Заменила на Null Modem Emulator (http://www.eltima.com/products/virtual-null-modem/)
Да, можно. Как через юнипроф http://www.getchip.net/posts/027-uniprof-programmiruem-avr-cherez-lpt-port/
так и при помощи синапрог http://www.getchip.net/posts/096-sinaprog-2-s-podderzhkojj-programmatora-gromova-i-rusificirovannym-fuse-kalkulyatorom/
здравствуйте
собираю ваш программатор stk 500 за что вам большое спасибо но у сеня такая загвоздка
хочу записать eeprom фаил из proteus-а где симмулирую mega8.
можно ли eeprom c proteus записать через ваш программатор в реальный AVR?
Если да то как это организовать?
заранее благодарен за ответ.
На Win7 x64 не получается, драйвера без цифровой подписи не ставятся…
Жаль((
Не знаю. Вряд ли.
А для USBasp подойдет такая манипуляция??
Всем привет. А как хоть что нибудь прошить в AVR STUDIO. Сделал все как в описании. Пишет Ready как положено но ни хрена не видит. Говорит что-то
обгрейдить надо. Может еще что нужно? Заранее спасибо. Да а в сине читает
и пишет.
Через SinaProg все работает.
Здравствуйте,решил сделать из USBtiny STK-500.Все сделал как на сайте написано.USB500 пишет Ready.В диспетчере тоже все определилось.При попытке прочитать прошивку Mega8 в CodeVisionAVR выходит такая надпись-STK500 communication error,please check the following:
-the STK500 rover supply is on
-the programmer ture is correctly set in the setting/programmer menu
-the COM port is correctly set in the setting/programmer menu
-the Freguency is not too high(some AVR chips come from the factory with the CKSEL fuses set to use internal 1mhz oscillator)Все сделано как в статье.Кто поможет,в чем причина?
Боюсь, что нет.
Здраствуйте!Такой вопрос: а можно как то с помощью этой программы связать USBtiny и PonyProg?
Порты я настроил — с кодевизишен вроде как работает… а вот с пони не в какую((
@cudi
Нужно отключить все слои кроме слоя я проводниками и ничего стирать не нужно.
Я не знаю что делать, сказал печатку в .lay, Вашего программатора, открываю его, а на компонентах (мк, резисторах) ваши надписи R1, R2 и т.д. приходится их вручную стирать, что делать? как печатать? Если не стирать обозначение то они так и переведутся на текстолит((
Всё! Понял в чём причина. Когда проверял буферную микросхему, замкнул её вход разрешения работы, и, соответственно, вывод тиньки на землю. Тогда последне в панельке не было. А когда закончил проверку и воткнул тиньку на место, забыл убрать это соединение. А потом ещё думал, что это тинька еле-еле тепленькая. Хотя после отпайки той перемычки она собственно тоже не холодная. Сказывается, наверное, частота 12 Мгц на которой она работает.
В моей программе для контроллера используется УАРТ для вывода данных в терминалку. Когда использовал программатор на LPT порте с буферной микросхемой, то всё было замечательно — закончился процесс прошивки, программа стартанула и шлет в com порт данные. Теперь собрал программатор usbtiny, установил программу эмуляции com портов, выбрал com2 и com5. Моя плата с отлаживаемым контроллером подключена к com1. Но несмотря на то, что при установки программы эмуляции ком-портов я указывал com2 и com5, после окончания программирования даже com 1 получается какбы заблокирован. При соединении в любой теминалке (Terminal, COM Port Toolkit) — тишина. Оказалось тини2313, а значит и буфер (у меня другой, не такой как на первоисточнике) держит ресет на земле и не отпускает. Нет ли какой-нибудь прошивки с фиксацией такого бага?
И ещё. Кто может подсказать, как в АВРСтудио запрограммировать контроллер буквально, ну пару кликов мышкой. До этого я программировал через LPT, который уже упоминал. Но там на панели, правда, у меня была кнопка со ссылкой на бат-файл с avrdude. А с этим программатором нужно заходить в меню, нажимать Отмену, когда он предлагает обновить программное обеспечение программатора (естественно, это не надо), выбрать прошивку (хотя это нужно будет сделать только один раз). Вообщем много телодвижений. Правда можно сделать такой же батник и для этого программатора.
По скорости мне показалось, что мой LPT и этот приблизительно равны. С первым и с avrdude в консоли можно видеть прогрессбар с затраченным временем на каждую операцию. С этим пока не делал. Надо сделать аналогично, сравнить.
Протестил еще разок с перекинутыми вместо оригинальных 1,5 кОм на 100 Ом по Вашей рекомендации. Ну что могу сказать… AVRStudio работает на ура, Attiny2313 шьет на скорости 1,8 мГц, AtMega8535 на 460 кГц (от внутренних фьюзов зависит сильно, не менее, чем 4-х кратное частоте работы процессора), а вот CodeVisionAVR флэш читает, сигнатуры читает, а фьюзы ни в какую, выкидывает ошибку. При смене кварца на «правильный» 11,0592 вообще опознает «неизвестное устройство» на USB 🙂 Жаль нет исходника, поправить usart ошибку на правильные кварцы…может и кодевижн заработал бы.
Это вариант софтверного эмулятора STK500/AVRISP для USBtiny. Поэтому чего то особенного ожидать не приходиться. Кроме того автор долгое время не обновлял проект, возможно с новыми версиями программ и перестала работать эмуляция.
Попробовал…не понравилось, AVR-Studio видит, читает, пишет, вроде и скорость не плохая 115, а вот CodeVision все время ошибку выбивает, хотя флэш читает, сигнатуру, но на 56, фузы не читает. Юнипро вообще потерял программатор…чип не видит. Короче, разочарован. Может что-то не так? Да монтаж делал по оригинальной схеме с 1,5 кОм резисторами
Протестю скажу, хотя меня скорости особо не заботят, просто делаю сейчас HVProg от Der Hammer’a, чтобы иметь параллельный режим программирования, отпишусь…
Проапгрейдить фирмваре устройство физически не может — потому и ошибка.
Шьет нормально? Скорость какая?
Есть вопрос — все пошло, однако, при попытке апгрэйдить фирваре, которое предлагает AVR студио, дает шибку. Это нормально?
@GetChiper AVR910 от проттоса
Понятно.
@GetChiper
xxx/xxx — первое через JTAG-интерфейс, второе через ISP-интерфейс
Это про какой программатор?
Мега16 внутренний генератор на 8Мгц. CodeVision AVR. запись+чтение(жму PROGRAM ALL) 1мин 55 сек (((
Вот это скорость. Круто!
А что значат числа, через черту?
Можно Вас попросить еще выложить скорость для AVR910-совместимого программатора.
Для ucGoZilla:
С прошивкой JTAGICEmkII,
скорость порта JTAG/ISP 8Мгц
ATmega128 — чтение 1,2/1,4 сек, запись 1,6/2,2 сек.
Если говорить о проттосе который совместимый с AVR910, то я думаю, скорость будет одного порядка.
Если говорить о проттосе который ucGoZilla — то тут к гадалке не ходи:
— ARM Processor 32-bit RISC Architecture
— аппаратный USB 2.0 Full Speed (12 Mbits per Second)
🙂
А насчет скорости других программаторов самому интересно!
Присылайте скорость прошивки контроллеров типа меги8 или тини2313 на своих программаторах — будем сравнивать!
Просьба замерять скорость прошивки всей памяти (HEX-файл прошивки всей памяти можно получить предварительно прочитав микроконтроллер) и указывать в какой программе производилась прошивка.
а попробуй сравнить скорость с какими нибудь доступными тебе программаторами. особенно итересует проттос с модифицированной прошивкой, ну и если есть то с http://prottoss.com/projects/ucGoZilla/ucGoZilla.htm и со всякими на FT232RL