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

31 дек. 2013 г.

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

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

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

     МК с FLASH-памятью программ рассчитаны на 1000 и более циклов перепрограммирования. Они наилучшим образом подходят для разработки опытных образцов изделий и любительского конструирования. К их числу относятся МК семейств AT89SAT90S (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) файл с исходными данными для программирования. Он может быть результатом работы, например, ассемблера или набран вручную;
  • подключите аппаратную часть программатора к компьютеру. Это лучше делать при выключенном питании;
  • включите питание компьютера и запустите программу, обслуживающую программатор;
  • включите собственный источник питания программатора. После этого компьютер должен автоматически или по соответствующей команде "опознать" программатор. Появление сообщения об ошибке означает, что с подключением не все в порядке, например, неправильно выбран порт компьютера;
  • выберите из меню программатора тип программируемой микросхемы (иногда это делается автоматически), после чего установите ее в панель прибора и подайте команду проверки "чистоты". При отрицательном результате придется стереть старые данные предусмотренным для данного МК способом - ультрафиолетовым облучением или электрически. В меню программатора для последнего варианта предусмотрена специальная команда. После стирания повторите проверку "чистоты";
  • загрузите в буферную память программатора данные из подготовленного ранее файла. Многие программаторы предоставляют возможность до программирования просмотреть загруженные в буфер данные на экране в виде дампа и даже внести изменения;
  • найдите в меню программатора и подайте команду "Программировать".


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