Раздел: Документация
0 ... 24 25 26 27 28 29 30 ... 55 и отладка программы. Второе - программирование микроконтроллера непосредственно в готовом изделии. Вообще, программирование в системе имеет некоторую историю. Первой (разумеется, применительно к 51-совместимым микроконтроллерам) программирование в системе предложила фирма Dallas Semiconductor, выпустив микроконтроллеры DS5000(T) и DS2250(T) (и им подобные soft-microcontrollers). Это было в 1993 г. Микроконтроллер DS5000(T) сконструирован следующим образом. Он состоит из микроконтроллера DS5000FP, имеющего немультиплексируемую шину адреса/данных для сопряжения с ОЗУ емкостью до 128 кбайт. В состав DS5000(T) входит память (ОЗУ), часы(Т) с кварцевым резонатором на 32768 Гц и литиевая батарейка напряжением 3 В достаточной емкости, чтобы сохранять содержимое памяти после отключения основного питания в течение 10 лет. Микроконтроллер DS5000FP содержит в своей постоянной памяти (ROM) программу-загрузчик (bootstrap loader). Программа-загрузчик предоставляет возможность пользователю загрузить свою программу в память программ микроконтроллера в intel-hex-формате. Для этого предусмотрена специальная команда (L), которую пользователь должен подать в микроконтроллер. Помимо команды загрузки (L) в программе-загрузчике предусмотрены и другие команды (всего около 20), которые позволяют прочитать содержимое некоторой области памяти, заполнить ее определенной информацией, закрыть для чтения, т.е. установить бит секретности, стереть и т.п. Микроконтроллер DS5000FP, ОЗУ, таймер с кварцевым резонатором и батарейка расположены в стандартном DIP-корггусе с 40 достаточно прочными выводами, позволяющими многократно устанавливать микросхему в панельку. При программировании в системе уже не нужно было при разработке какого-либо программного обеспечения бесконечно программировать микроконтроллер в программаторе. Таким образом, можно было применять микроконтроллер DS5000(T) в качестве настоящего эмулятора и полностью использовать все возможности (и выводы) микроконтроллера при работе в реальном масштабе времени. По сравнению с фирменными эмуляторами, стоимость которых достаточно высока, эмулятор на базе этого микроконтроллера, основанный только на загрузке и запуске программы, не имеет пошагового режима (хотя запрограммировать подобный режим работы DS5000(T) позволяет). Но пошаговый режим используется достаточно редко: в основном при программировании вычислительных операций или, например, при расчетах временных задержек. Для написания программ с подобными и некоторыми другими приложениями с успехом могут быть использованы программные симуляторы, которых великое множест-84 во. Что касается точек останова, используемых в профессиональных эмуляторах, то достаточно опытному программисту не составляет большого труда остановить программу на определенном шаге, чтобы посмотреть результат. К сожалению, из-за относительно высокой цены (около 100 долл.) применять микроконтроллеры DS5000(T) в готовых изделиях достаточно накладно. Следующий шаг на пути к программированию в системе был сделан фирмой ATMEL, которая несколькими годами позже выпустила микроконтроллер AT89S8252. Его программирование возможно по интерфейсу SPI с достаточно высокой скоростью, а значит, возможен режим программирования в системе. Стоимость AT89S8252 составляет всего несколько долларов, поэтому его применение, например, при создании систем сбора результативно. Подключив к этому микроконтроллеру хороший АЦП (например, DS1210 фирмы Burr Brown - сейчас Texas Instruments) с 8-каналь-ным аналоговым коммутатором и несколько таймеров (например, 18254), получим достаточно дешевую систему сбора с очень хорошими точностными свойствами. И, наконец, последний шаг к программированию в системе в последнее время сделали сразу несколько фирм, выпустив микроконтроллеры ADUC8XX, MSC1210, C8051F06X и VERSA-DSP, о которых было уже несколько раз упомянуто ранее. Далее будут приведены примеры использования интерфейса RS232 для загрузки памяти программ микроконтроллеров. 7.2. Пример применения RS232 для загрузки внешней памяти программ микроконтроллера Р80С552 Рассмотрение этого примера (и всех остальных) разобьем на две части. Вначале приведем аппаратные средства, т.е. принципиальную схему, а затем - программное обеспечение. 7.2.1. Аппаратные средства Принципиальная схема подобного сопряжения микроконтроллера с компьютером приведена на рис.7.1. Из схемы видно, что микроконтроллер Р80С552 - DDI (показаны только выводы, имеющие отношение к излагаемому) сопряжен с внешней памятью программ, реализованной на микросхеме ОЗУ емкостью 8 кбайт марки 62С64 - DD5 по мультиплексированной шине адреса/данных. Это мультиплексирование осуществляется с помощью 8-разрядного регистра АНСТ573(ИРЗЗ) - DD4. Запись в регистр производится сигналом ALE, а чтение содержимого памяти - сигналом PSEN. Дешифратор НСТ139(ИД14) - DD6 85 служит для разделения адресного пространства памяти и периферийных устройств, сопряженных с Р80С552 по тому же параллельному интерфейсу адреса/данных. Для примера показано одно из них - это таймер I82C54 - DD7. Сигналом разделения адресного пространства является А15. Резисторная сборка NR1, как это обычно делается, подключена к порту рО. Р80С552 сопряжен с компьютером по RS232 посредством двух выводов: TxD и RxD, соединенных соответственно с линиями RxDC и TxDC. Сигнал RxDC подается на вход преобразователя уровня TTL в уровень RS232 (на схеме не показан), а с его выхода - на вход RxD СОМ- DD1
CLK Hr C,9 C20 Hi—1- RST P30/RXD P31/TXD P36/WR P37/RD X ТА LI XTA L2 AVREF+ VCC EW AVDD STADC NC NC GND GND NC AVREF-AVSS P00/AD0 POl/ADl P02/AD2 P03/AD3 P04/AD4 P05/AD5 P06/AD6 P07/A D7 E A ALE PSEN P27/A15 F26/A14 P25/A13 P24/A12 P23/A11 P22/A10 P21/A9 P20/A8
p80c552
5V ™ f ft 19 D7 1Г
1 11 EOS74 DTR RESET AT89C2051 TXDC RXD RxDC TxD Рис. 7.1. Фрагмент принципиальной схемы загрузки внешней памяти программ микроконтроллера Р80С552 0 ... 24 25 26 27 28 29 30 ... 55
|