Микропроцессоры и микроконтроллеры

 
 
 
Отладка кода вдвое сложнее, чем его написание. Так что если вы пишете код настолько умно, насколько можете, то вы по определению недостаточно сообразительны, чтобы его отлаживать.
Brian W. Kernighan.
Русский | Українська



На правах рекламы:



Rambler's Top100 Рейтинг@Mail.ru
Микропроцессоры и микроконтроллеры :: Каналы ввода-вывода на основе МК51 :: Характеристики микроконтроллера модели AT89S8252

Характеристики микроконтроллера модели AT89S8252

Данная модель использована в качестве основного микроконтроллера в двухпроцессорной системе УУМС, разработанной на каф. 301 и изучаемой на лабораторных работах.

В модели AT89S8252 реализованы:

·        Flash-память программ объемом 8К, программируемая через SPI;

·        EEPROM память данных объемом 2К;

·        внутреннее ОЗУ объемом 256 байт;

·        три 16-битовых таймера;

·        9 источников прерываний;

·        последовательные интерфейсы UART и SPI;

·        программируемый WD-таймер;

·        два регистра DPTR.

Нижние 128 байт внутреннего ОЗУ имеют стандартную для MCS-51 структуру. Верхние 128 байт по значениям адресов (80h–FFh) совпадают с адресами области РСФ. Поэтому служебные регистры в РСФ доступны через прямую адресацию (т.е. по именам регистров), а байты ОЗУ – только через косвенную адресацию.

Flash-память программ занимает адресное пространство 0000h–1FFFh. При программировании через интерфейс SPI перезаписывается весь массив памяти.

Управление сторожевым таймером и доступом к EEPROM производится с помощью регистра WMCON. Данный регистр не имеет битовой адресации.

Имя бита

Номер

Назначение бита

PS2

PS1

PS0

7

6

5

Задание периода срабатывания сторожевого таймера: при “000” – 16 мс,
“001” – 32 мс, “010” – 64 мс, “011” – 128 мс, “100” – 256мс,
“101” – 512 мс, “110” – 1024 мс и при “111” – 2048 мс

EEMWE

4

Разрешение записи в EEPROM. Перед записью нужно установить в “1”.
По окончании записи нужно сбросить в “0”

EEMEN

3

Разрешение доступа к EEPROM. При установке в “1” команды MOVX на основе DPTR работают с областью EEPROM. При сбросе в “0” команды
MOVX работают с внешней памятью данных

DPS

2

Выбор активного регистра DPTR. При DPS = 0 (по умолчанию) активен основной DPTR (DP0H:DP0L). При DPS = 1 активен (DP1H:DP1L)

WDTRST
RDY/BSY

1

Сброс сторожевого таймера / признак занятости EEPROM.

При записи в этот бит “1” сторожевой таймер сбрасывается, а данный бит автоматически переходит в “0” (это не влияет на состояние EEPROM).

При чтении бита анализируется состояние EEPROM: если бит равен “0”,
то запись в EEPROM не закончена, если “1” – то EEPROM доступна

WDTEN

0

Бит запуска сторожевого таймера. При WDTEN = 1 таймер запускается и будет генерировать сброс МК через интервал времени, определяемый
битами (PS2-PS1-PS0)

Особенность использования сторожевого таймера состоит в том, что он должен быть настроен на период TWD > T0 max, где T0 max – максимальный из периодов дискретности, реализуемый в данной системе.

В каждом такте периода дискретности T0 max нужно выполнять сброс сторожевого таймера для того, чтобы он начинал новый период контроля TWD.

Предположим, что в микроконтроллерной системе T0 max = 100 мс. Тогда период сторожевого таймера должен составлять, как минимум TWD = 128 мс. Соответствующая двоичная комбинация для разрядов [PS2–PS0] = 011.

В инициализирующем блоке программы нужно выполнить настройку:

mov WMCON,#01100000b

Перед началом циклических действий по алгоритму запускаем WDT установкой в “1” бита WDTEN:

orl WMCON,#00000001b

В подпрограмме, обслуживающей завершение основного периода дискретности T0 max , нужно выполнить сброс сторожевого таймера (бит WDTRST = 1):

orl WMCON,#00000010b

Обращение к блоку памяти данных EEPROM выполняется, как ко внешней памяти, командами MOVX A,@DPTR и MOVX @DPTR,A по адресам от 0000h до 07FFh (2 кбайта). Для указания, что обращение производится к EEPROM, нужно в программе установить бит EEMEN:

mov WMCON,#00001000b

Особенность обращения к EEPROM состоит в том, что цикл записи происходит гораздо дольше, чем во внешнюю память (около 2,5 мс). Поэтому в программе нужно ожидать завершения текущего цикла записи в EEPROM перед последующей записью или чтением. Для этого служит бит RDY/BSY. Кроме того, запись стробируется установкой бита EEMWE = 1. Чтение из EEPROM занимает столько же времени, как и чтение из внешней памяти (2 МЦ). Пример процедуры записи одного байта в EEPROM следующий:

mov A,#data ; Данные для записи

mov DPTR,#Address ; Нужный адрес в памяти

orl WMCON,#00011000b ; EEMWE=1 и EEMEN=1

movx @DPTR,A ; Инициируем запись

wt: mov A,WMCON ; Цикл ожидания конца записи

jnb ACC.1,wt ; Проверяем бит RDY/BSY

anl WMCON,#11100111b ; Сброс битов EEMWE и EEMEN

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

Особенности структуры и использования таймера Т2

Программная модель таймера Т2 содержит следующие регистры:

·        счетные регистры TH2 и TL2;

·        регистры (стартового числа) / (захвата значения) RCAP2H и RCAP2L;

·        регистр выбора режимов и управления T2CON;

·        регистр дополнительных режимов T2MOD.

Регистры (TH2, TL2) и (RCAP2H, RCAP2L) всегда работают в парах, поэтому таймер Т2 является полностью 16-разрядным.

Для работы таймера Т2 по внешним сигналам служат линии порта Р1:
линия Р1.0 (имя Т2) – вход импульсов для режима счетчика или выход генератора;

линия Р1.1 (имя T2EX) – вход управления захватом/перезагрузкой таймера Т2.

Основное управление таймером Т2 производится с помощью регистра Т2CON. Данный регистр имеет битовую адресацию. В среде MCStudio биты 1 и 0 имеют имена C_T2 и CP_RL2 соответственно, остальные биты именуются так, как показано в таблице.

Имя бита

Номер

Назначение бита

TF2

7

Флаг переполнения таймера Т2 (при переходе из FFFFh в 0000h). Должен очищаться программно. В режиме генератора для УАПП флаг не устанавливается (при RCLK=1 или TCLK=1).

EXF2

6

Флаг внешнего события таймера Т2. Устанавливает по перепаду 1®0 на входе T2EX (линия Р1.1), если бит EXEN2=1. Обрабатывается как прерывание. Должен очищаться программно.

RCLK

5

Выбор источника синхрочастоты для приемника УАПП в режимах 1 и 3.
При RCLK =1 используется таймер Т2, при RCLK = 0 – таймер Т1

TCLK

4

Выбор источника синхрочастоты для передатчика УАПП в режимах 1 и 3.
При TCLK =1 используется таймер Т2, при TCLK = 0 – таймер Т1

EXEN2

3

Разрешение внешнего события таймера Т2. При EXEN2=1 разрешено восприятие перепада на входе T2EX и установка бита EXF2.

TR2

2

Бит запуска/останова таймера T2. При TR2 = 1 таймер запускается и работает в соответствии с настройками C/T2#, CP/RL2#, RCLK и TCLK.

C/T2#

1

Выбор источника счетных импульсов: при C/T2# = 0 – таймер от ГТИ, при C/T2# = 1 – счетчик импульсов по входу Т2 (линия Р1.0)

CP/RL2#

0

Выбор режима таймера Т2.

При CP/RL2# = 0 – режим автоперезагрузки. Копирование значений из пары (RCAP2H, RCAP2L) в счетные регистры (TH2, TL2) происходит или по переполнению таймера (при EXEN2=0), или по перепаду 1®0 внешнего сигнала T2EX (при EXEN2=1).

При CP/RL2# = 1 – режим захвата. По перепаду 1®0 внешнего сигнала T2EX (при EXEN2=1) происходит копирование текущего состояния счетных регистров (TH2, TL2) в пару регистров (RCAP2H, RCAP2L).

Если RCLK=1 или TCLK=1 (работа на УАПП), бит CP/RL2# игнорируется, а таймер Т2 работает в режиме перезагрузки по переполнению.

Таким образом, захват текущего состояния таймера Т2 может быть инициирован только внешним сигналом T2EX.

Обобщенная таблица режимов таймера Т2 следующая:

RCLK+TCLK

CP/RL2#

Режим работы (при включении по TR2=1)

0

0

16-разрядный таймер/счетчик (в зависимости от C/T2#) с автоперезагрузкой стартового числа из регистров (RCAP2H, RCAP2L)

0

1

16-разрядный таймер/счетчик (в зависимости от C/T2#) с захватом текущего состояния таймера в регистры (RCAP2H, RCAP2L)

1

x

Задающий генератор для последовательного порта

В регистре T2MOD нет битовой адресации, используются только два разряда:

Имя бита

Номер

Назначение бита

T2OE

1

Разрешение выдачи сигнала программируемой частоты от таймера Т2 на внешний вывод P1.0

DCEN

0

Разрешение задания направления счета таймера Т2 в режиме автоперезагрузки стартового числа.

При DCEN = 0 таймер Т2 всегда считает в прямом направлении от стартового числа, взятого из регистров (RCAP2H, RCAP2L), до FFFFh. При достижении максимума формируемся флаг прерывания TF2 и перезагрузка стартового числа.

При DCEN = 1 направление счета таймера Т2 зависит от сигнала на внешнем входе T2EX.
При T2EX=1 – прямой счет от (RCAP2H, RCAP2L), до FFFFh с формированием флага TF2=1 и перезагрузкой числа из (RCAP2H, RCAP2L).
При T2EX=0 – обратный счет от FFFFh, до значения, содержащегося в регистрах (RCAP2H, RCAP2L). При этом формируется флаг TF2=1 и в счетные регистры (TH2, TL2) загружается число FFFFh.

Состояние входа T2EX фиксируется в разряде EXF2, который в этом случае не является флагом прерывания. Значение EXF2 можно использовать для программного определения, в каком направлении считает таймер.

Приемник и передатчик последовательного порта в микроконтроллерах AT89S8252 могут управляться от разных источников (таймер Т1 или Т2).

При использовании таймера Т2 в качестве задающего генератора для УАПП (при RCLK=1 или TCLK=1) или генератора внешней частоты (при T2OE=1) значения частоты генерации определяются соотношениями:

FУАПП = FOCS / [32 ×(65536 – (RCAP2H,RCAP2L))] и

FOUT = FOCS / [4 ×(65536 – (RCAP2H,RCAP2L))] соответственно.

При тактовой частоте FT = 11059,2 кГц наборы значений стартовых чисел:

для скорости 9600 бит/с – FFDCh, 19200 бит/с – FFEEh, 38400 бит/с – FFF7h; 56800 бит/с – FFFAh. При FT = 12 кГц для скорости 9600 бит/с – FFD9h, другие значения скорости точно не реализуются.

Прерывание TF2 от таймера Т2 в обоих случаях не формируется.

Перепад 1®0 на входе T2EX фиксируется в разряде EXF2 (при EXEN2=1) и обрабатывается как дополнительное внешнее прерывание.

Как указывалось ранее, таймер Т2 в принципе может формировать два запроса на прерывание – TF2 (от таймера) и EXF2 (от внешнего входа P1.1 – T2EX). Оба запроса связаны с одним вектором – 02Bh. Поэтому идентификация источника запроса должна производиться программно. По этой же причине флаги запросов также должны сбрасываться программой (по аналогии с запросами от УАПП).

В регистр разрешения прерываний IE добавлен бит с номером 5 – имя ET2, который разрешает обработку прерывания от таймера Т2. В регистр управления приоритетами IP также добавлен бит с именем PT2, задающий высокий приоритет этого прерывания.

Кроме того, в МК AT89S8252 дополнительный регистр задания приоритетов IPH, имеющий такую же битовую структуру, как IP. Имена всех битов имеют дополнительную букву “H” в названии (PT2H, PSH, …, PX0H). Таким образом, за счет комбинации значений в разрядах с одинаковым номером в регистрах IP и IPH можно задавать 4 уровня приоритетов:

(IPH.x = 0, IP.x = 0) – уровень 0 (низший)

(IPH.x = 0, IP.x = 1) – уровень 1

(IPH.x = 1, IP.x = 0) – уровень 2

(IPH.x = 1, IP.x = 1) – уровень 3 (высший)

Приоритеты внутри уровня такие же, как в базовой модели 80С51, а новые прерывания TF2 и T2EX имеют приоритет ниже, чем у последовательного порта.