Наш магазин на eBay Наш канал в telegram

Шлюз RH-0010 в качестве параллельного USB-программатора для AVR и фьюз-бит доктора

Шлюз RH-0010 можно использовать для программирования микроконтроллеров AVR в режиме параллельного высоковольтного программирования. Этот режим интересен тем, что позволяет перепрограммировать фьюзы микроконтроллера, недоступные при последовательном программировании, например, фьюз SPI. Таким образом, RH-0010 можно использовать в качестве fuse-bit доктора (актуально для тех, кто заказывает микроконтроллеры с Aliexpress, поскольку контроллеры оттуда часто приходят не с дефолтными фьюзами и иногда их невозможно перепрошить последовательными программаторами). Ну и, кроме всего прочего, параллельный режим обеспечивает более высокую скорость программирования. В этой статье я расскажу как программировать микроконтроллеры AVR в режиме параллельного высоковольтного программирования при помощи шлюза RH-0010.

Аппаратная часть: USB-to-UART преобразователь + UART-to-I2C/SPI/1W шлюз RH-0010 (нам понадобится базовый модуль, модуль питания и модуль AVR). Собираем всё это вместе как на картинке ниже.

USB-программатор микроконтроллеров AVR в параллельном высоковольтном режиме

Джамперы на базовом модуле можно установить как угодно, но поскольку нам всё равно понадобится внешнее питание, то лучше установить JP1, JP2 в положение «B» (чтобы сам шлюз также питался внешним питанием, а не через USB-to-UART). В качестве внешнего питания подойдёт любая телефонная зарядка на +5 Вольт с разъёмом Type-C. Модуль питания должен быть настроен так, чтобы выдавать +12 Вольт на контакте +12 разъёма XT4.2.

Помимо аппаратной части нам понадобится программа. Ниже показано главное окно программы:

Главное окно программы для параллельного высоковольтного программирования контроллеров AVR

В самом верху программы располагается строка меню. Через меню можно загрузить или сохранить в файл данные flash- или EEPROM-памяти (в форматах bin, hex или eep), сохранить в файл данные лога (в формате txt) или выбрать чип для работы. Кроме того, через пункт меню Edit->Lock & Fuses… открывается форма для чтения / записи Lock- и Fuse-битов микроконтроллера.

Под строкой меню, слева располагается выпадающий список для выбора com-порта и кнопки для подключения к выбранному порту или отключения от него (при подключении к USB-порту ПК наш программатор будет определяться в системе как виртуальный com-порт).

Чуть правее располагается кнопка Autosearch Chip, при нажатии на которую программатор попытается автоматически определить подключенный к нему чип, прочитав байты сигнатуры. Стоит учесть, что процедура автоматического определения чипа не всегда возможна, поскольку некоторые контроллеры в залоченном состоянии байты сигнатуры не выдают. Для работы с такими контроллерами придётся выбрать их через верхнее меню.

Правее кнопки автоматического определения чипа расположены текстовые поля, содержащие название (Chip name) и байты сигнатуры (ID bytes) выбранного чипа.

Чуть ниже расположен трек-бар Delays value, предназначенный для выбора величины используемых в программе задержек. Дело в том, что нельзя передавать в шлюз новые команды, не дождавшись выполнения старых. Время, необходимое микроконтроллеру на выполнение различных команд и операций программирования (запись / чтение / стирание…), прописано в даташитах. Для обеспечения достаточного времени выполнения операций в программе используются задержки между передачами различных команд. Чаще всего менять значение по-умолчанию не требуется, но в случае возникновения сбоев можно попробовать увеличить величину задержек.

Ещё правее располагаются основные функциональные кнопки для работы с контроллером, позволяющие читать (Read Program / Read Data), записывать (Write Program / Write Data) или проверять (Verify Program / Verify Data) данные программы или памяти EEPROM (при проверке данные в программе сравниваются с данными в чипе, при обнаружении различий адрес первого несоответствия выводится в лог). Кнопка Read Calibration позволяет прочитать записанные в чипе байты калибровки (результат выводится в лог), а кнопка Chip Erase стереть записанные во flash и EEPROM данные (при этом также происходит сброс Lock-битов).

Обратите внимание, что перед записью программы выполняется команда Chip Erase (так положено по даташиту), которая стирает данные не только во флеш, но и в EEPROM (если не запрограммирован специальный фьюз EESAVE). Так что если вы перезаписываете программу и у вас не запрограммирован фьюз EESAVE, то данные в EEPROM пропадут! Избежать этого можно либо предварительно считав данные EEPROM, а потом перезаписав их заново, либо запрограммировав фьюз-бит EESAVE перед программированием флеш.

Если в меню Help выбрать пункт How to connect…, то появится всплывающее окно со схемой подключения шлюза к микроконтроллеру. В левой части этого окна показаны контакты модуля AVR шлюза, а в правой части — соответствующие контакты микроконтроллера, к которым их нужно подключить.

Работа с фьюзами и lock-битами происходит через отдельную форму, которую (как уже упоминалось выше) можно вызвать через пункт меню Edit->Lock & Fuses…

Вот в общем-то и всё. Ниже выкладываю программу с исходниками, а также список поддерживаемых этой программой чипов:

Программа Исходники Описание (поддерживаемые чипы, изменения в коде и т.д.) Поддерживаемые ОС
AVR Parallel Programmer v3.1 v.3.1 sources AT90S1200, AT90S2313, AT90S2333, AT90S4414, AT90S4433, AT90S4434, AT90S8515, AT90S8535, AT90CAN32, AT90CAN64, AT90CAN128
ATtiny2313, ATtiny261, ATtiny461, ATtiny861
ATmega103, ATmega128, ATmega1280, ATmega1281, ATmega16, ATmega161, ATmega162, ATmega163, ATmega164, ATmega168, ATmega169, ATmega2560, ATmega2561, ATmega32, ATmega323, ATmega324, ATmega48, ATmega603, ATmega64, ATmega640, ATmega644, ATmega8, ATmega8515, ATmega8535, ATmega88
Windows XP, Windows Vista, Windows 7, Windows 8

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