Делаем дешевый аналог STK500 из китайского USB ISP программатора

На aliexpress был куплен USB ISP программатор коих там - пруд-пруди.
Будем переделывать его в аналог атмеловского STK500, известный как AVRDOPER.


Стоит он в где-то 3-4$ (около 200 рублей на момент покупки), ищется на aliexpress / ebay по фразе USB ISP programmer. Если в хозяйстве нет программаторов для ATMEL - рекомендую брать там же USBASP программатор (только платка) по цене 2-3$ - она позволит не только программировать микропроцессоры ATMEGA, но и вот такие программаторы. Правда не из среды разработки, а только из AVRDUDE и подобных спец. программ.

Открываете у программатора колпачок, затем стягиваете алюминиевый корпус в сторону USB-разъема и все - получаете плату программатора. Смотрите внимательно - нам нужно, чтобы программатор был собран на ATMEGA88 (предположительно, версия платы > 3.0).

Если Вы там увидели простую ATMEGA8 - не страшно, люди ставили AVRDOPER и туда:
здесь, здесь и здесь. Ну либо сделать аналогично тому, что написано ниже, только для ATMEGA8.

Ну а если у Вас там - ATMEGA88 - продолжаем - переворачиваем плату, видим там два контакта для перемычки (с надписью UP). Закорачиваем их проводком:

После этого программатор перейдет в режим самопрограммирования. Программировать его можно любым другим программатором с аналогичным разъемом - например USBASP-ом.

Т.е. берем второй программатор, его втыкаем в компьютер, а хвостик с разъемом - в нашего подопытного.

Я программировал с помощью AVRDUDE + AVRDUDEPROG и китайского USBASP программатора. Выбираем в AVRDUDE USBASP и ATMEGA88. Считываем сигнатуру - если считалась - значит все сделали правильно и можно шить.

Если хотите сохранить текущую прошивку программатора, что я рекомендую (чтобы была возможность откатиться), то:
  1. считать текущие FUSE - биты и записать их значение
  2. считать прошивку в отдельный файл
  3. считать EEPROM в отдельный файл

Далее:

  1. полностью стереть микроконтроллер
  2. записать новые FUSE биты
    для ATMEGA88 FUSE LOW BYTE = 0xDF и FUSE HIGH BYTE = 0xDD, если FUSE не инвертированные - это означает включеные SUT1, SPIEN и BODLEVEL1
  3. скачать и прошить прошивку AVRDOPER
  4. EEPROM не трогать

Ну вот и все, теперь надо отпаять нашу перемычку, чтобы программатор вошел в штатный режим работы и установить драйверы AVRDOPER.

Теперь, когда Вы подключите новый программатор в USB, он найдет два устройства. Одно из которых будет виртуальный COM-порт. Находите его в диспетчере устройств, смотрите какой у него номер. Если номер > 4, то советую принудительно переопределить там же на какой-либо от 1 до 4 (т.к. в средах разработки COM-порты с бОльшими номерами не показываются).

Все - теперь что из CodeVision, что из AtmelStudio можно настроить, что программатор у Вас - STK500 на соответствующем COM-порту - и все - можно шить прямо из среды разработки.

По скорости мне показалось, что AVRDOPER медленнее прямого USBASP, зато удобней из-за работы непосредственно из среды, где код пишешь.


Что касается FUSE битов и других контроллеров ATMEL

В принципе, FUSE биты можно посмотреть в makefile от AVRDOPER (в том числе и для ATMEGA8). По-умолчанию AVRDOPER собран для ATMEGA8 и кварцев от 12 MHz с соотвествующим makefile-ом, однако в моем архиве он изменен под ATMEGA88 (однако hex для ATMEGA8 там присутствует, да и makefile можно всегда исправить).
Для нашего случая я перекомпилил AVRDOPER для ATMEGA88.

Перекомпилить просто в любом линуксе (я использовал Ubuntu server):
  1. ставим компиллер GCC с поддержкой ATMEL
    sudo apt-get install gcc-avr binutils-avr avr-libc
  2. ставим утилиту make sudo apt-get install make
  3. копируем в некую директорию разархивированный AVRDOPER
  4. изменяем там makefile, выставляя там DEVICE, F_CPU и FUSE_L и FUSE_H
  5. make usbasp
  6. получаем в той же директории нужный нам hex-файл прошивки


Этот же программатор можно переделать в нормальный USB ASP

Вот переделанные исходники, их можно скомпилить хоть под ATMEGA8 хоть под ATMEGA88 и авторская статья.

Для ATMEGA88 FUSE LOW BYTE = 0xFF и FUSE HIGH BYTE = 0xDF и прошивка.

09.08.2016, Protocoder
Михаил15.02.2018 23:51:04#ответить
Перерыл весь инет. Единственное доступное и полное описание. Спасибо!
АРТМ07.03.2019 18:02:18#ответить
Соглашусь с Михаилом
Владислав07.08.2019 15:22:07#ответить
Купил программатор "USBISP" version2.0, сделанный на чипе Atmega88. Определялся вообще как HID. Сделал всё по вашей инструкции. При установке драйвера указывает на ошибку код 10. После повторного включения программатора, жёлтый треугольник не горит, COM видится как активный, но COM порт в терминале и атмел студии не виден. FUSE биты как указано. Программатор вычитывает все конфиги и прошивку.
Protocoder09.08.2019 01:49:13#ответить
Во-первых, если драйвера установились с ошибкой - они вряд-ли будут нормально работать.
А во-вторых наши китайские друзья могли запросто что-то сделать со схематехникой этого модуля.

Чтобы я попробовал - если все-таки виртуальный COM видится и доступен - попробуйте переназначить его на COM1-4 - возможно тогда студия его увидит и сможет с ним работать.
Я не припомню, чтобы у меня было такое - все сразу-же подхватилось.
Игорь08.05.2020 13:03:13#ответить
Самая правильная статья из всех
david06.08.2021 14:40:51#ответить
Добрый день
а зачем нужен китайский usbisp собирать что трудно?
Protocoder06.08.2021 15:15:27#ответить
Можно и собрать, но тут без колхоза, на нормальной плате и в корпусе за копейки.
david07.08.2021 16:08:45#ответить
Михаил
Во первых забыл сказать спасибо за действительно статью для людей (а не для себя, как многие пишут).

В общем, чтобы не ждать из поднебеся свисток, позвонил в магазин и купил последний Atmega88PA U.

Плата у меня было собрано из под USBASP (которую ни как не смог заставить сработать с AVDDUDE PROG)

Я сам CVAVR-щик и ваша статья меня очень порадовало. Все так четко и конкретно сказано.

Сравнил схемы, разобрался в разнице между DIP и smd чипом Atmega 88.

Запрограммировал Mega88 c программатором stk200 через LPT, в CVAVR выставив фьюзы 0000 0010 0010 0000 с верху в низ( там нет SPEIN и последний нибл потребовал сделать все единицы иначе процесс программирования останавливался).

Взял чип ,положил в гнездо usbasp и в диспетчере тут же появился AVR DOPER, но не появился порт COM.
Потом начал обновить драйвер и после оканчания обновленя появился порт COM3. За одно исчезла AVR DOPER.
Ну соединил микросхему Atmega 8 выставил в CVAVR stk500 и com3.Нажал Programm All и плучил надпись "stk500 error entering programming mode".

Вас еще нужно благодарить за то ,что вы не ленитесь отвечать людям.

Я сам самостоятельно не хочу принять какие то меры не посоветовшись с вами о возможной причине.

Не было питание на программируемый мк( даже лупой не розглидеть)
Индикаторные диоды не вставил, мол пусть заработает и сделаю по новой.
В общем как говорил автор "колхоз".

Скорость низкая (ниже чем у stk200)и тут не знаю куда копать.

Братцы я в растерянности в оду и ту же плату поставил мега 8 с прошивкой usbasp с avrdude заработала высшим образом/.Поставил мега 88
с прошивкой автора и вот тебе рабочий stk500. неужели пришел конец моим мучениям?

И теперь я точно понял почему не работают мои китайские usbasp.
Стерлась прошивка с большой вероятностью.
Protocoder09.08.2021 20:50:29#ответить
Рад, что статья оказалась полезной.

Со скоростью, к сожалению, ничего не поделать - особенности реализации.
Максим02.04.2024 10:47:44#ответить
Добрый день!

Я столкнулся с проблемой, когда мои USB-программаторы не определяются в системе. Я использовал готовые прошивки для USBASP_STK500_ATMEGA88 и USBASP-MEGA8-12M (фьюзы были выставлены правильно), но оба программатора не определяются (Неизвестное USB-устройство (недопустимый дескриптор конфигурации)). Однако, прошивки для USBASP устанавливаются и работают исправно. Но хочется поддержки stk500.

Я хотел бы узнать, сталкивался ли кто-то с подобной проблемой и как ее можно решить? Я использую платы MX-USBISP-v3.01 2013-11-07 (mega8) и MX-USBISP-v5.00 2018-03-18 (mega88). Буду очень благодарен за любую помощь.
Protocoder06.08.2024 14:58:44#ответить
Проблема в том, что нужно подписать драйвера.
Искать в гугле "Как подписать драйвер win10" и т.д. Также можно пискать уже готове подписанные драйвера (но не факт, что это не вирусня, а из драйвера можно делать вообще все).

Пользователь с ником "Чел" предлагал вот такую ссылку (не проверял):
https://github.com/protaskin/LowCDC-Win10x64
Чел10.08.2024 23:35:53#ответить
Мне не удалось найти драйвер под win10 (никакой). По ссылке что я приводил автор предлагает на основе некоторого софта сделать самостоятельно драйвер под win10 на основе существующего под win7.
Чел14.07.2024 23:50:50#ответить
На амперкоте купил usb isp (Программатор USB ISP v.2 в алюминиевом корпусе на их сайте) . Оказался версии v5.00. В аврдуде выбрал mega88p, фьюзы из статьи и прошивка соответствующая. Прошилось, но драйвера на win7 встали с предупреждением,и девайс определяется, но не работает (синий СИД не горит). Винда правда сразу сказала мол нет цифровой подписи у драйвера. Загрузил винду с отключением проверки подписи драйверов, и девайс определился! В студии 6.2 работает, правда как-то капризно, пока что не понял чего не хватает, но МК считывается полностью (прошивка. еепром. фьюзы и т.д.), правда заливать прошивку еще не пробовал. Спасибо автору статьи!
Написать комментарий