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

 
 
 
«Программирование сегодня — это гонка разработчиков программ, стремящихся писать программы больше и с лучшей идиотоустойчивостью, и вселенной, которая пытается создавать больших и лучших идиотов. Пока вселенная побеждает.»
Rick Cook
Русский | Українська


Микропроцессоры и микроконтроллеры :: Каналы ввода-вывода на основе МК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 имеют приоритет ниже, чем у последовательного порта.