8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

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

RST

15

RxD

24

TxD

25

WR

30

RD

31

CLK

35

34

+VREF

59

5V<3 ч

2

6

61

3

32

33

36

37

38

58

60

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

57

DO

56

DI

55

D2

54

D3

53

D4

52

DS

51

D6

50

D7

49

48

t\LE

47

PSEN

46

A15

45

A14

44

A13

43

A12

42

All

41

AlO

40

A9

39

A8

p80c552

RESET

1

RxD

2

TxD

3

4

5

WR

6

RST

1

ALE 8

C574

9

10

DD2

RST

VCC

P30/RXD

P17

P31/TXD

P16

XTAL2

P15

XTA LI

P14

P32

F13

F33

P12

P34

PU

P35

P10

GND

P37

5V

™ f ft

19 D7 1Г

18

D6

.17

re

16

D4

15

D3

14

D2

13

DI

12

DO

1

11 EOS74

DTR

RESET

AT89C2051

TXDC

RXD

RxDC

TxD

Рис. 7.1. Фрагмент принципиальной схемы загрузки внешней памяти программ микроконтроллера Р80С552



0 ... 24 25 26 27 28 29 30 ... 55