Поиск по этому блогу

31 дек. 2013 г.

Миниатюрный, быстрый, автономный программатор AVR микроконтроллеров с SD картой памяти. Часть 2


Часть 1. Основные характеристики, поддерживаемые режимы и принципиальная схема программатора
Для работы программатора требуется наличие карты памяти SD с системными файлами и директориями. Карта, кроме того, содержит файлы с расширением hex и bin для прошивки целевого микроконтроллера и файлы txt, в которых содержится конфигурационный байт для программирования Fuse- и Lock-битов, конструкция которых будет рассмотрена в третьей части описания. Важным системным файлом является файл config.ini, в котором содержатся конфигурационные данные программатора.
Миниатюрный, быстрый, автономный программатор AVR микроконтроллеров с SD картой памяти
Для включения программатора нужно удерживать кнопку LEFT. О включении сигнализирует появление заставки на дисплее с отображением текущей версии ПО, которая через некоторое время исчезает, после этого мы можем использовать меню управления программатора. С помощью кнопок UP и DOWN мы выбираем опции меню, с помощью кнопки RIGHT – входим в выбранный пункт меню или подтверждаем выполнение той или иной операции, LEFT – выходим из пункта меню или отменяем выполнение операции.
Функции программатора (меню управления):
  • Flash (операции с Flash-памятью):
    • запись;
    • чтение;
    • верификация;
       
  • EEPROM (операции с EEPROM):
    • запись;
    • чтение;
    • верификация;
       
  • Fusebits (операции с Fuse-битами):
    • запись;
    • чтение;
    • верификация;
    • установка заводских значений;
       
  • Lockbits (операции с Lock-битами):
    • запись;
    • чтение;
    • верификация;
    • стирание кристалла;
       
  • Settings (Установки):
    • автоматическая верификация;
    • автоматическое стирание;
    • показывать анимацию;
    • показывать ход процесса программирования;
    • типы файлов.
Описание функций
Write (Запись) – запись данных в выбранную память целевого микроконтроллера. Необходимо выбрать файл из списка. При операции с Fuse- и Lock-битами, конфигурационные байты находятся в файле с расширением txt.
Read (Чтение) – чтение данных из выбранного типа памяти целевого микроконтроллера в файл. Файл создается автоматически, в соответствующей директории на карте памяти. Формат имени файла x.yyy, где x-последовательный номер файла и 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 (показывать анимацию) – опция включает отображение анимации после каждой операции, в зависимости от результата выполнения. Анимация может быть отменена нажатием кнопки LEFT. Реализуется последовательным воспроизведением BMP файлов с SD карты памяти из соответствующей директории, поэтому пользователи могут самостоятельно изменить анимационные картинки. Формат фалов анимации BMP, разрешение 84×48 точки, монохромные изображения (2 бита).
Prog bar – ход процесса программирования / чтения / верификации. Данную функцию можно включить или выключить. Следует заметить, что включение функции замедляет скорость работы программатора в некоторых режимах.
File types (типы файлов) – позволяет выбрать тип файла с которым будет работать программатор. Применима при операциях с Flash- и EEPROM памятью, и, в зависимости от выбора, только HEX или BIN файлы будут отображаться в при открытии списка файлов.
Результаты тестирования скорости работы
Тестирование проводилось на целевом микроконтроллере Atmega644A с рабочей частотой 25 МГц, частота тактирования интерфейса SPI (SCK) – 4 МГц, программирование Flash память объемом 64 КБайт, скорость работы программатора 16 МГц.
  1. Файл BIN, отключено отображение индикатора работы: запись из файла – 5.1 с, чтение в файл – 4.4.
  2. Файл BIN, включено отображение индикатора работы: запись из файла – 5.1 с, чтение в файл – 5.0.
  3. Файл HEX, отключено отображение индикатора работы: запись из файла – 12.5 с, чтение в файл – 11.6.
  4. Файл HEX, включено отображение индикатора работы: запись из файла – 12.5 с, чтение в файл – 12.2.
Как видно, максимальная скорость программирования целевого микроконтроллера достигается при работе с BIN файлом, т.к. длина файла – это длина неформатированных данных. Чтение же HEX файла должно выполняться полностью, с вычислением его длины, а для записи в HEX файл необходимо форматировать данные и вычислять контрольную сумму для каждой строки. Все это занимает много времени.
Индикатор работы программатора не замедляет процесс программирования, если память целевого микроконтроллера программируется постранично (как в тестовом случае). Если же программирование целевого микроконтроллера ведется побайтно или происходит чтение его памяти, которое всегда выполняется побайтно, включение индикатора может значительно замедлить процесс.
Часть 3. ПО, файлы на SD карте памяти, обновление ПО, демонстрация работы
Перевод: Vadim по заказу РадиоЛоцман

Миниатюрный, быстрый, автономный программатор AVR микроконтроллеров с SD картой памяти. Часть 1

Paweł Kisielewski
В статье мы рассмотрим конструкцию и возможности программатора AVR микроконтроллеров µProg, который является простым в использовании, очень дешевым в изготовлении, миниатюрным, очень быстрым и автономным, использующим SD карту памяти. Такой вид программатора пригодится, если целевое устройство на микроконтроллере находится в труднодоступном месте и вы не можете (или не хотите) подключать ноутбук для программирования или обновления ПО целевого устройства.
Миниатюрный, быстрый, автономный программатор микроконтроллеров AVR
Отличительные особенности и основные характеристики программатора:
  • компактные размеры – 44 мм × 39 мм × 5.5 мм;
  • высокая скорость программирования:
    • запись – до 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
Принципиальная схема программатора
Основой программатора является микроконтроллер Atmel AVR ATmega328P-20AU, работающий от внутреннего RC осциллятора 8 МГц. Для организации пользовательского меню применяется монохромный графический ЖК дисплей LPH7779 на базе контроллера PCD8544 (установлен в мобильном телефоне Nokia 3310). Организация дисплея 84×48 точек, имеет стандартный набор инструкций и может работать на частоте 4 МГц.
Если при включении питания программатора (после сборки) на дисплее появится «мусор» или вообще ничего не будет отображаться, то этому может быть две причины:
  1. это китайский вариант дисплея, который собран на ином драйвере (не PCD8544);
  2. дисплей не поддерживает работу на частоте 4 МГц.
Некоторые способы решения этих проблем мы рассмотрим в третьей части описания.
Для работы дисплея требуется два конденсатора (С2, С3) для встроенного преобразователя напряжения, номинальное значение емкости – 1 мкф. Однако, как было замечено, дисплей прекрасно работает при установке конденсаторов номиналом 100 нФ.
Для навигации по меню и управления программатором используются 4 кнопки (LEFT, RIGHT, UP, DOWN).
Программатор разработан для работы от батареи, но возможно использовать надлежащий блок питания.
Основные параметры питания программатора:
  • номинальное напряжение питания: 3.3 В;
  • максимальное напряжение питания: 3.6 В;
  • минимальное напряжение питания: 2.7 В;
  • потребление тока при инициализации: до 100 мА*;
  • потребление тока при программировании: до 10 мА*;
  • потребление тока при навигации по меню: 5 мА;
  • потребление тока в отключенном состоянии (режим Power Down): 0.1 мкА.
* - потребляемый ток зависит от применяемой SD карты памяти.
Карта памяти, в зависимости какой тип используется, может потреблять ток при инициализации до 100 мА и это большой ток для батареи питания. Конденсатор С5 помогает удерживать напряжение в процессе инициализации, и необходимо, чтобы он имел большую емкость, но не слишком большую, т.к. заряжается он через 3 линии ввода/вывода микроконтроллера. Опытным путем было установлено, что конденсатора емкостью 10 мкФ достаточно для многих SD карт памяти.
Источник питания – две батареи типа CR2032 включенных параллельно, в таком случае напряжение питания программатора будет 3.0 В, но емкости данных батареек не хватит чтобы питать целевой микроконтроллер – падение напряжения сделает невозможным процесс программирования или может повредить данные на SD карте памяти. Возможно подключение батареи с большей емкостью (например, от мобильного телефона), но помните, что максимальное напряжение питания не должно превышать 3.6 В.
Программатор работает только от напряжения получаемого от батареек, не установлено никаких регуляторов напряжения. Процесс программирования целевого микроконтроллера может проходить при питании его от 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 мкА (типовое значение).
Печатная плата размерами 39 мм × 44 мм × 5.5 мм, двухсторонняя.
Следует обратить внимание на один важный момент в аппаратной части программатора - по сигнальным линиям MOSI и SCK включены защитные резисторы номиналом от 33 до 330 Ом (на схеме программатора они не указаны). Это позволит защитить чип программатора при программировании микроконтроллеров с питанием 5 В.
Включение резисторов показано на схеме ниже.
Обновленное ПО и сам процесс обновления мы рассмотрим в 3 части статьи.
Часть 2. Описание функций и опций, режимы работы, тестирование скорости работы
Загрузки
Принципиальная схема (Eagle 5.10, PDF), рисунки печатной платы (Eagle 5.10, PDF), список компонентов - скачать
Рисунок печатной платы ver.1.1 (с защитными резисторами интерфейса программирования) -скачать
Перевод: Vadim по заказу РадиоЛоцман

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

Введение

   Чтобы “оживить” микроконтроллер AVR, в его flash память нужно записать прошивку. Это процедура выполняется с помощью программатора - устройства, подключаемого между компьютером и микроконтроллером и работающего под управлением специальной программы.
   Наиболее популярным способом программирования микроконтроллеров AVR является внутрисхемное программирование по SPI интерфейсу. Как понятно из названия, этот способ позволяет программировать микроконтроллеры AVR прямо в составе схемы. Это очень удобно, потому что программу микроконтроллера в этом случае можно всегда модифицировать, не вынимая (не выпаивая) его из платы.
   Для внутрисхемного программирования микроконтроллеров AVR нужно вывести на разъем линии SPI интерфейса  - SCK, MISO, MOSI, линию сброса – RESET, а также плюс и минус питания (VCC и GND). 
   Существует две стандартных конфигурации разъема программирования – десяти и шести выводной. В качестве разъемов обычно используют — прямые/угловые разъемы серии IDC или   штыревые вилки PLD.
разъем для программирования AVR

Схема

   Принципиальная схема простого внутрисхемного программатора для AVR приведена на рисунке ниже. Разъем Х1 подключается к COM порту компьютера, а Х2 с помощью кабеля соединяется с платой.

схема AVR программатора
   Номиналы и типы элементов программатор понятны из схемы. Диод D1 можно заменить на 1N4148 или любой другой. Стабилитроны D2, D3 можно заменить аналогичными с напряжением стабилизации 5.1 или 4.7 вольт, например отечественными КС147А/2С147А (номиналы резисторов R3, R3 при этом нужно уменьшить до 2 Ком).

AVR программатор, собранный на макетной плате
AVR программатор - макет

AVR программатор, собранный на печатной плате
AVR программатор, собранный на печатной плате

PonyProg

   Прошивка микроконтроллера этим программатором осуществляется с помощью программы PonyProg. Скачиваем программу софициального сайта (v2.07c BETA для windows). Устанавливаем и запускаем ее.

   При первом запуске программа предупредит вас о том, что нужно провести калибровку и настроить PonyProg.
Запускаем калибровку — Setup > Calibration. В открывшемся диалоговом окошке жмем кнопку Yes. 
Настраиваем PonyProg для работы с этим программатором - Setup > Interface Setup
В появившемся меню нужно только выбрать номер COM порта и нажать ОК. 

  Далее... Выбираем тип программируемого устройства — Device > AVR micro > ваш микроконтроллер.
Открываем файл прошивки File > Open Program (FLASH) File...  
Не забудьте выбрать тип файла *.hex!

   Теперь можно программировать микроконтроллер. 
Стираем его flash память - Command > Erase
Прошиваем новую программу - Command > Write Program (FLASH)
Наслаждаемся работой микроконтроллера. 

  Можно немного автоматизировать эту процедуру.
Выбираем Command > Program Options
В открывшемся окне ставим галочки Erase и Write Program memory (FLASH). Жмем ОК.
Теперь стирание и программирование микроконтроллера будет выполняться одной командой — Command > Program.

Все перечисленные действия можно выполнять с помощью кнопок, расположенных под строкой меню. 

Также PonyProg позволяет работать с EEPROM памятью, Fuse и Lock битами микроконтроллеров AVR. 

Файлы

Печатка в формате Eagle - avr-programmator.brd

Программатор PonyProg2000

Если вы хотите сделать программатор, тогда эта страничка для вас!!!
      С помощью этого программатора, себестоимость которого оценивается всего в 100 рублей, можно программировать такие серии микроконтроллеров (МК), как - "PIC16F8x", "PIC12C50x", "PIC16F87x". За основу текста, были взяты статьи из журналов "Радио №6, №7 за 2001г" . Те, кому необходимо программировать контроллеры фирмы "Atmel", или микросхемы памяти с последовательным интерфейсом I2C, таких фирм, как Microwire, SPI, NWM3060, SDE2506, то советую обратиться за помощью в этот журнал, либо на сайтwww.lancos.com, о котором будет рассказано ниже.

            Немного теории

     МК с FLASH-памятью программ рассчитаны на 1000 и более циклов перепрограммирования. Они наилучшим образом подходят для разработки опытных образцов изделий и любительского конструирования. К их числу относятся МК семейств AT89S, AT90S (AVR)фирмы ATMEL и те из PICmicro, в названии которых имеется буква F (PIC16F84, PIC16F876).
     Сегодня почти всё необходимое для программирования, в том числе источники повышенного напряжения и генераторы сложных импульсных последовательностей, находится внутри самих МК. Число выводов, соединяемых с программатором, сокращено до минимума. Обычно достаточно линии синхронизации, одной-двух линий для передачи последовательным кодом команд, адресов и данных и еще одной для подачи сигнала, переводящего МК в режим программирования. Справедливости ради отметим, что наряду с "последовательным" в некоторых многовыводных МК сохранен режим "параллельного" программирования, причем возможности последнего, как правило, шире, чем первого.
     Аппаратная часть программатора во многих случаях превратилась в простой буфер, согласующий логические уровни сигналов одного из портов компьютера и МК. Сравнительно сложной она остаётся лишь у приборов, способных работать с программируемыми микросхемами различных типов. В них либо приходится устанавливать множество панелей (под разные микросхемы), либо предусматривать непростую систему электронной коммутации выводов единственной панели.

            О программаторе

     В любительских условиях довольно сложно изготовить полноценный универсальный программатор. Да и делать этого не имеет смысла. Достаточно собрать простейший базовый блок, по мере надобности дополняя его столь же простыми переходными панелями (адаптерами) для программирования микросхем того или иного типа. Именно так построен известный многим посетителям Интернета программатор PonyProg2000, разработанный итальянцем Клаудио Ланконелли. На сайте www.lancos.com помещены схемы узлов этого программатора, программное обеспечение к нему и описание пунктов экранного меню.
     Принципиальная схема (переработанного мною) базового блока программатора PonyProg2000 изображена на рисунке 1. Разетку XT1 стыкуют с вилкой одного из последовательных (СОМ) портов компьютера через кабель длиной до 1 м, в котором контакты вилки и розетки соединены "один к одному". Учтите, что распространенный "нуль-модемный" кабель с перекрестным соединением контактов в данном случае непригоден.
 
Рисунок 1. Принципиальная схема базового блока программатора.

     Преобразование логических уровней сигналов на выходах порта в требуемые для программирования осуществляется простейшим способом - с помощью ограничителей напряжения из резисторов R4, R5, R6 и стабилитронов VD3, VD6, VD7. В оригинальной конструкции применены стабилитроны с напряжением стабилизации 5,1 В, поэтому заменять их на КС156А не следует.
     Каскад на транзисторе VT3 инвертирует сигнал, формируемый компьютером на выводе 3 СОМ-порта. В результате на контактах 2 и 3 вилки ХT3 образуются два взаимно инверсных импульса сброса. Используют тот, полярность которого соответствует необходимой для конкретного МК. Перемычка между выводами 6 и 7 розетки XT2 позволяет компьютеру убедиться, что программатор подключен к порту.
     Принципиальная схема адаптера для программирования МК серий "PIC16F8x", "PIC12C50x", "PIC16F87x", показана на рисунке 2.
 
Рисунок 2. Принципиальная схема блока адаптера программатора.

     По цепи контакт 6 ХT3 - контакт 8 XT2 в компьютер поступают считываемые из МК данные. Может возникнуть вопрос: каким образом входной узел СОМ-порта, зона нечувствительности которого к помехам согласно стандарту RS-232 не должна выходить за пределы ± 3 В, без всяких преобразований принимает формируемый МК сигнал с ТТЛ-уровнями? Оказывается, оба пороговых уровня (срабатывания и отпускания) триггеров Шмитта, установленных на подобных входах большинства современных компьютеров, находятся в интервале +1,5...2,5 В. Отличие этих входов от обычных ТТЛ лишь в способности выдерживать беэ повреждения напряжение до ± 25 В. С СОМ-портом, выполненным строго по стандарту, программатор PonyProg2000 (как, впрочем, и многие другие) работать не будет, придётся вводить в него источник отрицательного напряжения и дополнительный преобразователь уровня.
     Печатная плата программатора, представлена, на рисунке 3 - вид платы снизу (в зеркальном отражении), и на рисунке 4 - вид платы сверху. Как видите, её размеры не велики, и это притом, что на ней одновременно расположены оба блока: слева - базовый блокпрограмматора, а справа - блок адаптера. Но, тем не менее, возможность смены блока адаптера для других МК, не исключена. Эти два блока на плате соединяются через разъёмы XT3 и XT4. При необходимости собирается схема необходимого адаптера, и соединяется с базовым блоком через разъём XT3.
 
Рисунок 3. Печатная плата программатора. Вид снизу.

 
Рисунок 4. Печатная плата программатора. Вид сверху.

     Схема программатора и его печатная плата, спроектированы в пакете Pcad2001. Вы можете скачать себе все необходимые файлы здесь - Программатор в Pcad2001 [72 кб]. При необходимости изменить печатную плату, вам может потребоваться библиотека используемых в программаторе элементов. Её вы так же можете скачать - Библиотека Pcad2001.
     Результат работы изображён на рисунке ниже.
 
Рисунок 5. Плата программатора.

            О программировании

     Программирование всегда начинают с включения питания МК и подачи (обычно - на вход сброса) сигнала, разрешающего переход в режим чтения внутренней памяти и программирования. Иногда в момент перехода должны быть выполнены дополнительные условия, например, установлены определённые логические уровни на выводах, используемых для программирования. Эти и многие другие меры предосторожности призваны предотвратить случайное искажение содержимого памяти МК.
     Информация между МК и программатором передается поразрядно последовательным кодом, причём каждый разряд сопровождается по линии синхронизации (CLOCK, CLK, SCK) импульсом, генерируемым программатором. Длительности импульсов и пауз между ними ограничены, как правило, лишь минимальными допустимыми значениями, конкретные выбирают исходя из возможностей программатора и управляющего им компьютера.
     Подразумевается, что в исходном состоянии для программирования выбрана ячейка с нулевым адресом. Однако если длительность изменения уровня на выводе MCLR от нулевого до разрешающего программирование превысит определенное значение, состояние программного счетчика может измениться и все записываемые коды окажутся смещенными на несколько ячеек. Чтобы этого не случилось, достаточно соединить вывод 16 (OSC1) МК с общим проводом, что надежно заблокирует внутренний тактовый генератор. Сделать это позволяет перемычка XT5. Вывод 15 (OSC2) должен остаться свободным.
     Цикл программирования одной ячейки начинается командой "Загрузить данные...", сопровождаемой предназначенными для записи в нее данными. Шести разрядный код команды поступает в МК, начиная с младшего разряда. Аналогичным образом передают данные, причем 14-разрядное содержимое ячейки FLASH-памяти "обрамляют" с обеих сторон нулями, а восьмиразрядный код, предназначенный для записи в ЕЕPROM, дополняют восемью нулями, один из которых следует до записываемого кода, а остальные - после. Затем подают команду "Начать программирование" и спустя 10 мс проверяют содержимое ячейки с помощью команды "Читать данные...", Далее подают команду "Перейти к следующей ячейке" и повторяют описанную процедуру до тех пор, пока не будет запрограммирована последняя ячейка. Обычно начинают с программирования памяти программ, затем переходят к ячейкам идентификации, конфигурации и EEPROM.
     Заканчивают программирование, как правило, контрольным считыванием записанных данных, снятием сигнала разрешения программирования и выключением питания, после чего МК можно извлечь из панели. Чтобы гарантировать надежность программирования своих МК, фирма Microchip рекомендует проверять содержимое их памяти при нескольких значениях напряжения питания - от минимального до максимально допустимого.
     Рассказ о процедуре программирования МК PIC16F84 помещен здесь лишь для иллюстрации и не содержит многих существенных подробностей. У МК других типов перечень, формат и порядок применения команд программирования могут существенным образом отличаться от описанного.
     Завершая раздел, опишем обычную последовательность действий, которые необходимо выполнить, чтобы запрограммировать МК:

  • подготовьте HEX или двоичный (.bin) файл с исходными данными для программирования. Он может быть результатом работы, например, ассемблера или набран вручную;
  • подключите аппаратную часть программатора к компьютеру. Это лучше делать при выключенном питании;
  • включите питание компьютера и запустите программу, обслуживающую программатор;
  • включите собственный источник питания программатора. После этого компьютер должен автоматически или по соответствующей команде "опознать" программатор. Появление сообщения об ошибке означает, что с подключением не все в порядке, например, неправильно выбран порт компьютера;
  • выберите из меню программатора тип программируемой микросхемы (иногда это делается автоматически), после чего установите ее в панель прибора и подайте команду проверки "чистоты". При отрицательном результате придется стереть старые данные предусмотренным для данного МК способом - ультрафиолетовым облучением или электрически. В меню программатора для последнего варианта предусмотрена специальная команда. После стирания повторите проверку "чистоты";
  • загрузите в буферную память программатора данные из подготовленного ранее файла. Многие программаторы предоставляют возможность до программирования просмотреть загруженные в буфер данные на экране в виде дампа и даже внести изменения;
  • найдите в меню программатора и подайте команду "Программировать".


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

USB-программатор микроконтроллеров AVR для среды Algorithm Builder.



USB-программатор для Algorithm Builder

   На данной странице представлена необходимая и достаточная информация для самостоятельной сборки внутрисхемного программатора микроконтроллеров Atmel AVR, предназначенного для работы из под среды программированияAlgorithm Builder. Программатор подключается к персональному компьютеру посредством интерфейса USB.

   Algorithm Builder - среда разработки микропрограмм для микроконтроллеров корпорации Atmel семейства AVR. Среда является отечественным аналогом Ассемблера, позволяющим, однако, не "писать" программы, а "рисовать" их в очень удобной графической форме:

Среда разработки программ для микроконтроллеров Algorithm Builder

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

Поиск инструкции к среде Algorithm Builder

   ...или просто нажав кнопку "F1" клавиатуры, ближе к концу представлена схема программатора на микроконтроллере, собрав которую можно программировать и даже отлаживать различные устройства прямо из самой среды Algorithm Builder:

Схема программатора из инструкции на Algorithm Builder

   Данная схема является лишь принципиальной и собрать по ней готовое устройство невозможно. Кроме того, схема имеет существенный недостаток - собранный по ней программатор способен работать только через COM-порт, который нынче стал редкостью.
   Тем не менее, эта схема была взята за основу, дополнена необходимыми компонентами, а вместо "TTL to RS232" конвертора применена микросхема FT232RL, производимая корпорацией FTDI.
   Микросхема FT232RL является конвертором интерфейса USB в интерфейс RS-232 (СОМ-порт), определяется в Windows-е как виртуальный COM-порт, и позволяет создавать устройства с физическим интерфейсом USB, несмотря на то, что изначально эти устройства были предназначены для работы лишь с СОМ-портом.
   Кроме того, в схему добавлена гальваническая развязка цепей программирования от цепей интерфейса USB, с допустимым пиковым напряжением до 400В. Таким образом, программатором можно программировать устройства, находящиеся под фазным напряжением сети 220/380В не боясь повредить устройство или персональный компьютер.

   Итак, чтобы внести окончательную ясность, перечислим достоинства и недостатки предлагаемого программатора.

   Достоинства:
      - Интерфейс USB - можно использовать как со стационарным настольным компьютером, так и с ноутбуком;
      - Имеет гальваническую развязку цепей программирования от цепей интерфейса USB с допустимым пиковым напряжением до 400В;
      - Питается через USB, поэтому не требует внешнего питания;
      - Имеет достаточно сильноточные выходы цепей программирования, благодаря чему можно программировать даже микроконтроллеры, на цепях программирования которых находится достаточно большая нагрузка (например, светодиодный индикатор);
      - Процесс программирования происходит достаточно быстро. Во много раз быстрее, чем, например, у программатора AVR910;
      - После завершения процедуры программирования, цЕпи программатора переводятся в высокоимпедансное состояние и не влияют на работу программируемого устройства. Это особенно удобно во время отладки микропрограмм, т. к. становится не обязательным отключать программатор от налаживаемого устройства после завершения процедуры программирования;
      - Имеет встроенную функцию отладки устройства с мониторингом состояния программируемого микроконтроллера (средствами среды программирования Algorithm Builder). Данная функция позволяет в реальном времени наблюдать состояние внутренних регистров микроконтроллера и изменять их значения (подробнее об этом в инструкции на Algorithm Builder).


   Недостатки:
      - Работает только со средой программирования Algorithm Builder;
      - Содержит в своем составе микроконтроллер, который изначально будет необходимо чем-то запрограммировать (другим программатором).

   Полная схема USB-программатора для Algorithm Builder с учетом описанных особенностей выглядит так:


   AB_USB.SCH.rar (54.5кБ) - схема USB-программатора для Algorithm Builder в формате P-CAD 2006:

Схема USB-программатора для Algorithm Builder в формате P-CAD 2006

   Конструктивно программатор представляет собой печатную плату. Плата двусторонняя, изготовлена по моим чертежам заводом Резонит:

Печатная плата USB-программатора для Algorithm Builder Печатная плата USB-программатора для Algorithm Builder

   АВ_USB.PCB.rar (61.1кБ) - файл трассировки печатной платы программатора в формате P-CAD 2006:

Трассировка платы USB-программатора для Algorithm Builder в формате P-CAD 2006

   Исполнение программатора безкорпусное, а для защиты схемы от внешних воздействий, плата программатора с двух сторон была залита эпоксидным компаундом:

USB-программатор для Algorithm Builder USB-программатор для Algorithm Builder

   Для подключения кабеля программирования на программаторе предусмотрен разъем DRB9M:

Разъем DB9 для подключения кабеля программирования на USB-программаторе Algorithm Builder

   Внимание! Это НЕ СОМ-порт, как может показаться с первого взгляда - этот разъем предназначен для подключения только кабеля программирования:

USB-программатор для Алгоритм Билдер

   В своих разработках в качестве разъема для программирования микроконтроллеров я обычно применяю вот такой тип разъемов:

Разъем программирования Разъем программирования

   Поэтому кабель программирования заканчивается соответствующим "разъемом программирования":

Разъем программирования

   Кабель программирования подключается к программируемому устройству и может оставаться подключенным на все время отладки программы - как мы помним, работе устройства после завершения процедуры программирования наш USB-программатор не мешает:

Разъем программирования

   В серийных изделиях разъем программирования можно вообще не устанавливать, а вместо него делать лишь контактные площадки:

Контакты программирования

   В этом случае программатор необходимо дополнить специальным переходником,

Переходник для программирования устройств без разъема программирования

   а процесс программирования можно производить просто прижимая эти "иголки" к контактным площадкам на плате:

"Прошивка" устройства без разъема для программирования

   Обратите внимание, что и на плате нашего USB-программатора для "прошивки" его собственного микроконтроллера предусмотрены такие же контактные площадки программирования:

Печатная плата USB-программатора для Algorithm Builder

   Если необходимо воспользоваться функцией отладки микропрограммы с мониторингом состояния программируемого микроконтроллера (средствами среды программирования Algorithm Builder), необходимо будет обзавестись дополнительным кабелем, наподобие кабеля программирования, но содержащим не только цепи программирования, но и цепи отладки микропрограммы. Цепь отладки микропрограммы выведена на разъем DB9 программатора, но в описанном выше кабеле программирования не задействована.
   Сам я функцией отладки микропрограмм с мониторингом состояния программируемого микроконтроллера ни разу не воспользовался, поэтому и кабеля для реализации этой функции никогда не делал.

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


   Когда драйверы будут установлены, необходимо сконфигурировать чип FT232RL для правильной работы, с учетом особенностей схемы нашего USB-программатора.
   Специальную утилиту для конфигурирования микросхемы FT232RL можно скачать с официального сайта FTDI, а можно взять и с данного сайта по ссылке ниже (возможно, она будет не самой последней версии, но зато опробована мною лично):

   FTDI_MProg_3.5.rar (1.48МБ)

   В данном архиве находится (в том числе) файл нужных настроек для чипа FTDI USB-программатора, путь к нему:

   ...\УТИЛИТА FTDI MProg 3.5\Templates\ПРОГРАММАТОР AB USB.ept

   После запуска утилиты необходимо в ней открыть этот файл настроек. Вы должны увидеть следующее:

Утилита конфигурирования чипов FTDI

   Убедившись что наш программатор все еще подключен к USB-порту компьютера, а также убедившись в том, что к компьютеру более не подключены какие-либо иные устройства с чипами FTDI, нажимаем кнопку с изображением "молнии", и через несколько мгновений утилита в нижнем окне должна сообщить что-то типа такого:

   Programmed Serial Number : FTU3VXNP

   Теперь, если отключить и подключить заново наш программатор к компьютеру, Windows найдет новое устройство с названием "ALGORITHM BUILDER PROGRAMMER", драйвера к нему теперь будут определены автоматически.

   Настройка чипа FTDI FT232RL, входящего в состав USB-программатора для Алгоритм Билдер, на этом завершена.

   Теперь нам необходимо запрограммировать микроконтроллер USB-программатора. Микропрограмма микроконтроллера для программатора разработана самим Геннадием Громовым - разработчиком Algorithm Builder-а, и после установки на компьютере среды Algorithm Builder находится по умолчанию по следующему пути:

   C:\Program Files\Algorithm Builder\V543\COMM ADAPTER\ALG\CommAdapter.alp

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

   AB_USB.PROG.rar (19.3кБ)

   Запрограммировать микроконтроллер нашего USB-программатора можно и нужно с помощью все той же среды программирования Algorithm Builder, однако потребуется сторонний программатор. В этом случае, можно собрать схему простого программатора, работающего через COM-порт. Эта схема также приведена в инструкции на Algorithm Builder. В применении к программированию микроконтроллера нашего USB-программатора она будет выглядеть так:

Схема для программирования микроконтроллера USB-программатора

   Данное устройство понадобится только один раз, чтобы запрограммировать микроконтроллер USB-программатора, затем оно станет не нужным, так что собрать его можно просто "на коленке" из подручных материалов в "одноразовом" исполнении.

   Кроме того, для правильной работы микроконтроллера программатора необходимо запрограммировать его Fuse Bits в соответствие с рисунком ниже:

Установка Fuse Bits для микроконтроллера USB-программатора

   БУДЬТЕ ВНИМАТЕЛЬНЫ! Установка галок должна в точности соответствовать этому рисунку. Неверная установка Fuse Bits может привести к полной неработоспособности микроконтроллера программатора.

   Начиная с этого момента, если все было сделано правильно и в соответствие с описанием выше, наш USB-программатор для Algorithm Builder начинает работать должным образом.

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

   Для удобства монтажа компонентов на печатную плату USB-программатора, предоставляю перечень компонентов с позиционными обозначениями (куда какой) (в формате Excel 2003):

Перечень компонентов "куда какой" для USB-программатора для Алгоритм Билдер

   АВ_USB.CK.rar (5.39кБ)

   Для удобства закупки компонентов для сборки USB-программатора предоставляю перечень компонентов для заказа (чего и сколько) (в формате Excel 2003):

Перечень компонентов "чего и сколько" для USB-программатора для Алгоритм Билдер

   АВ_USB.ZK.rar (4.96кБ)

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


   На данной странице представлена вся необходимая информация и проектная документация для самостоятельного повторения данной конструкции. Тем не менее, если Вы не желаете собирать USB-программатор для Алгоритм Билдер-а самостоятельно, но все же хотите его иметь, Вы можете обратиться ко мне и я с удовольствием соберу для Вас точно такой же.
   Его цена составит 5 тыс. руб.