Главная » Статьи » ПРОГРАММЫ |
Устанавливаем PonyProg на компьютер Набрав в Интернет-браузере адрес http://www.lancos.com/ppwin95.html , увидим на экране картину, подобную показанной на рис. 14, со списком версий программы PonyProg. Возможно, к моменту публикации данной статьи список станет еще длиннее. В самой нижней его части — последняя англоязычная версия программы (2.07с).
Рис.14
Что же "скачать"? Прежде всего, "щелкнув" по надписи "v2.07c BETA",
оригинальный англоязычный вариант. (Так же скачать можно с нашего
сервера, щелкнув по ссылке внизу статьи) В полученном файле-архиве
ponyprogV207c.zip находится программа-установщик setup.exe. После
запуска она автоматически установит PonyProg на компьютере. От
пользователя потребуется лишь отвечать согласием на все выводимые на
экран запросы.
Это даст возможность по выбору запускать английский или русский
варианты программы. Однако без установки первой вторая не работает.
Учтите также, что русифицированный вариант относится к версии 2.05 и не
содержит новшеств, появившихся в более поздних версиях, в том числе
расширенного списка программируемых микросхем.
Запуск и настройка PonyProg
Закройте его, нажав кнопку "ОК". Тут же одно за другим появятся два предупреждения (рис. 15), которым мы последуем чуть позже, а пока просто закроем их, нажимая "ОК". Учтите, что в русском тексте предупреждений меню "Установки" ошибочно названо "Настройки". Аналогичная ошибка имеется и в английском варианте. Меню "Setup" названо "Options".
Если адаптер программирования до сих пор не подключен к компьютеру, сейчас самое время это сделать. Выберем в главном меню пункт "Установки", а в нем — "Настройка оборудования". На экране появится окно "Настройка платы программатора", показанное на рис. 16, укажем в нем тип порта (последовательный или параллельный), к которому подключен адаптер, и его имя (например, СОМ1). При нажатии кнопки со стрелкой вниз в соответствующем окошке "выпадет" список адаптеров, с которыми способна работать программа. Для последовательного порта список состоит всего из трех строк:
Как уже было сказано, SI Prog — оригинальный набор адаптеров,
разработанных автором программы PonyProg специально для нее. О них можно
прочитать в [6]. Схема адаптера JDM приведена на рис. 3
первой статьи. Пометки API и I/O определяют способ общения программы с
портами компьютера. В первом случае она использует стандартные функции
Windows API (интерфейса прикладных программ Windows), во втором —
обращается к портам "напрямую". Второй метод более эффективен, но, к
сожалению, не все версии Windows его допускают. Поэтому во избежание
неприятностей выбирайте API. На адаптеры, подключаемые к параллельному
порту компьютера, программу настраивают аналогичным образом.
Последний
этап настройки — выбор типа программируемой микросхемы. Чтобы выполнить
его, нужно выбрать в главном меню пункт "Устройство" и на экране
появится список семейств микросхем, которые можно запрограммировать с
помощью PonyProg. Выбрав одно из них, получим список входящих в него
микросхем (рис. 17, показано окно версии 2.07с). Если
микросхема была выбрана ранее, она помечена "галочкой".Чтобы сделать или
изменить выбор, достаточно щелкнуть по названию нужной микросхемы.
Списки исчезнут с экрана, а выбранное название появится в специальном
окне в верхнем правом углу окна PonyProg. Еще в одном окне слева от
упомянутого указано название семейства микросхем. Эти окна дают
возможность выбирать семейство и микросхему в нем, не открывая меню
"Устройство". Достаточно нажать в соответствующем окне кнопку со
стрелкой вниз, чтобы "выпал" список, из которого можно сделать выбор. Интересно, что в списке микроконтроллеров семейства AVR имеется строка AVR Auto. Выбрав ее, мы даем программе возможность автоматически распознать вставленную в панель адаптера микросхему этого семейства. Дело в том, что все они снабжены специальным внутренним ПЗУ, в котором хранится "сигнатура" — три байта, однозначно определяющих тип микросхемы. Значения сигнатур указаны в справочных данных (datasheet-ax) микросхем.
Однако программатор сможет прочитать сигнатуру лишь в том случае, если в
микросхеме не включена защита кода, делающая все содержимое ее памяти
недоступным для внешнего мира. Подобной защитой охотно пользуются
производители микроконтроллерных устройств, стремясь защитить свою
продукцию от пиратского копирования. Вдобавок ко всему они еще и стирают
название микросхемы с ее корпуса.
Загрузка исходных данных
Итак, выберем пункт "Файл" главного меню, а в нем — один из пунктов
"Открыть файл с данными...", "Открыть файл программы (FLASH)..." или
"Открыть файл данных (EEPROM)...". Первым пунктом пользуются, если
загружаемый файл содержит информацию для всех областей памяти
программируемой микросхемы. Таковы файлы формата Е2Р, а также НЕХ-файлы
для микроконтроллеров семейства PICmicro. Второй и третий пункты
загружают в соответствующие области памяти микроконтроллера данные из
разных файлов. Учтите, что имена НЕХ-файлов для загрузки EEPROM
микроконтроллеров семейства AVR обычно имеют расширение .еер.
Рис.18
В списке будут содержаться лишь те файлы, имена которых имеют
расширение, указанное в окне "Тип файлов". Нажав в нем кнопку со
стрелкой вниз, можно перейти к файлам с другими расширениями или (выбрав
"*") получить список всех файлов, имеющихся в папке. Файл будет
загружен после двойного щелчка по его имени в списке либо после
одинарного щелчка (его имя появится в окне "Имя файла" и нажатия на
кнопку "Открыть". Можно также ввести нужное имя непосредственно в окно
"Имя файла" с клавиатуры.
Она состоит из строк, начинающихся с отделенного скобкой адреса
первого байта строки. Затем следуют шестнадцатиричные значения 16-ти
байтов с последовательно возрастающими адресами (для удобства они
разделены тире на две группы по восемь) и далее — символьное
представление тех же байтов.
Последние строки, выделенные цветом, отображают содержимое буфера памяти данных (EEPROM). Команда "Открыть файл программы (FLASH)..." оставляет его незаполненным. Информация здесь появится только после выполнения команды "Открыть файл данных (EEPROM)..." (рис. 21). Обратите внимание, что изменилось и имя в заголовке окна. Оно соответствует последнему загруженному в буфер файлу.
Необходимо учитывать, что адреса ячеек буфера EEPROM не соответствуют действительным адресам ячеек этой области памяти микроконтроллера. В PonyProg они просто продолжают адресацию буфера памяти программ (FLASH). В рассматриваемом случае байты по адресам 400Н— 43FH отображают содержимое ячеек EEPROM микроконтроллера AT90S1200 с адресами 0—3FH.
Правая часть окна буфера программатора, как уже сказано, отображает его
содержимое в символьном виде. Это полезно, если в программных кодах
имеются какие-либо текстовые сообщения. Чаще всего — предназначенные для
вывода на индикатор микроконтроллерного прибора. Но иногда автор
программы "маскирует" внутри нее какие-либо дополнительные сведения,
например название программы, номер ее версии, а то и собственные фамилию
и имя, и даже номер телефона и адрес. Просматривая шестнадцатиричный
код, все это трудно заметить, зато в символьном виде такая информация
сразу бросается в глаза. Нерусифицированная v. 2.07с выводит их правильно, в полном соответствии с "кодовой страницей 1251", как показано на рис. 22.
Изображено окно буфера программатора с загруженным в него специально подготовленным файлом, содержащим последовательность байтов 0—0FFH
А у меня нет файла с программой микроконтроллера...
В "шестнадцатиричной" части окна у ячейки с нулевым адресом появится
мигающий курсор. Если теперь нажать левую нопку мыши или клавишу Enter,
будет открыто окно редактирования содержимого ячейки, показанное на рис.
23.
Ввод кодов в разных форматах имеет некоторые особенности. Например,
если шестнадцатиричное окно содержит три и более цифры, учтены будут
лишь две старших (левых). Аналогично ведет себя и символьное окно, но в
нем имеет значение только один, самый левый символ. А при вводе в
десятичное окно числа, находящегося вне интервала 0—255, будут учтены
только три старших разряда, причем в ячейку буфера будет записан остаток
от деления представленного ими значения на 256.
Для ввода длинной строки символов, можно установить курсор на ее начало в правой, символьной части окна буфера. После щелчка мышью появится окно, изображенное на рис. 24, в которое и вводят нужный текст. Учтите, "старое" содержимое буфера при таком вводе автоматически не уничтожается, а лишь сдвигается в сторону больших адресов. Поэтому прежде, чем нажимать клавишу OK, не забудьте стереть лишнее.
Несколько слов о том, как в публикуемых таблицах "прошивки"
микроконтроллера найти нужные для ввода коды. Несколько лет назад
подобные таблицы чаще всего представляли собой шестнадцатиричный "дамп"
памяти. Они очень похожи на то, что находится в окне буфера РопуРгод, и
по этой причине удобны для ручного ввода. Позже в связи с
распространением программаторов, читающих исходные данные из НЕХ-файлов,
перешли на публикацию текста этих файлов.
Выделенные полужирным шрифтом нули в восьмой и девятой позиции строки
НЕХ-файла — признак, что она содержит данные. Строки с другими символами
в этих позициях — служебные, на них при ручном вводе, как правило,
можно не обращать внимания. В строке не обязательно 16 байтов данных,
может быть и больше, и меньше. Но адрес (на рис. 25 подчеркнут) всегда
относится к первому из них. Два последних символа НЕХ-строки —
контрольную сумму — в буфер не заносят. Ручной ввод данных, предназначенных для записи в EEPROM микроконтроллеров серии PICmicro, усложняет то, что в отличие от микроконтроллеров многих других серий ассемблер, транслируя программу, помещает эти данные в тот же файл, что и коды программы. Он присваивает им условные адреса, начиная С4200Н, причем байты данных чередуются с байтами (как правило нулевыми), не несущими никакой информации. Поэтому вводить данные в буфер EEPROM программатора следует так, как показано на рис. 26.
Набор кодов вручную занимает довольно много времени. Торопиться здесь
не стоит, лучше лишний раз убедиться в правильности выполняемых
действий. Если не удалось завершить работу за один сеанс, сохраните
промежуточный результат, выбрав в меню "Файл" один из пунктов
"Сохранить...". В зависимости от выбранного пункта будет сохранен весь
буфер либо только FLASH, либо только EEPROM. Предварительно будет задан
вопрос, какое имя присвоить файлу. Учтите, при некоторых неправильных
действиях, может появиться сообщение об ошибке записи. В подобном случае
попробуйте сохранить данные FLASH и EEPROM в разных файлах или в другом
формате.
Записав промежуточный результат, PonyProg можно закрыть. Чтобы продолжить работу в удобное время, достаточно, запустив PonyProg, загрузить в буфер сохраненный файл (файлы).
Не забудьте о конфигурации ! Окно управления конфигурацией открывается в PonyProg при выборе пункта меню "Команды" — "Security and Configuration Bits...". Почему-то его название не переведено на русский язык даже в "русифицированной" программе. Вид окна зависит от типа микроконтроллера. Показанное на рис. 28 относится к PIC16F628.
Если загруженный в буфер программатора файл содержал данные о конфигурации, в окошках рядом с названиями битов будут расставлены "галочки".
При необходимости их можно убрать или поставить самостоятельно, щелкая
мышью по окошкам. Назначение битов в рассматриваемом случае следующее:
MCLRE — вывод 4 микросхемы служит входом сигнала
установки микроконтроллера в исходное состояние MCLR (1) или обычным
цифровым входом RA5 (0).
F0SC2—FOSCO — тип тактового генератора и режим работы выводов 15 и 16 микроконтроллера:
К сожалению в документации на микроконтроллеры серии PICmicro нет
четких критериев, по которым следует относить резонаторы к группам HS,
XT или LP. Чаще всего подходит вариант XT. Но если генератор не
возбуждается или работает неустойчиво, а подборка подключенных между его
выводами и общим проводом конденсаторов не помогает, попробуйте и
другие варианты конфигурации. Возможно параметры использованного при
повторении конструкции кварца значительно отличаются от примененного ее
автором. Многие современные микроконтроллеры оснащены внутренним тактовым генератором, не требующим для своей работы никаких внешних элементов.
Частоту этого генератора подстраивают программно, изменяя код в
специальном регистре микроконтроллера. Значение кода, соответствующее
номинальной частоте генератора (обычно из ряда 1, 2, 4 или 8 МГц),
найденное для данного экземпляра микроконтроллера при заводской
настройке, записывают в его память. В PonyProg для работы с калибровочным кодом предусмотрено два пункта меню "Команды". Первый из них ("Считать калибровочный байт ген.") позволяет получить значение этого кода из специальной памяти микроконтроллера и сохранить его в буфере по адресу, указанному с помощью второго пункта ("Настройка калибровки генератора", рис. 29). Если поставить "галочку" у надписи "Относительно памяти данных", код будет занесен не во FLASH, а в EEPROM.
Хочу предупредить, работа этих пунктов меню производит впечатление не
вполне отлаженной. Надеюсь, в новых версиях PonyProg недочеты будут
устранены. Хотелось бы обратиться к авторам конструкций на микроконтроллерах. Описывая их, не забывайте рассказывать об особенностях программирования конфигурации, а если необходимо, и установки частоты внутреннего генератора.
В упомянутом в подзаголовке меню среди пунктов, несомненно, полезных
при подготовке к программированию ("Очистить буфер", "Заполнить буфер"),
есть и такие, неосторожное исполнение которых может исказить
подготовленные к программированию данные, причем заметить внесенные
изменения "визуально" очень непросто.
Пункт "Установить серийный номер" используют для того, чтобы при записи одной и той же программы в несколько микросхем пронумеровать экземпляры. Результат его выполнения показан на рис. 3, в. Как видим, номер занесен в первые две ячейки буфера FLASH-памяти, в результате чего потеряны находившиеся там программные коды. Работать такая программа, естественно, не будет.
Если
нумерация действительно необходима, следует позаботиться о том, чтобы
номер оказался записанным в заведомо не используемые программой ячейки.
Установить адрес, по которому будет записан номер, позволяет пункт
"Установка серийного номера", открывающий окно, показанной на рис. 31.
Кроме адреса, здесь можно задать длину ("Размер") номера в байтах,
порядок их следования ("Формат") и начальное значение ("Число"). Формат
"Обратно" соответствует общепринятому порядку записи младшего байта по
меньшему адресу (равен указанному в окне "Адрес"), а старшего — по
большему. В формате "Прямо" порядок следования байтов от старшего к
младшему. Если выбран режим "Автоувеличение", значение номера
автоматически возрастает на единицу после каждого выполнения пункта
"Установить серийный номер", в противном случае оно остается неизменным.
Как показано на рис. 32, текущее значение CRC выведено в нижней части (строке состояния) главного окна PonyProg вместе с выбранным типом программируемой микросхемы и объемом ее памяти (суммой объемов FLASH и EEPROM). Те же сведения можно получить, выбрав в меню "Команды" пункт "Информация". К сожалению, CRC не указывает, значение какой именно ячейки изменено. Обнаружив искажение, придется либо просмотреть и сравнить с требуемыми значения по всех ячейках буфера, либо повторить операции по подготовке данных заново.
Программируем, наконец Если старое содержимое памяти может пригодиться, его, прежде чем стирать, следует прочитать и сохранить в файле. Если в буфере программирования уже находится подготовленная к записи информация, нужно создать еще один буфер с помощью пункта "Новое окно" меню "Файл". Затем перейти к меню "Команды" и выполнить один из пунктов "Считать все", "Считать программу (FLASH)" или "Считать данные (EEPROM)" в зависимости оттого, какая область памяти представляет интерес. На экране появится информация о ходе считывания (рис. 34), а затем — о его завершении (рис. 35).
Теперь можно, вернувшись в меню "Файл", сохранить информацию, как это делалось при ручной подготовке данных . После этого память микросхемы очищают командой "Стереть", а ненужное более окно закрывают. После возвращения в окно с подготовленными данными не спешите выбирать пункт "Программирование". О его использовании мы поговорим позже. Чтобы загрузить данные из буфера в микросхему, необходимо, в зависимости от того, какие из областей ее памяти вы собираетесь запрограммировать, выбрать один из пунктов "Записать все", "Записать программу (FLASH)", "Записать данные (EEPROM)". На экране появится предупреждение (рис. 36) — немного запоздалое, так как все "предыдущее содержимое" уже стерто.
Запись
начнется после нажатия на кнопку "Yes". О ее ходе сообщит окно,
подобное показанному на рис. 34, но с названием процесса — "Запись...".
По ее завершении будет автоматически выполнена сверка фактического
содержимого памяти микросхемы с содержимым буфера, о ходе которой
сообщит окно "Процесс - Проверка...". Если ошибок нет, об этом на экран
будет выведено сообщение (рис. 37). Теперь запрограммированный микроконтроллер можно извлекать из панели адаптера и устанавливать туда, где он должен работать. Сверку содержимого памяти и буфера можно произвести и с помощью команд "Проверить все", "Проверить программу (FLASH)" или "Проверить данные (EEPROM)". Но следует предостеречь — эти команды иногда сообщают о несуществующих ошибках. Дело в том, что FLASH-память микроконтроллеров серии PIC16 четырнадцатиразрядная. Максимальное значение кода в ячейке этой памяти — 0x3FFF. В буфере PonyProg под этот код отведено 16 разрядов (два байта), значение кода в которых после очистки буфера — OxFFFF. Некорректное сравнение этих значений и воспринимается как ошибка программирования. Так как подобные "ошибки" фиксируются не всегда, их анализ, по-видимому, ведется по-разному в разных ветвях алгоритма сравнения.
PonyProg_V207c.zip Источник: http://radio-hobby.org/modules/news/article.php?storyid=680 | |
Просмотров: 6308 | | |
Всего комментариев: 0 | |