На склад поступили жидко-кристаллические индикаторы и дисплеи от KSE

Миниатюрный, быстрый, автономный программатор AVR микроконтроллеров с SD картой памяти. Часть 3 - ПО, файлы на SD карте памяти, обновление ПО, демонстрация работы

Часть 1. Основные характеристики, поддерживаемые режимы и принципиальная схема программатора
Часть 2. Описание функций и опций, режимы работы, результаты тестирования

Как было замечено ранее, для работы программатора требуется наличие системных файлов на SD карте памяти. Файлы должны быть помещены в соответствующие директории:

Технология правильного хранения аккумуляторов и батареек по рекомендациям FANSO и EVE Energy

  • файлы для программирования Flash-памяти в папку «flash»,
  • файлы EEPROM – в папку «eeprom»,
  • конфигурационные txt файлы для программирования Fuse-битов – в папку «fuseb»,
  • Lock-биты – в папку «lockb».

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

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

Файл с Fuse-битами содержит последовательные данные: младший байт, старший байт, расширенный байт в HEX. К примеру, содержимое файла для микроконтроллера Atmel ATtiny45 будет: 62DFFF. В конфигурационном файле могут содержаться комментарии и пользовательская информация, но только первые три байта используются программатором.

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

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

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

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

Поддерживаемые программатором µProg карты памяти

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

ISP коннектор
ISP коннектор программатора при установке на печатную плату

 

Стандартный ISP коннектор
Стандартный ISP коннектор Atmel

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

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

Обновление ПО программатора можно провести двумя разными способами: посредством разъема ISP или с помощью загрузчика с карты памяти.

В первом случае необходимо подключить внешний ISP программатор к разъему ISP программатора µProg и замкнуть перемычку SLF-PRG – в этом случае разъем ISP будет служить для обновления ПО (как в программаторе USBasp).

Во втором случае встроенный загрузчик может самостоятельно обновить прошивку из BIN файла на SD карте. Пользователю необходимо поместить файл обновления с именем 000.bin (переименовать файл обновления в 000.bin) в корневую директорию SD карты. При включении питания программатора дисплей будет чистым, что говорит о том, что файл обновления найден и устройство ждет подтверждения пользователя. Пользователь должен нажать кнопку ВПРАВО для подтверждения обновления ПО. Перепрошивка занимает несколько секунд, по окончанию программатор запускается, выводя приветственное сообщение с текущей версией ПО. Теперь файл 000.bin можно удалить. Если программатор не входит в режим обновления, причиной этого может быть режим, неподдерживаемый SD картой, – просто попробуйте заменить карту памяти.

Для конфигурирования программатора используется файл config.ini, в котором содержится конфигурационный байт. Файл помимо конфигурационных данных содержит описание настроек на русском языке и пользователям не составит труда разобраться в нем.

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

Демонстрация работы программатора

Плата с установленными компонентами

Печатная плата с установленными компонентами
 

Кабель для программирования

Загрузки

Архив с принципиальной схемой и рисунками печатной платы, все системные файлы для SD карты памяти, прошивка микроконтроллера (BIN, HEX) – скачать

Перевод: Vadim по заказу РадиоЛоцман

На английском языке: µProg - tiny, fast, portable AVR programmer with SD. Part 3. Software, Memory card, files, Firmware update, Demonstration

Электронные компоненты. Бесплатная доставка по России
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя
Фрагменты обсуждения (только последние 20 сообщений):Полный вариант обсуждения »
  • [B]Vadzz[/B] Здравствуйте. Вот выкладываю архив,посмотрите. Может еще чего-нибудь подскажете или натолкнете на какую мысль?! Спасибо.
  • Прочитал я и посмотрел фотки ваши, и есть вопрос по флешке. Какого размера(больше 2 Gb - не читает)???????? [B][COLOR="Red"]поменял частоту SPI для LCD индикатора на 2 Мгц в файле config.ini.[/COLOR][/B], это я сообщение писал, когда столкнулся с надписью "error CD" У меня с этого началось, как у вас. Может тоже с файлом [B][I]config.ini[/I][/B] поработать, как вы с Фьюзами, они все правильно запрограммированы. Я сам тоже электронщик больше, но потихоньку учусь. Прежде чем МК менять , всякие флешки попробуйте еще меньшего размера. Когда фотки смотрел, обратил внимание на перемычку SLF-PRG - она разомкнута, как и должно быть. Ну, если с флешкой и с файлом config.ini не получится, то остается MК. Желаю удачи.
  • [B]Brigadiir[/B], почитал ваши каменты в архиве. Я думаю пока рано говорить о неисправности микроконтроллера. Но соглашусь с мнением о затыкании в работе с картой памяти. Хотя автор заявляет, что работа программатора проверялся с различными картами памяти, включая карты емкостью 2 Гбайт. Отказ вашего программатора в работе с картой остается для меня непоняткой... Конечно, я не могу давать конкретные дельные советы, т.к. не собирал этот программатор, но хоть чем-то/как-то... Хорошо присоединился [B]Владимир_59[/B], я так понял у него программатор собран и работает, может он чего дельного еще подскажет. ПО установке Fuse битов по вашим скринам - все верно. Значение калибровочного байта на скриншоте "07 CodeVis..." - вроде верное, но это надо уточнить по даташитам и application notes. Единственное, что еще можно попробовать, так это отформатировать карту памяти специальной утилитой (к сожалению не помню ее название) и затем скопировать необходимые системные файлы программатора на нее. Еще, в конфигурационном файле можно попробовать установить максимальную частоту работы программатора в диапазоне 0-8 Мгц (а не 16, как установлено у автора)....
  • Добрый день, простите за беспокойство, могли бы вы подсказать и помочь запустить программатор ну или выявить причину почему у меня не запускается он :(. Плату вытравливал на 1-стороннем текстолите, но дорожки со второй стороны платы протянул проводами на верхнем слое, проверил как запаяны все элементы, все в порядке, замыканий соплей нет, по схеме тоже все сходится. Поставил перемычку самопрограммирования и прошил чип, проверка прошивки после записи прошла успешно фьюзы установил правильно как у автора, ну и сверился с фузами (выкладывал тут кто-то фотки выставления их), отпаял перемычку самопрограммирования, воткнул сд карту на 256мб залил на нее файлы. При подаче питания ток потребления поднимается до 50ма, на дисплее после включения челез пол секунды или раньше проскакивает снизу 3-4 полосочки и гаснут, вроде больше никаких признаков жизни, однако когда нажимаю кнопку LE то через 1 секунду потребление падает до 0ма, когда нажимаю на нее опять то ток вначале поднимается до 5ма а потом до 50ма и падает до 35ма. Притом при включении опять те парочка полосочек. Пробовал поставить на карту памяти 000.bin при включении программатора дисплей не подал признаков жизни даже не маргнул (в описании автора вроде так и должно быть), если нажать RI то через пару секунд дисплей опять моргает полосочками разок что типа включился. Я так понимаю что вроде как самопрограммирование работает, но дисплей кроме тех злополучных полосочек ничего не выдавал еще. Что может быть, дисплей? или косяки с платой какие-то, дисплей снял с разобранного телефона видимых повреждений нет, тел. нокия 3310 дисплей с медными контактами припаян к плате проводами длиной примерно по 1 см. распиновка соблюдена. Мог ли сгореть дисплей если я вначале упустил и не подпаял провод "-" на конденсаторы для внутреннего генератора экрана? Программатор питаю от блока питания регулируемого идет в комплекте с паяльной станцией, пока писал пост подумал, может попробовать запитать от батареек, а вдруг поможет. Пробовал играть с настройками в файле config, но к сожалению не помогает ничего все остается без изменений. Спасибо за помощь.
  • Исходя из всего вышеперечисленного, мое мнение - что-то с дисплеем. Сам программатор работает, о чем можно судить по изменению тока потребления (хотя 35 мА многовато, мне кажется), дисплей возможно рабочий, но может инициализация не проходит. А может у него распиновка другая (маловероятно, но не исключаю), или тайминги протокола другие. Тяжело так судить... Могу посоветовать еще просмотреть комментарии к этой статье на сайте автора и, если есть возможность, подкинуть другой дисплей.
  • Пробовал от батареек, тоже самое, без сд карты результат тотже как будто запускается и хочет написать что ее нет но дисплей усердно при включении моргает 1 раз несколькими полосками. Дисплей вроде оригинальный, буду искать другой дисплей может все-таки он, в каких контрольных точках можно промерять напряжение? для более точной диагностики что сам девайс работает. Перепроверил еще раз всю плату все в порядке все подпаяно нигде нет соплей. Спасибо, попробую почитать еще обсуждения в статье автора, может на что-то и натолкнет. Жаль что исходники он не выложил и сделал только под 1 дисплей, было бы хороше если бы он сделал под разные дисплеи прошивки ну или выложил исходники чтоб самому под другой дисплей переделать.
  • Добрый вечер. Попробуй простую программу отсюда, я не имея ничего чем можно прошить 328-ю, скачал все отсюда и все получилось - [COLOR="Red"][B][url]http://gokerze.blogspot.com/2012/12/bootloader-atmega328p-pu-atmega-328-lpt.html[/url][/B][/COLOR] Все равно 328 какая-то хитрая м/сх. правда эта статья была на другом сайте, а сейчас его нет. Удачи.
  • Подскажите пожалуйста, как поменять частоту SPI для LCD индикатора на 2 Мгц в файле config.ini. если можно фото (у меня такая беда при запуске с картой, режет строки) без карты запуск норм
  • Вроде в самом файле config.ini достаточно понятно написано... В первой строке файла у нас закладывается конфигурация программатора в виде строки из 8 бит (изначально имеем 10011111). Так вот для понижения частоты SPI шины с 4 до 2 МГц нам нужно установить в единицу 6 бит, т.е. имеем 11011111.
  • А кто может доработать прошивку так, чтобы я сам мог выбрать каким файлом обновить софт программатора ? Сейчас он автоматически загружает файл 000.bin
  • Собрал! Работает! attiny2313 и attiny13 читает а atmega8a и atmega328p нехочет. Что делать?
  • Здравствуйте. Понимаю тема устарела, а вдруг. Не появилась ли прошивка atmega328 под sdhc карты, т.к. sd в продаже уже нет.
  • Пока вроде не появилась... И судя по всему не появится... Текущая версия прошивки 1.3... И, видимо это последняя версия. Насколько я понял автора, дальнейшей разработки и поддержки программатора не будет...
  • Спасибо. попробую найти sd .
  • Здравствуйте. Еще вопросик. Питаю программатор от акб сотового 3.5 в(средне заряженный),если акб зарядить 3.7 в и подать питание через диод , получится около 3.3в. программатор работает , но слабая контрастность , почти ни чего не видно. Пробовал менять константу контрастности в config ,картинка не меняется. Что посоветуете. Спасибо.
  • Приветствую! Лучше используйте стабилизатор например LD1117-33. он имеет на выходе 3.3в. А для зарядки прикрутить схему [url=http://radikal.ru][img]http://s11.radikal.ru/i183/1701/92/6681228a9e6a.jpg[/img][/url]
  • пробовал 1117 , при входном 3.7в , на выходе около 2.8 в , не то.
  • Мужики, понимаю, тема старая и не совсем актуальная, но может кто-то подскажет. Собрал вот такой [URL="https://alldiy.top/programmatory-sdelat-svoimi-rukami-samostoyatelno/avr-portativnyj-programmator-uprog.html"]AVR портативный программатор uProg[/URL]. Он несколько лет лежал в ящике, раз в пол года подзаряжал, проверял (включал/выключал). Но понадобился в последнее время и заметил такую вещь, что он имеет сильную утечку в выключенном состоянии. Аккумулятор менял. Куда смотреть?
  • В схему ))) "Большую утечку" - это какую и сколько? Отключите схему заряда аккумулятора, проверьте снова ток потребления в выключенном состоянии. Транзисторные ключи... DCDC преобразователь...
  • [b]Vadzz[/b], утечка такая, что аккумулятор 1000мAh за неделю разряжается в "ноль". Т.е. минимум 1000/168= 6мAh. Более точные данные узнаю, когда произведу замеры.
Полный вариант обсуждения »