Технический форум

Технический форум (http://www.tehnari.ru/)
-   Микропроцессоры (http://www.tehnari.ru/f115/)
-   -   Portable AVR Программатор - µProg Micro SD (http://www.tehnari.ru/f115/t104559/)

Le_Fleurs 02.10.2015 20:34

Portable AVR Программатор - µProg Micro SD
 
Вложений: 13
Вложение 242587
В статье мы рассмотрим конструкцию и возможности программатора AVR микроконтроллеров µProg, который является простым в использовании, очень дешевым в изготовлении, миниатюрным, очень быстрым и автономным, использующим SD карту памяти. Такой вид программатора пригодится, если целевое устройство на микроконтроллере находится в труднодоступном месте и вы не можете (или не хотите) подключать ноутбук для программирования или обновления ПО целевого устройства.

Отличительные особенности и основные характеристики программатора:
компактные размеры
высокая скорость программирования:
запись – до 12.5 Кбит/с;
чтение – до 14.5 Кбит/с;
поддержка файловой системы FAT16 и FAT32;
поддержка чтения, записи, верификации Flash-памяти и EEPROM;
поддержка чтения, записи, верификации Fuse-битов и Lock-битов;
поддержка чтения/записи фалов BIN, HEX и TXT;
возможность установки заводских установок Fuse-битов для целевого микроконтроллера;
организация пользовательского интерфейса на базе графического дисплея LPH7779 с контроллером PCD8544;
анимация работы и при выполнении операций;
стандартный разъем программирования – 6-выводный Atmel ISP;
возможность обновления собственного ПО с SD карты памяти;
простой в использовании, 4 кнопки управления;
автовыбор скорости программирования (до 4 МГц);
рабочее напряжение 3 В, поддержка целевых микроконтроллеров с напряжением питания от 3 в до 5 В.

Поддерживаемые микроконтроллеры
Зеленым цветом выделены протестированные микроконтроллеры.
Заметьте, что не все микроконтроллеры полностью поддерживаются программатором – для некоторых поддерживаются только операции с Fuse- и Lock-битами. Системная информация о поддерживаемых микроконтроллерах содержится в системном файле chip.db (храниться на SD карте).
Микроконтроллеры с Flash-памятью 1 КБайт:
AT90s1200, ATtiny11, ATtiny12, ATtiny13/A, ATtiny15
Микроконтроллеры с Flash-памятью 2 КБайт:
ATtiny2313/A, ATtiny24/A, ATtiny26, ATtiny261/A, ATtiny28, AT90s2333, ATtiny22, ATtiny25, AT90s2313, AT90s2323, AT90s2343
Микроконтроллеры с Flash-памятью 4 КБайт:
ATmega48/A, ATmega48P/PA, ATtiny461/A, ATtiny43U, ATtiny4313, ATtiny44/A, ATtiny48, AT90s4433, AT90s4414, AT90s4434, ATtiny45
Микроконтроллеры с Flash-памятью 8 КБайт:
ATmega8515, ATmega8535, ATmega8/A, ATmega88/A, ATmega88P/PA, AT90pwm1, AT90pwm2, AT90pwm2B, AT90pwm3, AT90pwm3B, AT90pwm81, AT90usb82, ATtiny84, ATtiny85, ATtiny861/A, ATtiny87, ATtiny88, AT90s8515, AT90s8535
Микроконтроллеры с Flash-памятью 16 КБайт:
ATmega16/A, ATmega16U2, ATmega16U4, ATmega16M1, ATmega161, ATmega162, ATmega163, ATmega164A, ATmega164P/PA, ATmega165A/P/PA, ATmega168/A, ATmega168P/PA, ATmega169A/PA, ATtiny167, AT90pwm216, AT90pwm316, AT90usb162
Микроконтроллеры с Flash-памятью 32 КБайт:
ATmega32/A, ATmega32C1, ATmega323/A, ATmega32U2, ATmega32U4, ATmega32U6, ATmega32M1, ATmega324A, ATmega324P, ATmega324PA, ATmega325, ATmega3250, ATmega325A/PA, ATmega3250A/PA, ATmega328, ATmega328P, ATmega329, ATmega3290, ATmega329A/PA, ATmega3290A/PA, AT90can32
Микроконтроллеры с Flash-памятью 64 КБайт:
ATmega64/A, ATmega64C1, ATmega64M1, ATmega649, ATmega6490, ATmega649A/P, ATmega6490A/P, ATmega640, ATmega644/A, ATmega644P/PA, ATmega645, ATmega645A/P, ATmega6450, ATmega6450A/P, AT90usb646, AT90usb647, AT90can64
Микроконтроллеры с Flash-памятью 128 КБайт:
ATmega103, ATmega128/A, ATmega1280, ATmega1281, ATmega1284, ATmega1284P, AT90usb1286, AT90usb1287, AT90can128
Микроконтроллеры с Flash-памятью 256 КБайт:
ATmega2560, ATmega2561

Принципиальная схема программатора
Вложение 242597

Для навигации по меню и управления программатором используются 4 кнопки (Влево, Вправо, Вверх, Вниз).

Программатор разработан для работы от батареи, но возможно использовать надлежащий блок питания.

Основные параметры питания программатора:
номинальное напряжение питания: 3.3 В;
максимальное напряжение питания: 3.6 В;
минимальное напряжение питания: 2.7 В;
потребление тока при инициализации: до 100 мА*;
потребление тока при программировании: до 10 мА*;
потребление тока при навигации по меню: 5 мА;
потребление тока в отключенном состоянии (режим Power Down): 0.1 мкА.

* - потребляемый ток зависит от применяемой SD карты памяти.


Программатор работает только от напряжения получаемого от батареек, не установлено никаких регуляторов напряжения. Процесс программирования целевого микроконтроллера может проходить при питании его от 3 В до 5 В, в то время как программатор имеет напряжение питания 3 В. С одной стороны (со стороны программатора) с целью защиты входной линии микроконтроллера программатора от напряжения выше напряжения питания, вход MISO подключен через стабилитрон 3.3 В (D1) и резистор (R1). Со стороны целевого микроконтроллера, который имеет напряжение питания 5 В, уровень напряжения 3 В распознается по линии SCK и MOSI как высокий уровень (согласно технического описания VIH=0.6VCC=0.6×5 В = 3 В – гарантированное значение).

Как вы заметили, программатор не имеет механического выключателя питания, включение и выключение производится удерживанием кнопки LEFT. После выключения питания, микроконтроллер отключает питание дисплея и SD карты и переходит в режим Deep Sleep, в котором потребляет от батареи ток 0.1 мкА (типовое значение).

Для работы программатора требуется наличие карты памяти SD с системными файлами и директориями. Карта, кроме того, содержит файлы с расширением hex и bin для прошивки целевого микроконтроллера и файлы txt, в которых содержится конфигурационный байт для программирования Fuse- и Lock-битов. Важным системным файлом является файл config.ini, в котором содержатся конфигурационные данные программатора.

Для включения программатора нужно удерживать кнопку Влево. О включении сигнализирует появление заставки на дисплее с отображением текущей версии ПО, которая через некоторое время исчезает, после этого мы можем использовать меню управления программатора. С помощью кнопок Вверх и Вниз мы выбираем опции меню, с помощью кнопки Вправо – входим в выбранный пункт меню или подтверждаем выполнение той или иной операции, влево – выходим из пункта меню или отменяем выполнение операции.

Функции программатора (меню управления):

Flash (операции с Flash-памятью):
запись;
чтение;
верификация;

EEPROM (операции с EEPROM):
запись;
чтение;
верификация;

Fusebits (операции с Fuse-битами):
запись;
чтение;
верификация;
установка заводских значений;
Руководство (Установка Битов вручную)

Lockbits (операции с Lock-битами):
запись;
чтение;
верификация;
стирание кристалла;

Settings (Установки):

автоматическая верификация;
автоматическое стирание;
показывать анимацию;
показывать ход процесса программирования;
типы файлов.

Описание функций

Write (Запись) – запись данных в выбранную память целевого микроконтроллера. Необходимо выбрать файл из списка. При операции с Fuse- и Lock-битами, конфигурационные байты находятся в файле с расширением txt.

Read (Чтение)
– чтение данных из выбранного типа памяти целевого микроконтроллера в файл. Файл создается автоматически, в соответствующей директории на карте памяти. Формат имени файла x.yyy, где x-последовательный номер файла (Например: m8-a2 -1.hex) и yyy – расширение (bin или hex). Имя файла будет отображено после сохранения. Осуществляется чтение всего объема памяти микроконтроллера, независимо от того сколько реально значимых данных. В случае чтения Fuse- и Lock-битов, данные (конфигурационные байты) сохраняются в файл с расширением txt.

Verify (верификация, проверка) – сравнение данных в памяти целевого микроконтроллера с данными хранящимися в выбранном файле. Результатом данной операции является сообщение «Pass» (данные идентичны) или «Fail at x» (ошибка по адресу x), где x – адрес первого байта, в котором обнаружено расхождение в данных. В случае с Fuse- и Lock-битами, сравнение происходит с конфигурационными байтами в файле с расширением txt.

Default (Заводские установки) – сброс Fuse-битов к заводским установкам.

Chip Erase (Стереть кристалл) – внутренняя команда стирания всей памяти микроконтроллера и сброса Lock-битов.

Описание установок (меню Settings)

Auto Verify (автоматическая верификация) – включение данной опции позволяет автоматически проводить проверку данных после записи в память целевого микроконтроллера. Значение может быть On (включено) или Off (выключено). Данная опция касается только операций с Flash и EEPROM памятью микроконтроллера, Fuse- и Lock-биты считываются всегда после операции записи.

Auto Erase (автоматическое стирание) – опция, позволяющая применить команду стирания памяти целевого микроконтроллера, всегда перед операцией записи в память. Операция применима только для Flash-памяти целевого микроконтроллера. Исключение составляет случай, когда мы точно знаем что область памяти, в которую мы будем писать, уже очищена и мы имеем некоторые данные в конце этой памяти (загрузчик, bootloader). Отключение этой функции вызовет перезапись данных без операции стирания, и, если файл подготовлен правильно, область загрузчика не будет затронута.

Show Anims (показывать анимацию) – опция включает отображение анимации после каждой операции, в зависимости от результата выполнения. Анимация может быть отменена нажатием кнопки Влево. Реализуется последовательным воспроизведением BMP файлов с SD карты памяти из соответствующей директории, поэтому пользователи могут самостоятельно изменить анимационные картинки. Формат фалов анимации BMP, разрешение 84×48 точки, монохромные изображения (2 бита).

Prog bar – ход процесса программирования / чтения / верификации. Данную функцию можно включить или выключить.

File types (типы файлов) – позволяет выбрать тип файла с которым будет работать программатор. Применима при операциях с Flash- и EEPROM памятью, и, в зависимости от выбора, только HEX или BIN файлы будут отображаться в при открытии списка файлов.

Как было замечено ранее, для работы программатора требуется наличие системных файлов на SD карте памяти. Файлы должны быть помещены в соответствующие директории:
файлы для программирования Flash-памяти в папку «flash»,
файлы EEPROM – в папку «eeprom»,
конфигурационные txt файлы для программирования Fuse-битов – в папку «fuseb»,
Lock-биты – в папку «lockb».

Папка «System» содержит другие файлы, необходимые для работы программатора, включая базу данных по микроконтроллерам (файл chip.db), настройки (файл config.ini), изображения формата BMP. Архив с содержимым SD карты со всеми необходимыми файлами доступен для скачивания в разделе загрузок, в котором находится папка SD-files, содержимое которой необходимо скопировать на карту памяти.

Так же можно удалять файлы с карты памяти для этого нужно выбрать файл зажать кнопку влево и нажать кнопку вправо. Файл будет удален.

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

Файл с Fuse-битами содержит последовательные данные: младший байт, старший байт, расширенный байт в HEX. К примеру, содержимое файла для микроконтроллера Atmel ATtiny2313 будет: E4DFFF. (это означает что наш МК будет запрограммирован на внутренний генератор с тактовой частотой 8mHz. В конфигурационном файле могут содержаться комментарии и пользовательская информация, но только первые три байта используются программатором.

Структура конфигурационного файла Lock-битов аналогична, за исключением того, что используется лишь один байт из последовательности. Например, если нужно запрограммировать биты LB0 и LB1, то в файле должно содержаться значение FC (11111100). Это правило применимо и к Fuse-битам, если мы попытаемся запрограммировать несуществующий бит (записать в него 0), ничего страшного не случиться, мы получим лишь ошибку верификации, т.к. этот несуществующий бит всегда будет читаться как 1.

При чтении Fuse- и Lock-битов программатором, создаются соответствующие файлы с такой же структурой.

Список файлов (при работе с программатором) отображается не в алфавитном порядке, а в порядке их записи на карту памяти. Выделение файлов осуществляется кнопками Вверх и Вниз, выбор кнопкой Вправо, отмена – кнопкой Влево.

Программатор поддерживает работу с картами объемом 128 МБайт, 512 МБайт, 1 ГБайт, 2 ГБайт. Имена файлов на SD карте в формате DOS 8.3.

Разъем внутрисхемного программирования целевого микроконтроллера – это стандартный 6-выводный Atmel ISP коннектор. Однако, из-за того, что программатор питается от батареи, вывод коннектора Vcc (вывод 5 коннектора) был переназначен для доставки тактового сигнала 8 МГц к целевому микроконтроллеру (в случае необходимости внешнего тактирования). Сигнал подается через резистор 10 кОм, и поэтому нет необходимости переделывать стандартный кабель для программирования.
Стандартный ISP коннектор Atmel
Вложение 242581

Программатор имеет режим автоматического определения скорости программирования по внутрисхемному интерфейсу. Поддерживаются 7 режимов со скоростью работы 4 МГц, 2 МГц, 1 МГц, 500 кГц, 250 кГц, 125 кГц и 62.500 кГц. Теоретически, выбирается скорость равная ¼ рабочей частоты целевого микроконтроллера, но это не всегда. При каждой инициализации режима программирования программатор стартует на максимальной частоте и выполняет тест скорости, считывая сигнатурные байты 10 раз. В случае ошибки скорость работы (частота SCK) понижается и операция инициализации повторяется. Если же на самой низкой частоте не удается прочитать сигнатурные байты, то программатор выдает сообщение об ошибке «no answer».


При первоначальном программировании микроконтроллера программатора ATmega328P необходимо установить следующие Fuse-биты: low: A2 (младший байт), high: D0 (старший байт), Ext: 07 (расширенный байт),. Это означает: работа от внутреннего осциллятора 8 МГц без делителя на 8, включен выход CLKO, Brown-out детектор настроен на уровень 2.7 В, переход по вектору Reset в загрузчик, размер области загрузчика 4 КБайт, бит EESAVE запрограммирован.
Вложение 242584

Вот фото моего устройства
Вложение 242585 Вложение 242586 Вложение 242587 Вложение 242588 Вложение 242590 Вложение 242591 Вложение 242592
На фото показан что чтение или запись МК неудачно
Вложение 242593
А тут уже все Окей.
Вложение 242589

Вложение 242599

Le_Fleurs 02.10.2015 20:38

Фух..... ну вроде все. Позже будет видео, где покажу все функции.
Надеюсь кому то может пригодится, Но мне так однозначно, так как зачастую паяю на работе и бывает собрал устройство и есть баги, а что бы исправить фьюзы или залить прошивку нужно забирать домой, прошивать обратно отвозить для продолжения, а так всегда под рукой будет. :)

XELFAER 08.10.2015 19:44

Интересная реализация, хотелось бы увидеть устройство в действии. Ждем видео.

Le_Fleurs 09.10.2015 14:44

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

Le_Fleurs 10.10.2015 10:09

Так же если смотреть в сторону portable, то можно собрать програматор и прошивать МК с помощью телефона на android путем подключения програматора через OTG. Но это уже другая тема :)


Часовой пояс GMT +4, время: 08:43.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.