Stk500 программатор своими руками

Параллельный программатор для AVR — аналог STK500

Версия 2, исправленная и доработанная

Практически все AVR контроллеры можно запрограммировать в двух режимах – высоковольтном (параллельном) и низковольтном (ISP). Наиболее часто используется низковольтное программирование. В большинстве случаев для зашивки кодов программы не требуется даже извлекать контроллер из платы и устанавливать его в панель программатора. Аппаратная реализация ISP программаторов очень простая, с описанием одного из вариантов такого программатора – аналога фирменного AVRISP – можно ознакомиться на страничке Программатор для AVR — аналог AVRISP моего сайта.

К сожалению, изначально фирма Atmel основным режимом считала режим параллельного высоковольтного программирования. Поэтому в режиме ISP некоторые функции, в частности отдельные FUSE биты, недоступны для программирования. Если быть точным, то запрограммировать их можно, но только один раз. После этого контроллер перестанет определяться программатором и перепрограммировать его в режиме ISP будет невозможно.

Наиболее актуальна эта проблема для микроконтроллеров в восьмивыводном корпусе, в которых вывод сброса RESET можно запрограммировать на использование в качестве дополнительного порта ввода-вывода. Это делается установкой FUSE бита RSTDISBL. Но после этого контроллер невозможно будет перепрограммировать в режиме ISP. Возможны и другие ситуации, когда не обойтись без высоковольтного параллельного программатора.

Предлагаемый программатор – это упрощенный и модернизированный аналог выпускаемого и поддерживаемого компанией Atmel стартового набора разработчика STK500. Он позволяет программировать микроконтроллеры как в режиме ISP, так и в параллельном режиме. Поддерживаются все, без исключения, микроконтроллеры 8 бит AVR. Управление осуществляется через COM порт персонального компьютера. Возможно подключение и к USB через конвертер, например на FT232BM, описание которого можно найти страничке Переходник USB COM моего сайта. Управляющая программа является составной частью фирменной интегрированной отладочной среды разработки AVR Studio от Atmel. Ее последняя версия всегда свободно доступна на сайте Atmel по адресу http://www.atmel.com.

Принципиальная схема основной платы программатора показана на рис. 1. Слишком сложно? Но ведь любой инструмент может быть любительским или профессиональным. Если нужно раз в жизни запрограммировать один единственный контроллер, конечно, собирать такую относительно сложную схему нецелесообразно. А вот для программиста – разработчика устройств на основе AVR, такой программатор может сберечь массу сил, многократно окупив потраченные на его изготовление средства и время. Если вам нужен профессиональный параллельный высоковольтный программатор AVR, который можно собрать своими руками, то эта конструкция именно то, что вам нужно.

Собственно программатор выполнен на DD3 типа ATmega8535. Светодиоды HL1 зеленого цвета и HL2 красного индицируют режим готовности и программирования соответственно. DD4 предназначен для записи новых версий прошивок в основной контроллер, а также для управления напряжением питания программируемого контроллера. Для повышения нагрузочной способности выводы PD3…PD5 соединены параллельно.

В схеме программатора предусмотрены два переключателя с фиксацией – SA1 и SA2. SA1 в левом по схеме положении включает в цепь питания диоды VD4 и VD5. При этом напряжение питания программатора и, соответственно, программируемого контроллера снижается примерно до 3,6 В. Как показала практика, иногда это бывает необходимо, т.к. некоторые контроллеры при напряжении 5 В в параллельном режиме программируются некорректно.

Если переключатель SA2 установить в левое по схеме положение, после программирования на выводе сброса будет установлен единичный уровень, т.е. сразу начинается работа запрограммированной в контроллер программы. Это хорошо при отладке и внутрисхемном программировании, но нежелательно при программировании в панельке программатора. Ведь неконтролируемая работа программы может привести к непредсказуемым последствиям, например, испортить содержимое EEPROM только что корректно запрограммированного контроллера. Для исключения этого SA2 следует установить в правое по схеме положение. В этом случае на выводе RESET после программирования будет нулевой уровень, а питание контроллера отключится.

Элементы микросхемы DD6 блокируют подачу на программируемый контроллер тактовой частоты при выключении его питания. На транзисторах VT1…VT3 собран коммутатор напряжения сброса 0 – 5 – 12 В. Включение напряжения 12 В при программировании индицирует свечение светодиода HL4 красного цвета. VT4 — это ключ, коммутирующий питание программируемого контроллера. Как показала практика, при программировании потребляемый ток может достигать 100 мА, поэтому в качестве VT4 нужно использовать транзистор с допустимым током 0,5…1 А. DD5 – это преобразователь напряжения 5 –>12 В.

Читайте также:  Жилой модуль для грузовиков своими руками

Контроллеры в DIP корпусах можно программировать в параллельном режиме непосредственно в программаторе на плате коммутации, которая подключается к основной плате параллельно разъему X3. В режиме ISP возможно только внутрисхемное программирование, хотя, при необходимости, можно и для этого режима изготовить плату коммутации и подключить ее к разъему X3. Ее схема аналогична схеме платы коммутации упоминавшегося выше программатора AVRISP.

Параллельное программирование новой серии AVR ATtiny26/261/461/861 производится с помощью дополнительного переходника — модуля расширения.

Схема платы коммутации, чертежи печатных плат, а также особенности наладки и работы с программатором рассмотрены в подробном описании.

Источник

Делаем дешевый аналог 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 и прошивка.

Источник

Stk500 программатор своими руками

STK500: Что же он умеет и как с ним работать.

Автор: moLCHec
Опубликовано 25.03.2008

Данная статья поможет при работе с фирменным STK500 и его клонами, а также раскроет тем кто еще не работал с данным программатором его функции.
STK500 это отладочный модуль с интегрированным программатором, предназначенный для разработки и отладки устройств на МК AVR. STK500 имеет ряд преимуществ выгодно отличающих его от других программаторов:
— возможность высоковольтного (HV) программирования;
— внутрисхемное программирование (ISP);
— возможность установки частоты ISP и HV интерфейса;
— возможность регулировки питающего VTG и опорного AREF напряжения;
— возможность регулировки ISP уровней;
— возможность обновления прошивки основного управляющего контроллера, благодаря чему программатор поддерживает все новинки от Атмел.
Недостатками STK500 на мой взгляд являются:
— COM интерфейс, отсутствующий на современных РС;
— большие габариты;
— отсутствие панелей с нулевым усилием сводит на нет программирование микросхем непосредственно в программаторе т.к. что бы достать микросхему из панели необходимо приложить немалое усилие, а в случае применения отвертки и пр. инструмента велика опасность повредить джампера и пр.
— наличие дополнительного источника питания, что еще больше усложняет применение программатора в «полевых» условиях и захламляет без того насыщенное рабочее место.

Для работы с программатором необходимо установить программу AVR Studio, являющуюся бесплатным средством разработки и отладки от ATMEL.

После установки запустите программу AVR Studio (рис. 1).
Для ручной установки необходимо нажать кнопку (рис. 2) установить при необходимости порт на котором находится программатор и нажать кнопку «Connect:».
Для автоматического определения программатора необходимо нажать кнопку .

Вкладка Main изображена на рис. 3.
Прежде всего, необходимо выбрать кристалл в выпадающем списке «Device and Signature Bytes» и установить вид программирования в выпадающем списке «Programming Mode and Target Settings»:
ISP mode — внутрисхемное программирование по SPI
HP/HVSP mode — программирование при повышенном напряжении
Если было выбрано внутрисхемное программирование ISP то представляется возможность установить частоту интерфейса SPI при программировании для этого необходимо нажать кнопку «Settings» после чего появится окно рис. 4.

Желаемая частота выбирается в выпадающем списке «ISP Freq:», после чего необходимо нажать кнопку «Write».
Кнопка «Erase Device» вкладки Main стирает выбранный кристалл.
Кнопка «Read Signature» чтение байтов сигнатуры кристалла.

Вкладка Program изображена на рис. 5:

Группа Device «Erase device before programming» — стирание кристалла перед программированием
«Verify device after programming» — верификация(проверка данных) после программирования

Группа Flash
Кнопка выбор HEX файла прошивки
Кнопка «Program» — программирование выбранного HEX файла данных Flash
Кнопка «Verify» — верификация(сравнение с HEX файлом) данных flash
Кнопка «Read» — чтение данных flash

Группа EEPROM
Кнопка выбор HEX файла данных EEPROM
Кнопка «Program» — программирование выбранного HEX файла данных EEPROM
Кнопка «Verify» — верификация(сравнение с HEX файлом) данных EEPROM
Кнопка «Read» — чтение данных EEPROM

Группа ELF Production File Format
Кнопка выбор ELF файла
Кнопка «Program» — программирование выбранного ELF файла
Кнопка «Save» — сохранение ELF файла

Вкладка Fuses изображена на рис. 6:

«Auto read» — автоматическое чтение Fuse байтов
«Smart warnings» — предупреждения при ошибке
«Verify after programming» — верификация после программирования
Кнопка «Program» — программирование Fuse байтов
Кнопка «Verify» — верификация Fuse байтов
Кнопка «Read» — чтение Fuse байтов

Вкладка функционально идентична вкладке Fuses.

Вкладка калибровки внутреннего генератора.

Вкладка HW Settings изображена на рис. 7:

Функции группы Voltages позволяют устанавливать напряжение питания МК VTG и опорное напряжение AREF.

Группа Clock Generator позволяет установить частоту на выводе SWCLK разъема HV программирования. Определяет частоту при программировании повышенном напряжением. Скроллингом устанавливается необходимая частота после чего нажимаем кнопку «Write».
Кнопка «Read» предназначена для чтения текущей частоты.

Группа Firmware Upgrade
Кнопка «Upgrade» — автоматическое обновление.

Информация о версии программатора.

Данная вкладка предназначена автоматического программирования установленных параметров предыдущих вкладок. Удобно если необходимо прошить несколько процессоров подряд с одинаковыми параметрами. Задаем все что нужно в соответствующих вкладках, устанавливаем галочки и нажи-маем Start.

Главное окно программы изображено на рис. 9:

Для отображения окна программирования необходимо нажать кнопку , окно программирования изображено на рис. 10.

Выбираем программатор STK-500/AVRISP и COM порт на котором установлен программатор рис. 10 нажимаем кнопку «ISP Options. » рис. 11

Нажимаем кнопку «Browse. » и указываем путь к файлу «Stk500.exe», по умолчанию программа AVR Studio устанавливается на диск C, тогда файл находится по адресу C:Program FilesAtmelAVR ToolsSTK500Stk500.exe

Главное окно программы представлено на рис. 12:

В меню «Settings» выбираем вкладку «Programmer» (рис. 13)
В выпадающем списке «AVR Chip Programmer Type» выбираем «Atmel STK500/AVRISP», в выпадающем списке «Communication Port» выбираем порт на который установлен программатор (рис. 13)

Обновление прошивки программатора

Данный программатор обеспечивает автоматическое обновление прошивки.
Версия прошивки должна соответствовать установленной на РС версии AVR Studio.
Для входа в режим программирования необходимо при включении питания удерживать кнопку Program, после включения программатора через несколько секунд кнопку можно отпустить.
Обновление прошивки можно осуществлять следующими средствами:

1. утилитой AVR Prog находящейся во вкладке Tools Рис.14

В появившемся окне необходимо выполнить установки в соответствии с рис. 15:

Файл прошивки STK500.ebn находится в директории в которую установлена AVR Studio в папке STK500, по умолчанию C:Program FilesAtmelAVR ToolsSTK500

2. Утилитой Upgrade, находящейся в директории в которую установлена AVR Studio в папке STK500, по умолчанию C:Program FilesAtmelAVR ToolsSTK500.
При запуске утилиты Upgrade она автоматически ищет программатор в диапазоне портов COM1-COM6 и если программатор при включении вошел в режим программирования утилита уведомит о том, что готова к обновлению рис. 16

Для запуска процесса обновления необходимо нажать кнопку «Start Upgrade», после чего запустится процесс обновления. О завершении обнов-ления утилита известит соответствующим уведомлением.
Если по каким либо причинам обновление прошивки было прервано, необходимо повторить процедуру обновления.
Если по каким либо причинам обновление прошивки утилитой Upgrade невозможно воспользуйтесь утилитой AVR Prog п.1.

Таблица 1. Обозначение и функции выводов, используемых при программировании в параллельном режиме

Таблица 2. Функции сигналов XA0 и XA1.

Подключение МК при HV программировании

ATmega8515, ATmega8535, ATmega16, ATmega161, ATmega162, ATmega163, ATmega164P, ATmega165, ATmega165P, ATmega1650,ATmega169, ATmega169P, ATmega1690, ATmega32, ATmega324P, ATmega325, ATmega325P, ATmega3250, AT-mega3250P, ATmega329,ATmega329P, ATmega3290, ATmega3290P, ATmega323, ATmega64, ATmega640, ATmega644P, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega103, ATmega128, ATmega1280, ATmega1281, ATmega1284P, AT90CAN32, AT90CAN64, AT90CAN128, ATmega2560, ATmega2561, AT90USB162, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287

AT90S2333, AT90S4433, ATmega48(P), ATmega8, ATmega88(P), ATmega168(P), ATmega328(P)

SCI-тактовый вход, SDO(PB2)-DATA0, SII(PB1)-DATA1, SDI(PB0)-DATA2 ATtiny11, ATtiny12, ATtiny13, ATtiny22, ATtiny25, ATtiny45, ATtiny85, ATtiny15

SCI-тактовый вход, SDO(PA4)-DATA0, SII(PA5)-DATA1, SDI(PA6)-DATA2 ATtiny24, ATtiny44, ATtiny84

XA1 подключается на PB2, BS2 не подключается
BS1 подключается на PB3, PAGEL не подключается
ATtiny26, ATtiny261, ATtiny461, ATtiny861

XA1 подключается на PB2, BS2 не подключается
BS1 подключается на PB3, PAGEL не подключается
ATtiny2313

Кстати, если программатора у вас нет, а собирать лень, то вот тут можно прикупить вполне уже собранный.

Источник

Читайте также:  Как сделать трубогиб своими руками схема
Оцените статью