Главная

Материал взят из книги


Скачать оригинал КНИГИ в хорошем качестве

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

Как вам уже известно, микросхема АТ89С2051 имеет встроенную электрически стираемую память программ объемом 2 килобайта. В исходном состоянии (сразу после изготовления микросхемы) во всех ячейках этой памяти записан код ОЕЕН. В процессе прошивки памяти программ в ячейки записываются коды управляющей программы. Затем эти прошитые коды можно прочитать для проверки. Для того, чтобы изменить прошивку (записать другую программу) память программ необходимо стереть. После стирания во всех ячейках снова появляется код ОРРН. Для защиты программы от считывания и несанкционированного копирования предусмотрены специальные биты защиты ЬВ1 и ЬВ2. Если прошить бит ЬВ1, блокируется возможность дозаписи в программную память. При прошивке обоих битов защиты, блокируется как возможность дозаписи, так и возможность считывания информации из программной памяти. Очистить защитные биты можно только в режиме стирания программной памяти. При этом записанная туда программа также стирается.

Для осуществления всех описанных выше функций, в микросхеме предусмотрен специальный режим программирования. Для перехода в этот режим используется вход ЯБТ (вывод 1) микросхемы. В рабочем режиме этот вход используется как вход начального сброса. Сброс производится путем кратковременной подачи сигнала логической единицы. Затем вплоть до выключения питания на входе поддерживается низкий логический уровень.

Для перевода микросхемы в режим программирования, на вход ЯБТ постоянно подается сигнал логической единицы. Кроме того, непосредственно в момент программирования на этот же вход подается программирующее напряжение +12 В.

В режиме программирования, функции всех выводов микросхемы изменяются. Линии порта Р1 выполняют функции шины данных для записи кодов программы в память микросхемы и для чтения данных из нее.

Линии РЗ.З, Р3.4, Р3.5, Р3.7 используются для выбора одного из подрежимов программирования. В табл. 7 приведен полный список этих подрежимов с описанием сигналов на управляющих входах, необходи-

И / 1_1 V Ппп 01/П1А11д11ип УЧЧ/ ПГЛТ'ГЛ ППППРЧ/

Линия Р3.2 в режиме программирования используется как вход PROG. То есть вход, куда подается импульс программирования. Линия Р3.1 используется, как выход сигнала готовности (READY). Кварцевый резонатор в режиме программирования не используется. Вывод XTAL1 используется, как вход внутреннего счетчика адреса.

Приведу примерный алгоритм, по которому должен работать любой программатор в режиме программирования:

Режим записи кода

1. Подать на входы порта Р1 первый байт программного кода.

2. Подать на входы P3.3...P3.7 код выбранного режима (0111), согласно табл. 7.

3. Подать на вход RST напряжение +12 В.

4. Подать на вход PROG короткий импульс программирования (длительностью от 1 до 110 мкс).

5. Дождаться сигнала готовности на выходе READY.

6. Если это не последний байт кода, перейти к прошивке следующего байта. Для этого:

• Подать короткий положительный импульс на вход XTAL1. Этот импульс увеличит на единицу содержимое внутреннего счетчика адреса.

• Подать на входы порта Р1 следующий байт программного кода.

• Повторить все, начиная с пункта 4.

7. Если это последний байт, закончить программирование. Для этого:

• Снять напряжение +12 В с входа RST.

Режимы записи битов защиты и очистки памяти

1. Подать на входы P3.3...P3.7 код выбранного режима, согласно табл. 7.

2. Подать на вход RST напряжение +12 В.

3. Подать на вход PROG импульс программирования (для записи бита его длительность должна быть от 1 до 110 мкс, для стирания памяти — 10 мс).

4. Дождаться сигнала готовности на выходе READY.

5. Снять напряжение +12 В с входа RST.

В режимах чтения программирующее напряжение +12 В на вход RST и сигнал PROG на вход Р3.2 не подаются. Вход XTAL1 в режиме чтения программного кода так же, как и при его записи, используется для последовательного перебора адресов.

Байт сигнатуры — это специальный код, записываемый в микросхему при ее изготовлении. По значению этого байта можно определить фир-му-изготовителя конкретной микросхемы.

Если вас интересует полное описание всех режимов программирования, вы можете скачать описание микросхемы АТ89С2051 на сайте http://microprocessor.by.ru в разделе «Справочные материалы». Однако на практике все эти подробности знать не обязательно. В настоящее время разработано множество конструкций программаторов. Их описание можно найти и в специальной литературе и в Интернете. Я рекомендую использовать простейшую схему Blowlt2051 Copyright (С) 1996 Silicon Studio. Схема приведена на рис. 57. Она состоит из двух транзисторов КТ315, пяти резисторов и одного конденсатора. Подключается схема к параллельному порту компьютера (LPT). Схема имеет свой внутренний источник питания. Это малогабаритный трансформатор с двумя вторичными обмотками. Два выпрямительных мостика и два стабилизатора напряжения (КРЕН5Б и К.РЕН8Б). Блок питания выдает два стабилизированных напряжения: +5 В и +12 В.

Для приведенной схемы существует два варианта управляющей программы. Первый вариант разрабатывался одновременно со схемой. Он называется ВІ205І. Объем файла программы всего 6 килобайт. Но эта программа имеет один недостаток. Она написана на языке Паскаль. В стандартной библиотеке используемой версии Паскаля имеется скрытая ошибка. На медленных компьютерах (с тактовой частотой до

100 МГц) она не проявляется. На более быстродействующих компьютерах в программе возникает ошибка деления на ноль. Для преодоления этого недостатка существует специальная программа — заплатка. Она называется unzero.com. Такую программу нужно запускать каждый раз перед началом работы программатора.

Второй вариант управляющей программы был разработан в 2001 году под ту же самую схему, что и первый вариант. Называется он py2051.exe. Программа рассчитана для работы не только в среде DOS, но и под Windows 9х и даже под Windows NT. В выходных данных программы сказано следующее:

py2051.py АТ89С2051 Programmer

10.06.2001 Dincer Aydin dinceraydin@altavista.net

http://www.geocities.com/dinceraydin/

Объем этой программы гораздо больше. Весь пакет занимает 576 килобайт в архивированном виде.

Порядок работы с обоими вариантами программы практически один и тот же. Он похож на порядок работы с транслятором и отладчиком. Все

действия необходимо выполнять при помоши выбранного вами файлового менеджера. Отличие состоит в том, что для первого варианта программы требуется файл в BIN-формате, а для второй в качестве входного используется НЕХ-формат. Как уже упоминалось раньше, для перекодировки из одного формата в другой существует специальная программа hex2bin.exe. Ее можно скачать как с сайта «Atmel», так и получить в пакете с первой версией программатора на сайте http://microprocessor.by.ru. Для того, чтобы осуществить перекодировку нужно поместить НЕХ-файл в одну директорию с программой hex2bin.exe, сделать эту директорию текущей и ввести в командной строке файлового менеджера следующую команду:

hex2bin pczi.hex

После нажатия клавиши Enter программа запустится и, если вы все сделали правильно, в той же директории появится файл pozi.bin. Это и есть ваша программа в BIN-формате. Ее нужно поместить в директорию, где находится программа программатора (первый вариант) и использовать для программирования. Для того, чтобы запрограммировать микроконтроллер, нужно:

■ Подключить программатор к компьютеру (питание компьютера выключено).

■ Вставить в него микросхему, предназначенную для программирования.

■ Включить компьютер.

■ Включить питание программатора.

■ Затем в компьютере необходимо последовательно подать две команды: unzero

Ы2051 pozi.bin

Команды подаются путем их ввода в окно команд файлового менеджера. Если все сделано правильно и, если микросхема исправна, начнется процесс программирования. Ход выполнения этого процесса будет отображаться на экране компьютера в виде растущей строки из точек. По завершении процесса программа выведет сообщение: «We are finished». Если вместо этой надписи вы увидите «Error, never ready?» или «Error, no device?», то это значит, что микросхема неисправна, либо вы допустили ошибку при сборке схемы. Программатор может отказаться работать и в том случае, если в вашем компьютере используется нестандартный параллельный порт. По умолчанию программа настроена на LPT1. Если в вашем компьютере два параллельных порта, и вы подключили программатор к порту LPT2, то для запуска программатора нужно применять следующую команду:

Ы2051 pozi.bin 2

После окончания процесса программирования нужно выключить питание программатора, извлечь микросхему из панельки и вставить в проверяемую схему.

Порядок работы со вторым вариантом управляющей программы программатора гораздо проще. Никакой перекодировки форматов не требуется. Помещаете ваш НЕХ-файл в одну директорию с программатором и вводите в командном окне файлового менеджера следующую команду:

ру2051 pozi.hex

После нажатия клавиши Enter начнется процесс программирования. Ход процесса программирования никак не индицируется. На экран только выводится количество байтов, подлежащих записи в микросхему. Все сообщения программы в случае возникновения ошибки аналогичны первому варианту программы. При завершении программы она выдает сообщение: «We are finished!». Второй вариант программы так же поддерживает возможность переопределения номера LPT-порта.

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

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

Используются технологии uCoz