Найти тему
TehnoZet-2

Программатор USB ASP

Оглавление

Купил вот такой вот программатор USB ASP для прошивки микроконтроллера тестера транзисторов на ATmega 328P AU, короткий отчет о нем.

Обновлено: 09.04.2022

AVR программатор USB ASP

USB ASP - очень популярный, бюджетный программатор для микроконтроллеров AVR. С его помощью можно прошивать контроллеры AVR по интерфейсу ISP, внутрисхемно не выпаивая с платы, например можно прошить загрузочный сектор на контроллерах Arduino или прошить известный тестер ESP мeter

USB ASP набор
USB ASP набор

Покупал на AliExpress тут. Китайское название, для поиска на AliExpress: "Программатор USBASP AVR USB ISP"

Характеристики

  • Поддерживаемые ОС: Windows, MacOS, Linux
  • Процессор: Atmega8A
  • Интерфейс подключения к ПК: USB
  • Интерфейс программирования: ISP (внутрисхемное)
  • Напряжение программирования: 5В или 3.3В (в зависимости от положения перемычки JP2)
  • Частота программирования: 375кГц (по умолчанию) и 8кГц (при замкнутой перемычке JP3)
  • Поддерживаемые контроллеры: все AVR с интерфейсом SPI

Схема

Схема
Схема

Особенности

  • скорость программирования до 375 (5) кб/сек;
  • 10-контактный интерфейс ISP, который соответствует стандарту ICSP с 10-контактной распиновкой;
  • поддерживает два напряжения питания программатора - 5В и 3,3В или вообще без питания;
  • питается от порта USB компьютера, имеет встроенную защиту по току, самовосстанавливающийся предохранитель на 500 мА.

Список поддерживаемых AVR микроконтроллеров:

  • Mega Series: 

ATmega8, ATmega8A, ATmega48, ATmega48A, ATmega48P, ATmega48PA, ATmega88, ATmega88A, ATmega88P, ATmega88PA, ATmega168, ATmega168A, ATmega168P, ATmega168PA, ATmega328, ATmega328P, ATmega103, ATmega128, ATmega128P, ATmega1280, ATmega1281, ATmega16, ATmega16A, ATmega161, ATmega162, ATmega163, ATmega164, ATmega164A, ATmega164P, ATmega164PA, ATmega169, ATmega169A, ATmega169P, ATmega169PA, ATmega2560, ATmega2561, ATmega32, ATmega32A, ATmega324, ATmega324A, ATmega324P, ATmega324PA, ATmega329, ATmega329A, ATmega329P, ATmega329PA, ATmega3290, ATmega3290A, ATmega3290P, ATmega64, ATmega64A, ATmega640, ATmega644, ATmega644A, ATmega644P, ATmega644PA, ATmega649, ATmega649A, ATmega649P, ATmega6490, ATmega6490A, ATmega6490P, ATmega8515, ATmega8535,

  • Tiny Series:

 ATtiny12, ATtiny13, ATtiny13A, ATtiny15, ATtiny25, ATtiny26, ATtiny45, ATtiny85, ATtiny2313, ATtiny2313A

  • Classic Series: 

AT90S1200, AT90S2313, AT90S2333, AT90S2343, AT90S4414, AT90S4433, AT90S4434, AT90S8515, AT90S8535

  • Can Series: 

AT90CAN128

  • PWN Series: 

AT90PWM2, AT90PWM3

А что такое ISP и почему это важно

Внутрисхемное программирование или In System Programming - ISP, или In Circuit Serial Programming - ICSP — программирования электронных компонентов позволяющая программировать компонент уже установленный в устройство, находящаяся на плате внутри схемы. Для этого должны быть выведены контакты организующие доступ к устройству. Такое программирование экономит время и ресурсы позволяя перепрограммировать (запрограммировать) компонент "на лету" не снимая его с платы.

Устройство

С одной стороны разъем USB с другой интерфейс ISP между ними ATmega8A с кварцем на 12 МГц и электрической обвязкой

AVR программатор USB ASP
AVR программатор USB ASP

Микроконтроллер Atmega8

Характеристики

  • Ядро: avr
  • Разрядность: 8-бит
  • Тактовая частота: 16 мгц (работает на частоте 12мгц)
  • Объём памяти EEPROM: 512 кБайт
  • Объём памяти FLASH: 8 кбайт (4k x 16)
  • Объём памяти, RAM1 kB
  • Внутреннее АЦП10 Бит
  • Встроенные интерфейсы: i2c, spi, uart
  • Напряжение питания: 4.5…5.5 в

Интерфейс ISP

Программирование через интерфейс ISP происходит по пяти линиям связи:

  • MOSI;
  • MISO;
  • SCK;
  • RESET;
  • GND.

Вид со стороны разъема

 Интерфейс ISP
Интерфейс ISP

Или вот так

Распиновка со стороны разъема.
Распиновка со стороны разъема.

Или вот так

Разъем на программаторе и шлейфе
Разъем на программаторе и шлейфе

Впрочем, на плате все подписано

Значение контактов ISP

  • SCK (SPI ClocK) - тактовый сигнал, который программатор формирует на линии SCK.
  • MOSI (Master Out, Slave In - вход ведомого, выход ведущего) - линия передачи данных от программатора (ведущий), к программируемому микроконтроллеру (ведомый).
  • MISO (Master In, Slave Out - выход ведомого, вход ведущего) - линия передачи данных от программируемого микроконтроллера (ведомый) к программатору (ведущий).
  • GND - необходимо соединить землю, сделать общей на программаторе и программируемом устройстве.
  • RESET - для входа и нахождения в режиме последовательного программирования используется линия сброса - Reset. Она должна удерживаться в активном состоянии - низкий уровень во время всего цикла программирования AVR. При стирании чипа на линии RESET должен быть сформирован импульс в конце цикла стирания.

Кто ведущий, кто ведомый?
При программировании AVR программатор всегда функционирует как ведущее устройство, а микроконтроллер как ведомое.

Перемычки

Перемычки
Перемычки
  • JP1 SERVICE — замыкается в случае обновления прошивки самого программатора
  • JP2 POWER — тройная перемычка, здесь выбирается, какое напряжение будет подаваться на прошиваемый микроконтроллер, 5В, 3.3В или вообще не подаваться если убрать перемычку, например программируемое устройство имеет собственный источник питания.
  • JP3 SLOW — если её замкнуть, то программирование контроллера будет происходить с пониженной частотой, если программируемое устройство, работает на частоте ниже 1.5 МГц, SCK (вывод 7) уменьшит частоту с 375 кГц до 8 кГц. Советуют держать этот джампер постоянно замкнутым, чтобы, забыв о его существовании, не мучиться вопросом - почему микроконтроллер не прошивается.

Установка драйверов

Windows по умолчанию не устанавливает сама драйвер поэтому придется их качать и устанавливать самим.

Вот так видится устройство: "USBasp"

Определяется как USBasp
Определяется как USBasp

С установкой проблема, но давайте по порядку, а дело в том, что ранее драйвер для программатора USBasp был основан на libusb-win32 и не был подписан. Позднее, библиотека была заменена на libusbK и драйвер не требует подписи.

Если вы пойдете на официальный сайт https://www.fischl.de откуда собственно ноги растут этого прошивальщика микроконтроллеров, то на страничке: https://www.fischl.de/usbasp/ увидите драйвера последний будет: "usbasp.2011-05-28.tar.gz" (вот он на моих дисках Гугл диск, Яндекс диск) смущает расширение "как для Linux", но это обычный ZIP архив, если скачаете, то все равно установить не получится так как нужна подпись (он не подписан) о чем выше сказано. Для установки нужно качать "Zadig" (https://zadig.akeo.ie). Zadig - утилита, которая выполняет установку USB драйверов на компьютер WinUSB , libusb-win32/libusb0.sys или libusbK. Но в интернете ходит другой файл для Windows, его я нашел на сайте: Myrobot.ru вот тут: https://myrobot.ru/downloads/programs/usbasp-win-driver-x86-x64-v3.0.7.zip, я его скопировал к себя не диски (Гугл диск, Яндекс диск) Отчет Virustotal этот файл основан на libusbK и драйвер не требует подписи, устанавливает без всяких танцев с бубном. Достаточно скачать драйвер USBasp и запустить файл InstallDriver.exe из распакованного архива.

Установленный драйвер
Установленный драйвер

Программная часть

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

AVRDude Prog

Это графическая оболочка для программы AVRdude

Программа "AVRDUDE_PROG" официальная страничка тут: http://www.yourdevice.net, качать отсюда (http://www.yourdevice.net/proekty/avrdude-prog)

На моих дисках:

Отчет Virustotal (одна программа с одним вирусом )

SinaProg 2.1

Качал отсюда: https://cxem.net/software/sinaprog.php

На моих дисках:

Отчет Virustotal (находит аж 6 программ и 6ть различных вирусов)

Этой программой я то же прошил, но она мне не очень понравилась

AVRDude Prog настройка

Пользоваться будем программой "AVRDude Prog"

Выбираем:

  • микроконтроллер: "ATmega328P";
  • программатор: "USBasp"
-11

Что такое FUSE-биты

Fuse или фьюзы что такое, зачем они нужны и как всегда, что делать?

FUSE-биты
FUSE-биты

На самом деле помимо Fuse битов есть еще Lock биты, их довольно часто объединяют в одну группу, называю общим названием Fuse биты, но давайте по порядку. Доступ к Фьюзам и Lock битам возможен только с помощью программатора. В AVR микроконтроллерах Fuse и Lock биты содержатся в специально отведенной для этого области памяти. см ниже. Все Fuse фьюзы и биты блокировки, Lock биты имеют следующие значения:

  • 1 - не установлен (не запрограммирован);
  • 0 - установлен (запрограммирован).

Как бы все наоборот, и об этом ниже.

  • 1. это значит не установлен как была перемычка так и осталось.
  • 0. - установлен, а значит мы пережгли перемычку осуществили запись - прожиг.

Fuse или Фьюз биты

Fuse или Фьюз с английского переводится как "предохранитель" логика тут следующая. Если предохранитель цел и перемычка цела то ток течет, цепь замкнута, а если перемычка сгорела то ток не течет. Вот таким образом пережигая перемычки мы включаем или выключаем определённые настройки режима работы микроконтроллера. Причем по умолчанию перемычка цела это логическая "1", а бит не установлен, не запрограммирован.

  • 1 - это значит не установлен, как была перемычка так и осталось.
  • 0 - установлен, а значит мы пережгли перемычку осуществили запись - прожиг.

Фьюзы (фьюз-биты) содержатся в трех байтах и позволяют настраивать работу самого микроконтроллера

Lock, блокированные биты

Слово Lock переводится как блокировка это своего рода переключатели, которые в одном состоянии контактов дают 1, а в противоположном - 0. Биты блокировки позволяют установить режимы доступа на запись и (или) чтение внутренней Flash-памяти и (или) EEPROM, Направление доступа так же можно ограничить как изнутри микроконтроллера, так и снаружи (при использовании ISP-интерфейса), это полезна для защиты от копирования/изменения программы и хранящихся в энергонезависимой памяти данных. Блокировочные биты (Lock Bits) микроконтроллера расположены в отдельном блокировочном байте.

Примеры отдельных Fuse-битов:

  • RSTDSBL (ReSeT DiSaBLe) - "запретить ресет", превращает пин для сброса МК в обычный порт ввода/вывода;
  • CKSEL0..3 (ClocK SELect) - четыре бита для установки параметров и источника тактового сигнала МК (внешний кварц, внутренний RC-генератор, делитель частоты и т.п.);
  • CKDIV8 (ClocK DIVision 8) - если этот бит установлен то тактовая частота от внутреннего RC-генератора будет делиться на 8;
  • CKOPT (ClocK OPTimization) - задает размах сигнала (амплитуду) с выходного тактового генератора, оптимизация потребляемого тока, влияет на помехоустойчивость;
  • SUT0..1 (Start Up Time) - установка временной задержки запуска программы после подачи питания или перезапуска МК;
  • SPIEN (Serial Programming Interface ENable) - разрешение/запрещение программирования МК через последовательный программный интерфейс;
  • JTAGEN (JTAG ENable) - разрешает/запрещает использование JTAG интерфейса;
  • EESAVE (EEprom SAVE) - если этот бит установлен, то содержимое энергонезависимой памяти будет сохранено после стирания кристалла (опция -e в AVRDude);
  • WDTON (Watch Dog Timer ON) - отключение программного управления сторожевым таймером, запуск таймера автоматически при подаче питания на МК;
  • BODEN (Brown-Out Detection ENabled), BODLEVEL (Brown-Out Detection LEVEL) - биты для включения и настройки мониторинга за напряжением питания МК;
  • BOOTRST (BOOT ReSeT) - выполнять запуск через загрузчик (Boot Loader), микроконтроллер начнет выполнение программы не с адреса 0x0000 (по умолчанию), а с адреса где расположен загрузчик

Почему не стоить менять некоторые фьюзы

При неправильной установки фьюзов можно потерять доступ к микроконтроллеру.

Внимание!!! Не нужно менять!!!

  • RSTDISBL - при выставлении линия Reset превращается в одну из ножек порта, но (!) теряется возможность прошивки
  • DWEN – включает отладку через DebugWire. Имеет тот же конечный эффект, что и RSTDISBL.
  • SPIEN - заболочен и менять не надо, иначе теряется возможность прошивки через SPI

С осторожностью

  • CKSEL - очень подумать иначе так изменяет конфигурацию тактового сигнала (внутренний внешний) см. ниже.
  • WDTON - сторожевой таймер. Если установить этот бит и забыть про него, МК может перезагружаться без видимых причин.
  • BOOTRST - принуждает программу стартовать с секции бутлоадера, а не с начала (0x0000).

Но например при прошивке транзистор тестера LCR-T4, см. ниже мы должны будем его прописать, подробнее в отдельной статье: "Тестер транзисторов LCR-T4 ESR. Часть III. Прошивка."

У каждой модели микроконтроллера свой набор доступных к изменению фьюзов и блокировочных битов, поэтому читайте даташит (Datasheet на Atmega328p, стр.241) или просто пользуйтесь инструкцией как прошить тот или иной микроконтроллер.

Вот пример фьюзов для прошивки транзистор тестера LCR-T4

  • Зеленым - то что выставляем
  • Красным - то что менять нельзя, больше не прошьется обычным способом.
  • Желтым можно, но с опаской, может не заработать должным образом, всегда сможете перепрошить.
Окончательное выставление фьюзов, сортировка по степени важности
Окончательное выставление фьюзов, сортировка по степени важности

Прошиваем ATmega 328P AU на примере транзистор тестера LCR-T4 ESR.

Про микроконтроллер ATmega 328P AU

Тестер LCR-T4 основан на ATmega328, более точно ATmega 328P AU и является частью проекта: AVR-Transistortester (https://www.mikrocontroller.net/articles/AVR-Transistortester)

- это 8-разрядное устройство megaAVR, основанное на архитектуре RISC

  • ATmega328 - базовая модель
  • ATmega328P - буква "P" это более низкое энергопотребление ("PicoPower"), достигается это более низким техпроцессом (ATmega328P - 60 нм, ATmega328 - 90 нм) что более предпочтительно.
  • ATmega328PU -буквы "PU" означают вид корпуса:

- PU соответствуют пластиковому DIP (PDIP);

- AU пластиковому TQFP;

- MU пластиковому QFN.

Подключение

Контакты подписаны, но со стороны экрана и это не очень удобно.

Пописанные контакты со стороны дисплея.
Пописанные контакты со стороны дисплея.

Распиновка на плате вид с другой стороны дисплея

Распиновка на плате вид со стороны микроконтроллера
Распиновка на плате вид со стороны микроконтроллера

Это распиновка в точности совпадает с переходником который идет в комплекте. Я припаял гребенку так как у меня есть место под платой и конечно, так удобнее.

Припаяна гребенка
Припаяна гребенка

Все соединяем вместе

Все соединяем вместе
Все соединяем вместе

На программаторе закорочены выводы JP3, предварительно я припаял туда перемычку так как мы помним это уменьшает частоту с 375 кГц до 8 кГц. Питание в данном случае берется от программатора, штатное питание при прошивке не нужно.

Впаяны контакты и стоит перемычка
Впаяны контакты и стоит перемычка

Перемычка JP21 в положении 3,3 Вольта.

Загружаем программу

Загружаем программу "AVRDude Prog" см. выше.

Загружаем прошивку

Сначала прошиваем:

1) Flash;

2) Eprom.

Более подробно именно о прошивки транзистор тестера:

Тестер транзисторов LCR-T4 ESR. Часть III. Прошивка.

Продолжение следует....

Информация, форумы, статьи и видео в сети интернет

Подписывайтесь на мой канал TehnoZet-2, там много интересного! Мы только развиваемся! Понравилась статья, хотите продолжения - ставьте лайк, жмите палец вверх.

Пользуйтесь рубрикатором по каналу, там все по разделам: "Страничка путеводитель по каналу TehnoZet-2"

Статьи и видео на моем канале.

Тэги

#микроконтроллер

#умнаяпыль

#Программы

#КИТиКОД

#Нужнаявещь

#транзистортестер

#lcr-t4

#простоосложном

#длямаленьких

#подключаемся