Делаем дешевый аналог STK500 из китайского USB ISP программатора
09.08.2016 18:51
13Будем переделывать его в аналог атмеловского 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. Считываем сигнатуру - если считалась - значит все сделали правильно и можно шить.
Если хотите сохранить текущую прошивку программатора, что я рекомендую (чтобы была возможность откатиться), то:
- считать текущие FUSE - биты и записать их значение
- считать прошивку в отдельный файл
- считать EEPROM в отдельный файл
Далее:
- полностью стереть микроконтроллер
- записать новые FUSE биты
для ATMEGA88 FUSE LOW BYTE = 0xDF и FUSE HIGH BYTE = 0xDD, если FUSE не инвертированные - это означает включеные SUT1, SPIEN и BODLEVEL1 - скачать и прошить прошивку AVRDOPER
- 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):
- ставим компиллер GCC с поддержкой ATMEL
sudo apt-get install gcc-avr binutils-avr avr-libc - ставим утилиту make sudo apt-get install make
- копируем в некую директорию разархивированный AVRDOPER
- изменяем там makefile, выставляя там DEVICE, F_CPU и FUSE_L и FUSE_H
- make usbasp
- получаем в той же директории нужный нам hex-файл прошивки
Этот же программатор можно переделать в нормальный USB ASP
Вот переделанные исходники, их можно скомпилить хоть под ATMEGA8 хоть под ATMEGA88 и авторская статья.Для ATMEGA88 FUSE LOW BYTE = 0xFF и FUSE HIGH BYTE = 0xDF и прошивка.
09.08.2016, Protocoder
А во-вторых наши китайские друзья могли запросто что-то сделать со схематехникой этого модуля.
Чтобы я попробовал - если все-таки виртуальный COM видится и доступен - попробуйте переназначить его на COM1-4 - возможно тогда студия его увидит и сможет с ним работать.
Я не припомню, чтобы у меня было такое - все сразу-же подхватилось.
а зачем нужен китайский usbisp собирать что трудно?
Во первых забыл сказать спасибо за действительно статью для людей (а не для себя, как многие пишут).
В общем, чтобы не ждать из поднебеся свисток, позвонил в магазин и купил последний 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.
Стерлась прошивка с большой вероятностью.
Со скоростью, к сожалению, ничего не поделать - особенности реализации.
Я столкнулся с проблемой, когда мои 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). Буду очень благодарен за любую помощь.
Искать в гугле "Как подписать драйвер win10" и т.д. Также можно пискать уже готове подписанные драйвера (но не факт, что это не вирусня, а из драйвера можно делать вообще все).
Пользователь с ником "Чел" предлагал вот такую ссылку (не проверял):
https://github.com/protaskin/LowCDC-Win10x64