Раздел: Документация
0 ... 25 26 27 28 29 30 31 ... 55 порта компьютера. Сигнал с выхода TxD СОМ-порта компьютера подается на вход преобразователя уровня RS232 в уровень TTL (на схеме также не показан), а на выходе преобразователя образуется сигнал TxDC. На схеме показано, что сигнал TxDC подается на вывод RxD микроконтроллера, а сигнал с вывода TxD микроконтроллера подается на линию RxDC. Все перечисленные микросхемы работают при функционировании микроконтроллера Р80С552 в штатном режиме при выполнении программы. DO
С574 EQ574 DO SN74AHCT574 DD4
DI D2 D3 D4 D5 D6 D7 D8 С EO QJ Q2 Q3 Q4 Q5 Q6 Q7 Q8 SN74AHCT573 DD7
A9 A10 A12 19 AO
5V A WR PSEN A15 WR RD 10 DP? AO Al A2 A3 A4 A5 A6 A7 A8 A9 A10 All A12 CS1 C S2 WR CEO OO 01 02 03 04 05 06 07
62C64 DD6A
It 13 nre. в
SN74HCTI39 10 IOWR
NR1 5V A en I82C54 10k В схеме присутствуют две дополнительные 20-выводные микросхемы, которые не функционируют при штатном режиме работы микроконтроллера Р80С552. Это дополнительный регистр НСТ574 (ИР37) - DD3 и микроконтроллер АТ89С2051 - DD2. Они совместно с регистром НСТ573 - DD4 осуществляют прием кодов программы с интерфейса RS232 и загрузку программы в память DD5. Необходимо отметить, что тактовая частота на микроконтроллер Р80С552 подается с микроконтроллера АТ89С2051 (сигнал CLK). Таким образом, в схеме используется единственный кварцевый резонатор Z1, подключенный к выводам XTAL1 и XTAL2 микроконтроллера АТ89С2051. При частоте кварцевого резонатора 22118400 Гц обмен по RS232 может происходить со скоростью 115200 Гц (генератор скорости ТГ). Схема работает следующим образом. Запуск схемы осуществляется компьютером по интерфейсу RS232 сигналом СОМ-порта DTR, который после преобразователя уровня RS232 в уровень TTL подается на вывод RESET микроконтроллера АТ89С2051 и запускает его программу. Эта программа вначале запрещает работу микроконтроллера Р80С552, выставляя на его выводе RST высокий уровень. Затем АТ89С2051 принимает по RS232 коды загрузки памяти DD5. Приняв очередной байт, АТ89С2051 вначале выставляет через свой порт рО младший байт адреса памяти DD5 на шину данных D0-D7, защелкивает его в регистре DD4 сигналом ALE, затем аналогично выставляет старший байт адреса и защелкивает его в регистре НСТ574 - DD3 сигналом С574. На вход ЕО этого же регистра АТ89С2051 подает низкий уровень сигналом Е0574 для разрешения выходов регистра, на которых появляется старший байт адреса. После этого АТ89С2051 выставляет информационный байт опять на шине данных D0-D7. Таким образом, на шине адреса А0-А12 DD5 выставляется адрес памяти, а на шине данных D0-D7 — информационный байт. Затем АТ89С2051 импульсом WR со своего порта р3.2 записывает этот информационный байт в память DD5. Когда все информационные байты приняты и записаны в память DD5, микроконтроллер АТ89С2051 выставляет все свои сигналы на выводах, кроме вывода рЗ.З, в высокоимпедансное состояние, освобождая (от своих сигналов) необходимые связи для работы основного микроконтроллера Р80С552, и заодно запрещает работу ненужного уже регистра DD3. На вывод рЗ.З АТ89С2051, соединенный с выводом RST Р80С552, подает низкий уровень, и основной микроконтроллер Р80С552 начинает работу, выполняя программу, записанную в памяти DD5, с нулевого адреса, После того как программа микроконтроллера отработала и компьютер получил от него все необходимые данные, сигналом DTR СОМ-порта компьютера, поданным на вывод RESET микроконтроллера АТ89С2051 (высоким уровнем напряжения), работа 88 всей схемы завершается. Здесь необходимо сделать некоторые дополнения. Вышеописанный способ загрузки программы в микроконтроллер Р80С552 по интерфейсу RS232 целесообразно применять в двух случаях. Во-первых, для предварительной загрузки и последующего запуска, которые выполняет основная программа компьютера, обслуживающая ту или иную компьютерную систему (см., например, приложение). Во-вторых, для разработки программы микроконтроллера. Разработка программы для микроконтроллера, как известно, требует проверки ее работоспособности в комплексе с компьютерной программой. Вышеописанный способ загрузки и запуска программы микроконтроллера позволяет загружать не только всю программу, но и ее части ("куски") и последовательно их проверять на работоспособность. Этот процесс достаточно быстрый и удобный. Что касается загрузки и запуска уже разработанной программы для микроконтроллера, которая должна работать в комплексе с компьютерной программой, то каждый раз загружать программу для микроконтроллера по интерфейсу RS232 необязательно и даже нецелесообразно по двум причинам. Первая - это достаточно долгая процедура, вторая - очень слабая защита от несанкционированного доступа. Вместо загрузки программы в ОЗУ с помощью интерфейса RS232 автор может рекомендовать альтернативный способ загрузки ОЗУ - из вспомогательного микроконтроллера (в данном случае - из АТ89С2051). Этот способ заключается в следующем. Предположим, программа для микроконтроллера Р80С552 занимает менее 2 кбайт (максимальный объем памяти АТ89С2051). Тогда эту программу можно запрограммировать в АТ89С2051, но не с нулевого адреса, а, например, с 100-го. В этом случае в адресное пространство, располагающееся с нулевого адреса по 100-й, можно запрограммировать программу-загрузчик, которая будет последовательно брать байты программы, располагающиеся с 100-го адреса (т.е. рабочую программу для Р80552), и записывать их (байты) с помощью вышеописанной процедуры записи в ОЗУ. Время записи в ОЗУ одного байта - несколько микросекунд. Всю программу, таким образом, можно записать за несколько миллисекунд, что намного быстрее, чем передавать программу по интерфейсу и записывать в ОЗУ. От компьютера в этом случае требуется только небольшая задержка (после запуска АТ89С2051), прежде чем начать работать с загруженной программой в штатном режиме. Кстати, АТ89С2051 после успешной записи программы в ОЗУ может послать в компьютер какой-либо байт (с кодом, например, @), что будет означать успешную загрузку программы в ОЗУ и готовность системы к работе с компьютером. Компьютер не начнет работать с программой, пока не получит такой код. 0 ... 25 26 27 28 29 30 31 ... 55
|