Делаем дешевый аналог 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#ответить
Перерыл весь инет. Единственное доступное и полное описание. Спасибо!
Написать комментарий