058-Делаем STK500/AVRISP из USB-программатора USBtiny.

Автор: | 22.10.2010

Как Вы помните, ранее нами была перепрошита плата преобразователя 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 v2.2.2.0 - Программа эмуляции нуль-модема
или с SourceForge.

Устанавливаем и запускаем.

Установка com0com
Жмем Далее.

 

делаем выбор
Важно! Снимаем 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» появится сообщение в трее, о том, что найдено новое оборудование. Автоматически запустится установщик нового оборудования.

 

Установка 500
Выбераем «No not this time» (Нет, не сейчас), нажимаем кнопку Далее.

 

Установка 500-2
Выбираем «Установить автоматически» и нажимаем далее.

 

сообщение в трее 2
Возможно придется пройти эту процедуру дважды, для каждого COM-порта отдельно.

 

Новые устройсва в диспетчере
В Диспетчере устройств должны появится наши новые порта.

 

2 Устанавливаем среду программирования AVRStudio (или любую другую с поддержкой STK500).
— без особенностей.

3 Скачиваем USBtiny500.
Качаем или у меня:
usbtiny500 v0.2. - программа эмуляции STK500/AVRISP на USBtiny
или со странички сайта источника.

Устанавливаем и запускаем USBtiny500.
Выбираем один из установленных нами виртуальных COM-портов (в данном случае COM6). Если выбрать несуществующий, то программа выдаст следующее предупреждение:

не найден порт

невозможно создать соединение

Далее программа попытается найти USBtiny. Если не найдет выдаст следующее сообщение:не найден USBtiny

не найден USBtiny

Если оба COM-порта и USBtiny найдены – выведется сообщение о готовности к работе:

Готов

Далее, запускаем AVRStudio (или любую другую программу с поддержкой STK500). Открываем панель выбора программатора, выбираем AVRISP или STK500. В качестве порта на котором установлен программатор выбираем другой из установленных нами виртуальных COM-портов (в данном случае COM2).

Выбор программатора

Готово! Теперь Ваш микроконтроллер станет доступен для программирования через STK500/AVRISP.

Если возникают проблемы связи с микроконтроллером, проверьте питание (микроконтроллера), кварц (если микроконтроллер работает от внешнего задающего генератора), правильность подключения. Также при ошибках связи причиной может быть завышенная частота ISP – поменяете ее.


Файлы статьи:
com0com v2.2.2.0 - Программа эмуляции нуль-модема
usbtiny500 v0.2. - программа эмуляции STK500/AVRISP на USBtiny

Смотрим еще:
Оригинальная статья на английском
Страничка эмулятора нуль-модема (com0com)
Статья по изготовлению USBtiny

 

(Visited 3 928 times, 9 visits today)

058-Делаем STK500/AVRISP из USB-программатора USBtiny.: 32 комментария

  1. neon-f

    а попробуй сравнить скорость с какими нибудь доступными тебе программаторами. особенно итересует проттос с модифицированной прошивкой, ну и если есть то с http://prottoss.com/projects/ucGoZilla/ucGoZilla.htm и со всякими на FT232RL

  2. GetChiper Автор записи

    Если говорить о проттосе который совместимый с AVR910, то я думаю, скорость будет одного порядка.
    Если говорить о проттосе который ucGoZilla — то тут к гадалке не ходи:
    — ARM Processor 32-bit RISC Architecture
    — аппаратный USB 2.0 Full Speed (12 Mbits per Second)
    🙂

    А насчет скорости других программаторов самому интересно!
    Присылайте скорость прошивки контроллеров типа меги8 или тини2313 на своих программаторах — будем сравнивать!

    Просьба замерять скорость прошивки всей памяти (HEX-файл прошивки всей памяти можно получить предварительно прочитав микроконтроллер) и указывать в какой программе производилась прошивка.

  3. prottoss

    Для ucGoZilla:
    С прошивкой JTAGICEmkII,
    скорость порта JTAG/ISP 8Мгц
    ATmega128 — чтение 1,2/1,4 сек, запись 1,6/2,2 сек.

  4. GetChiper Автор записи

    Вот это скорость. Круто!
    А что значат числа, через черту?

    Можно Вас попросить еще выложить скорость для AVR910-совместимого программатора.

  5. neon-f

    Мега16 внутренний генератор на 8Мгц. CodeVision AVR. запись+чтение(жму PROGRAM ALL) 1мин 55 сек (((

  6. GetChiper Автор записи

    Это про какой программатор?

  7. prottoss

    @GetChiper
    xxx/xxx — первое через JTAG-интерфейс, второе через ISP-интерфейс

  8. GetChiper Автор записи

    Понятно.

  9. don

    Есть вопрос — все пошло, однако, при попытке апгрэйдить фирваре, которое предлагает AVR студио, дает шибку. Это нормально?

  10. GetChiper Автор записи

    Проапгрейдить фирмваре устройство физически не может — потому и ошибка.

    Шьет нормально? Скорость какая?

  11. don

    Протестю скажу, хотя меня скорости особо не заботят, просто делаю сейчас HVProg от Der Hammer’a, чтобы иметь параллельный режим программирования, отпишусь…

  12. don

    Попробовал…не понравилось, AVR-Studio видит, читает, пишет, вроде и скорость не плохая 115, а вот CodeVision все время ошибку выбивает, хотя флэш читает, сигнатуру, но на 56, фузы не читает. Юнипро вообще потерял программатор…чип не видит. Короче, разочарован. Может что-то не так? Да монтаж делал по оригинальной схеме с 1,5 кОм резисторами

  13. GetChiper Автор записи

    Это вариант софтверного эмулятора STK500/AVRISP для USBtiny. Поэтому чего то особенного ожидать не приходиться. Кроме того автор долгое время не обновлял проект, возможно с новыми версиями программ и перестала работать эмуляция.

  14. don

    Протестил еще разок с перекинутыми вместо оригинальных 1,5 кОм на 100 Ом по Вашей рекомендации. Ну что могу сказать… AVRStudio работает на ура, Attiny2313 шьет на скорости 1,8 мГц, AtMega8535 на 460 кГц (от внутренних фьюзов зависит сильно, не менее, чем 4-х кратное частоте работы процессора), а вот CodeVisionAVR флэш читает, сигнатуры читает, а фьюзы ни в какую, выкидывает ошибку. При смене кварца на «правильный» 11,0592 вообще опознает «неизвестное устройство» на USB 🙂 Жаль нет исходника, поправить usart ошибку на правильные кварцы…может и кодевижн заработал бы.

  15. Flint

    В моей программе для контроллера используется УАРТ для вывода данных в терминалку. Когда использовал программатор на LPT порте с буферной микросхемой, то всё было замечательно — закончился процесс прошивки, программа стартанула и шлет в com порт данные. Теперь собрал программатор usbtiny, установил программу эмуляции com портов, выбрал com2 и com5. Моя плата с отлаживаемым контроллером подключена к com1. Но несмотря на то, что при установки программы эмуляции ком-портов я указывал com2 и com5, после окончания программирования даже com 1 получается какбы заблокирован. При соединении в любой теминалке (Terminal, COM Port Toolkit) — тишина. Оказалось тини2313, а значит и буфер (у меня другой, не такой как на первоисточнике) держит ресет на земле и не отпускает. Нет ли какой-нибудь прошивки с фиксацией такого бага?
    И ещё. Кто может подсказать, как в АВРСтудио запрограммировать контроллер буквально, ну пару кликов мышкой. До этого я программировал через LPT, который уже упоминал. Но там на панели, правда, у меня была кнопка со ссылкой на бат-файл с avrdude. А с этим программатором нужно заходить в меню, нажимать Отмену, когда он предлагает обновить программное обеспечение программатора (естественно, это не надо), выбрать прошивку (хотя это нужно будет сделать только один раз). Вообщем много телодвижений. Правда можно сделать такой же батник и для этого программатора.
    По скорости мне показалось, что мой LPT и этот приблизительно равны. С первым и с avrdude в консоли можно видеть прогрессбар с затраченным временем на каждую операцию. С этим пока не делал. Надо сделать аналогично, сравнить.

  16. Flint

    Всё! Понял в чём причина. Когда проверял буферную микросхему, замкнул её вход разрешения работы, и, соответственно, вывод тиньки на землю. Тогда последне в панельке не было. А когда закончил проверку и воткнул тиньку на место, забыл убрать это соединение. А потом ещё думал, что это тинька еле-еле тепленькая. Хотя после отпайки той перемычки она собственно тоже не холодная. Сказывается, наверное, частота 12 Мгц на которой она работает.

  17. cudi

    Я не знаю что делать, сказал печатку в .lay, Вашего программатора, открываю его, а на компонентах (мк, резисторах) ваши надписи R1, R2 и т.д. приходится их вручную стирать, что делать? как печатать? Если не стирать обозначение то они так и переведутся на текстолит((

  18. Lighter

    @cudi
    Нужно отключить все слои кроме слоя я проводниками и ничего стирать не нужно.

  19. MEGA

    Здраствуйте!Такой вопрос: а можно как то с помощью этой программы связать USBtiny и PonyProg?
    Порты я настроил — с кодевизишен вроде как работает… а вот с пони не в какую((

  20. GetChiper Автор записи

    Боюсь, что нет.

  21. Viatka61

    Здравствуйте,решил сделать из 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)Все сделано как в статье.Кто поможет,в чем причина?

  22. Viatka61

    Через SinaProg все работает.

  23. konstr003

    Всем привет. А как хоть что нибудь прошить в AVR STUDIO. Сделал все как в описании. Пишет Ready как положено но ни хрена не видит. Говорит что-то
    обгрейдить надо. Может еще что нужно? Заранее спасибо. Да а в сине читает
    и пишет.

  24. pino24

    А для USBasp подойдет такая манипуляция??

  25. GetChiper Автор записи

    Не знаю. Вряд ли.

  26. streetboy163

    На Win7 x64 не получается, драйвера без цифровой подписи не ставятся…

  27. begun

    здравствуйте
    собираю ваш программатор stk 500 за что вам большое спасибо но у сеня такая загвоздка
    хочу записать eeprom фаил из proteus-а где симмулирую mega8.
    можно ли eeprom c proteus записать через ваш программатор в реальный AVR?
    Если да то как это организовать?
    заранее благодарен за ответ.

  28. Elen-Reynolds

    Спасибо за статью!
    Все работает. Единственное что изменила в вышеуказанном алгоритме — заменила сом0сом на другую прогу по эмуляции виртуальных серийных портов (были некоторые трудности в предыдущем опыте работы на Windows 8.1). Заменила на Null Modem Emulator (http://www.eltima.com/products/virtual-null-modem/)

  29. admin Автор записи

    Null Modem Emulator — гораздо приятней выглядит
    и работать с ним попроще будет!

Добавить комментарий