Микроконтроллер AT90S2313

          

счетчик может получать импульсы тактовой


8-разрядный таймер/ счетчик может получать импульсы тактовой час­тоты - CK, импульсы с предварительного делителя (CK/8, CK/64, CK/256 или CK/1024), импульсы с внешнего вывода или быть остановлен соответ­ствующими установками регистра TCCR0. Флаг переполнения таймера нахо­дится в регистре TIFR. Биты управления таймером расположены в регистре TCCR0. Разрешение и запрещение прерываний от таймера управляется реги­стром TIMSK.

При работе таймера/счетчика от внешнего сигнала, внешний сигнал синхронизируется с тактовым генератором ЦПУ. Для правильной обработки внешнего сигнала, минимальное время между соседними импульсами должно превышать период тактовой частоты процессора. Сигнал внешнего источни­ка обрабатывается по спадающему фронту тактовой частоты процессора.

8-разрядный таймер/счетчик можно использовать как счетчик с высо­ким разрешением, так и для точных применений с низким коэффициентом деления тактовой частоты. Более высокие коэффициенты деления можно ис­пользовать для медленных функций или измерения временных интервалов между редкими событиями.


счетчик может получать импульсы тактовой


16-разрядный таймер/ счетчик может получать импульсы тактовой частоты - CK, импульсы  с предварительного делителя (CK/8,  CK/64, CK/256 или CK/1024), импульсы с внешнего вывода или быть остановлен  соответствующими установками регистра TCCR1A. Флаги состояния таймера  (переполнения, совпадения и захвата) и управляющие сигналы находится в  регистре TIFR. Разрешение и запрещение прерываний от таймера 1  управляется регистром TIMSK.

          При работе таймера/счетчика 1 от внешнего сигнала, внешний сигнал синхронизируется с тактовым генератором ЦПУ. Для правильной  обработки внешнего сигнала, минимальное время между соседними импульсами  должно превышать период тактовой частоты процессора. Сигнал внешнего источника обрабатывается по спадающему фронту тактовой частоты процессора.

16-разрядный таймер/счетчик  1 можно  использовать как  счетчик с высоким разрешением, так и для точных применений с низким  коэффициентом деления тактовой частоты. Более высокие коэффициенты деления можно использовать для медленных функций или измерения временных  интервалов между редкими событиями.

Таймер/счетчик 1  поддерживает функцию  совпадения используя  регистр совпадения OCR1A в качестве источника для сравнения с содержимым счетчика. Функция совпадения поддерживает очистку счетчика и  переключение выхода по совпадению.

Таймер/счетчик 1 можно использовать  как 8-, 9- или  10-разрядный широтно-импульсный модулятор. В этом режиме счетчик и регистр OCR1 работают как  защищенный от  дребезга независимый  ШИМ с отцентрованными импульсами. Подробно эта функция будет описана ниже.

Функция захвата по входу предусматривает захват содержимого  таймера/счетчика 1 в регистр захвата ICR1 и управляется внешним  сигналом на входе захвата - ICP. Работа режима захвата определяется управляющим регистром TCCR1.

При работе захвата по входу, может быть включена схема подавления шума, при этом сигнал захвата возникает только в том случае, если  событие управляющее захватом наблюдается на протяжении 4-х машинных циклов.


Альтернативные функции порта D


ICP - Порт D, бит 6 - вход захвата таймера/счетчика 1. Подробнее  см. описание таймера.

T1 - Порт D, бит 5 - тактовый вход таймера/счетчика 1. Подробнее  см. описание таймера.

T0 - Порт D, бит 4 - тактовый вход таймера/счетчика 0. Подробнее  см. описание таймера.

INT1 - Порт D, бит 3 - вход внешних прерываний 1. Подробнее см.  описание прерываний.

INT0 - Порт D, бит 2 - вход внешних прерываний 0. Подробнее см.  описание прерываний.

TXD - Порт D, бит 1  - выход передатчика UART. Если разрешена  работа передатчика UART, независимо от состояния DDRD1 этот вывод сконфигурирован как выход.

RXD - Порт  D, бит 0  - выход приемника  UART. Если разрешена  работа приемника UART, независимо от состояния DDRD0 этот вывод сконфигурирован как выход. Когда UART использует вывод для приема данных,  единица в PORTD0 подключает встроенный подтягивающий резистор.




АНАЛОГОВЫЙ КОМПАРАТОР


Аналоговый компаратор сравнивает входные напряжение на положительном входе PB0 (AIN0) и отрицательном входе (AIN1). Когда напряжение на положительном входе больше напряжения на отрицательном, устанавливается бит ACO (Analog Comparator Output). Выход аналогового компаратора можно установить на работу с функцией захвата Таймера/Счетчика1. Кроме того, компаратор  может вызывать свое прерывание. Пользователь может установить срабатывание прерывание по нарастающему или спадающему фронту, или по переключению.



Арифметико-логическое устройство - АЛУ


АЛУ процессора непосредственно подключено к 32 регистрам общего назначения. За один машинный цикл АЛУ производит операции между реги­страми регистрового файла. Команды АЛУ разделены на три основных кате­гории - арифметические, логические и битовые. Некоторые микроконтроллеры семейства AVR имеют аппаратный умножитель в арифметической части АЛУ.



Биты блокировки памяти


Микроконтроллер AT90S2313 имеет два бита блокировки, которые мо­гут быть оставлены незапрограммированными (1) или программироваться (0), при этом достигаются свойства приведенные в таблице 12.

Таблица 20. Режимы защиты и биты блокировки

Биты блокировки

Тип защиты

Режим

LB1

LB2

1

1

1

защита не установлена

2

0

1

дальнейшее программирование флэш памяти запрещено

3

0

0

как режим 2, но запрещено и чтение

Примечание: биты блокировки стираются только при полном стирании памяти



Биты конфигурации (Fuse bits)


В AT90S2313 предусмотрено два бита конфигурации - SPIEN и FSTRT.

Когда    запрограммирован    бит    SPIEN    (0)  разрешен  режим последовательного программирования. По умолчанию бит  запрограммирован (0).

Когда запрограммирован  бит FSTRT  (0), используется  укороченное время запуска. По  умолчанию этот бит  не запрограммирован (1).  Можно заказывать микросхемы с предварительно запрограммированным битом.

Эти биты  недоступны при  последовательном программировании  и не изменяются при стирании памяти.



ЧТЕНИЕ И ЗАПИСЬ В ЭНЕРГОНЕЗАВИСИМУЮ ПАМЯТЬ


Регистры доступа к энергонезависимой памяти (EEPROM) расположены в пространстве ввода/вывода.

Время записи лежит в диапазоне  2.5-4 mS и зависит от  напряжения питания. Это самотактируемая функция которая, однако, позволяет  пользователю определить, можно ли записывать следующий байт. Если программа пользователя производит  запись в энергонезависимую  память, должны быть предприняты некоторые меры предосторожности. При использовании  в источнике питания  конденсаторов большой  емкости, напряжение  питания нарастает и спадает достаточно медленно. Это приводит к тому, что процессор некоторое время работает  при напряжении питания ниже  минимума достаточного для нормальной работы схем тактирования. При этом ЦПУ может совершать нежелательные переходы, попадая на части программы, производящие запись  в EEPROM.  В таких  случаях, для  защиты содержимого EEPROM, необходимо использовать внешние схемы формирующие сигнал сброса при уменьшении напряжения питания.

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

При записи  или чтении  EEPROM процессор  приостанавливается на 2 машинных цикла до начала выполнения следующей команды.



EEPROM память данных


AT90S2313 содержит  128 байт электрически стираемой энергонезависимой памяти (EEPROM). EEPROM организована как  отдельная область данных, каждый байт которой может быть прочитан и перезаписан. EEPROM выдерживает не менее 100000 циклов записи/стирания. Доступ к энергонезависимой памяти данных рассмотрен дальше и задается регистром адреса, регистром данных и управляющим регистром. Ниже рассмотрено и программирование памяти данных через SPI интерфейс.



Файл регистров общего назначения


Все команды оперирующие регистрами  прямо адресуются к любому  из регистров за один машинный цикл. Единственное исключение - пять команд оперирующих с константами  SBCI, SUBI, CPI,  ANDI, ORI и  команда LDI, загружающая регистр константой. Эти команды работают только со  второй половиной регистрового файла - R16..R31.  Команды SBC, SUB, CP, AND и OR, также как и все остальные, применимы ко всему регистровому файлу.

Каждому регистру присвоен адрес в пространстве данных, они  отображаются на первые 32 ячейки ОЗУ. Хотя регистровый файл физически размещен вне ОЗУ, подобная организация памяти дает гибкий доступ к регистрам. Регистры X,  Y и Z   могут использоваться  для индексации любого регистра.

Кроме обычных  функций, регистры  R26..R31 имеют   дополнительные функции, эти регистры можно использовать как адресные указатели в  области памяти данных. Эти регистры обозначаются как X,Y,Z и  определены следующим образом:

15

0

Регистр X

7

0

7

0

 R27($1B)

R26($1A)

15

0

Регистр Y

7

0

7

0

 R29($1D)

R28($1C)

15

0

Регистр Z

7

0

7

0

 R31($1F)

R30($1E)

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



ФЛАГОВЫЙ РЕГИСТР ПРЕРЫВАНИЙ ОТ ТАЙМЕРОВ/СЧЕТЧИКОВ – TIFR


Бит

$38($58)

Чт./зап. (R/W)

Начальн.знач.

7

6

5

4

3

2

1

0

TOV1

OCF1A

-

-

ICF1

-

TOV0

-

 TIFR

R/W

R/W

R

R

R/W

R

R/W

R

0

0

0

0

0

0

0

0

Бит 7 - TOV1: Флаг переполнения таймера/счетчика 1: Флаг TOV1 устанавливается ("1") при  возникновении переполнения таймера/счетчика  1. Флаг TOV1 сбрасывается аппаратно при выполнении соответствующего  вектора обработки прерывания. Кроме того, флаг можно сбросить, записав  в него логическую единицу. Если установлены бит  I в SREG и бит TOIE1  в TIMSK, при установке бита TOV1 выполняется прерывание по  переполнению таймера/счетчика 1. В режиме ШИМ этот бит устанавливается, когда  таймер/счетчик 1 изменяет направление счета при значении $0000.

   Бит 6 -  OCF1A: Флаг выхода  совпадения 1А: флаг  устанавливается в "1" если происходит совпадение значения таймера/счетчика 1 и данных  в регистре OCR1A. Флаг очищается аппаратно при выполнении  соответствующего вектора прерывания. Кроме того, флаг можно сбросить записав в него логическую единицу. Если  установлены бит I в  SREG и бит OCIE1A  в TIMSK, при установке бита OCF1A выполняется прерывание.

   Биты 5,4 - зарезервированы; в AT90S2313 эти биты зарезервированы и всегда читаются как 0.

   Бит 3 - ICF1: флаг  входа захвата 1: бит устанавливается  ("1") при возникновении события  захвата по  входу, он  индицирует, что значение таймера/счетчика 1 скопировано в  регистр захвата по входу  ICR1. ICF1 очищается при выполнении  соответствующего вектора обработки  прерывания. Кроме того, флаг можно очистить, записав в него логическую единицу.

   Бит 2 - зарезервирован; в AT90S2313 этот бит зарезервирован и  всегда читается как 0.

   Бит 1 - TOV0: Флаг переполнения таймера счетчика 1: Флаг TOV0 устанавливается ("1") при переполнении таймера/счетчика 0. Флаг  сбрасывается  аппаратно  при  выполнении  соответствующего вектора прерывания. Кроме того, флаг можно очистить записав в него логическую единицу. Если установлены бит I  в SREG и бит  TOIE0 в TIMSK, при  установке бита TOV0 выполняется прерывание по переполнению таймера/счетчика 0.

   Бит 0 - зарезервирован; в AT90S2313 этот бит зарезервирован и  всегда читается как 0.



ГЕНЕРАТОР СКОРОСТИ ПЕРЕДАЧИ


Генератор скорости передачи этот делитель частоты, который  генерирует скорости в соответствии с нижеприведенным выражением:

BAUD = Fck / (16*(UBRR+1)) (здесь    BAUD - скорость передачи (бод)), Fck - частота тактового генератора процессора, UBRR - содержимое регистра скорости передачи UART

В следующей таблице приведены  значения регистра UBRR и  процентное отклонение  от  стандартной  скорости  передачи для стандартных частот кварцевых генераторов. (Baud Rate – скорость в бодах; %Error – процент ошибок ):

Микроконтроллер AT90S2313

Микроконтроллер AT90S2313

Микроконтроллер AT90S2313



ХАРАКТЕРИСТИКИ ПО ПОСТОЯННОМУ ТОКУ


Ta = -40...+85оC, Vcc=2.7...6.0V (если не указано иначе)

Параметр

Мин.

Тип.

Макс.

Ед. изм.

Входное напряжение '0'

-0.5

0.3 Vcc

В

Входное напряжение '1' (кроме XTAL1 и RESET)

0.6 Vcc

Vcc+0.5

В

Входное напряжение '1' на XTAL1 и RESET

0.7 Vcc

Vcc+0.5

В

Выходное напряжение '0'(1)

(Порты B и D)

IIL=20mA, Vcc = 5V

IIL=10mA, Vcc = 3V

0.5

В

Выходное напряжение '1'

(Порты B и D)

I0H=3mA, Vcc = 5V

I0H=3mA, Vcc = 3V

Vcc-0.5

В

Выходной ток

(Порты B и D)

Vcc=5V,V0H = 4.5V

Vcc=3V,V0H = 2.7V

10

5

мА

Поглощаемый ток

(Порты B и D)

Vcc=5V,VIL = 0.5V

Vcc=3V,VIL = 0.3V

20

10

мА

Подтягивающий резистор сброса

100

500

кОм

Подтягивающий резистор вывода порта

35

120

кОм

Потребляемый ток:

Активный режим, 3V, 4 МГц

3

мА

холостой ход (idle mode), 3V, 4 МГц

1

мА

пониженное потребление(2) WDT включен, 3V

9

15

мкА

пониженное потребление(2) WDT выключен, 3V

<1

2

мкА

Напряжение смещения аналогового компаратора Vcc = 5V

40

мВ

Входной ток утечки аналогового компаратора Vcc = 5V VIN = Vcc/2

-50

+50

нА

Время срабатывания аналогового компаратора

Vcc=2.7V

Vcc=4.0V

750

500

нс

ПРИМЕЧАНИЯ:

1. В рабочем состоянии ток через выводы должен ограничиваться следующими условиями:

- Максимальный ток через вывод - 20 мА (5V), 10 мА (3V)

- Максимальный ток через все выводы - 80 мА

2. Минимальное напряжение для режима пониженного потребления - 2V




ИНФОРМАЦИЯ ДЛЯ ЗАКАЗА


Частота

Напряж. питания

Маркировка

Корпус

Диапазон температур

4 МГц

2.7...6.0 V

AT90S2313-4PC

AT90S2313-4SC

 20P3

 20S

Коммерческий (0оC ... 70оC)

AT90S2313-4PI

AT90S2313-4SI

 20P3

 20S

Промышленный (-40оC ... 85оC)

10 МГц

4.0...6.0 V

AT90S2313-10PC

AT90S2313-10SC

 20P3

 20S

Коммерческий (0оC ... 70оC)

AT90S2313-10PI

AT90S2313-10SI

 20P3

 20S

Промышленный (-40оC ... 85оC)

Корпус 20P3 - PDIP

   20S  - SOIC




ИСТОЧНИКИ СБРОСА


AT90S2313 имеет три источника сброса.

* Сброс по включению питания. Процессор сбрасывается при подаче питания на выводы VCC и GND.

* Внешний сброс. Процессор сбрасывается при подаче низкого уровня на вывод RESET на время более двух периодов тактовой частоты.

* Сброс от сторожевого таймера. Процессор сбрасывается по оконча­нию времени сторожевого таймера, если разрешена его работа.

Во время сброса все регистры ввода/вывода устанавливаются в на­чальные значения, программа начинает выполняться с адреса $000, по этому адресу должна быть записана команда RJMP - относительный переход на программу обработки сброса. Если в программе не разрешаются преры­вания и векторы прерываний не используются, в первых адресах памяти может быть записана программа.



Экономичный режим.


Когда бит SM установлен (1), команда SLEEP переводит процессор в экономичный режим (Power Down Mode). В этом режиме останавливается внешний генератор тактовых импульсов. Пользователь может разрешить ра­боту сторожевого таймера в этом режиме. Если сторожевой таймер разре­шен, процессор выходит из экономичного режима после отработки периода сторожевого таймера. Если сторожевой таймер запрещен, выход из эконо­мичного режима может произойти только по внешнему сбросу или прерыванию по уровню.



Код устройства


Все  микроконтроллеры  фирмы  Atmel  имеют 3-байтовый сигнатурный код, по которому идентифицируется устройство. Этот код может быть прочитан в параллельном и последовательном режимах. Эти три байта  размещены в отдельном адресном пространстве и для AT90S2313 имеют следующие значения:

     1. $000: $1E - код производителя - Atmel

     2. $001: $91 - 2 кБ флэш памяти

     3. $002: $01 - при $01=$91 - м/сх AT90S2313

          Если запрограммированы биты блокировки, байты сигнатуры в  последовательном режиме не читаются.




КВАРЦЕВЫЙ ГЕНЕРАТОР


Микроконтроллер AT90S2313
Микроконтроллер AT90S2313

XTAL1 и XTAL2 являются входом и выходом инвертирующего усилителя, который можно использовать для генератора тактовых импульсов. Можно использовать как кварцевые, так и керамические резонаторы. При подклю­чении внешнего тактового сигнала вывод XTAL2 остается неподключенным, а XTAL1 подключается к выходу внешнего генератора.

 



МАКСИМАЛЬНО ДОПУСТИМЫЕ ПАРАМЕТРЫ



Рабочая температура ……………………………………. .-55оС - +125оС

Температура хранения ………………………………….…-65оС - +150оС

Напряжение на любом выводе кроме RESET …………. -1.0V – Vcc+0.5V

Напряжение на любом выводе RESET …………. ………-1.0V - 13 V

Максимальное рабочее напряжение ………………………6.6V

Постоянный ток через вывод порта ……………………. 40.0 мА

Постоянный ток между VCC и GND …………………. 200.0 мА


ПРИМЕЧАНИЕ: выход параметров за пределы указанные в таблице может привести к нарушению работоспособности микросхемы. Это предельные зна­чения параметров, рабочие параметры микросхемы приведены ниже. Удержа­ние предельных значений на выводах м/сх в течение длительного времени может привести к потере работоспособности м/сх.



Микроконтроллер AT90S2313 фирмы Atmel


AT90S2313 - экономичный 8 битовый КМОП микроконтроллер, построенный с использованием расширенной RISC архитектуры AVR. Исполняя по одной команде за период тактовой частоты, AT90S2313 имеет производительность около 1MIPS на МГц, что позволяет разработчикам создавать системы оптимальные по скорости и потребляемой мощности.

          В основе ядра AVR лежит расширенная RISC архитектура,  объединяющая развитый набор команд и 32 регистра общего назначения. Все 32  регистра непосредственно подключены к арифметико-логическому  устройству (АЛУ), что дает доступ к  любым двум регистрам за один  машинный цикл. Подобная архитектура обеспечивает десятикратный выигрыш в эффективности кода по сравнению с традиционными CISC микроконтроллерами.

AT90S2313 предлагает следующие возможности: 2кБ загружаемой  флэш памяти; 128 байт EEPROM;  15 линий ввода/вывода общего  назначения; 32 рабочих регистра; настраиваемые таймеры/счетчики с режимом совпадения; внешние и внутренние прерывания; программируемый универсальный  последовательный порт; программируемый сторожевой таймер со встроенным генератором; SPI последовательный порт для загрузки программ; два выбираемых программно режима низкого энергопотребления. Холостой режим  (Idle Mode) отключает  ЦПУ, оставляя  в рабочем  состоянии регистры,  таймеры/счетчики, SPI порт и  систему прерываний. Экономичный режим  (Power Down Mode) сохраняет содержимое регистров, но отключает генератор, запрещая функционирование всех встроенных устройств до внешнего прерывания или аппаратного сброса.

Микросхемы производятся с использованием технологии энергонезависимой памяти высокой плотности фирмы Atmel. Загружаемая флэш память на кристалле может быть перепрограммирована прямо в системе через  последовательный интерфейс SPI или доступным программатором энергонезависимой памяти. Объединяя  на одном кристалле усовершенствованный  8-битовый RISC процессор с загружаемой флэш памятью, AT90S2313 является мощным микроконтроллером, который позволяет создавать достаточно гибкие и эффективные по стоимости устройства.

     AT90S2313 поддерживается полной системой разработки включающей  в себя  макроассемблер,  программный  отладчик/симулятор,  внутрисхемный эмулятор и отладочный комплект.



Rd AND Rr 


Мнемон.          Операнды                                 Описание             Действие Флаги            Цкл

АРИФМЕТИЧЕСКИЕ И ЛОГИЧЕСКИЕ КОМАНДЫ

ADD    Rd, Rr   Сложить два регистра               Rd < Rd + Rr       Z,C,N,V,H 1

ADC    Rd, Rr   Сложить с переносом               Rd < Rd + Rr + C Z,C,N,V,H 1

ADIW               Rdl,K                                          Сложить слово с константой          Rdh,l< Rdh,l+K            Z,C,N,V,S                                   2

SUB     Rd, Rr   Вычесть два регистра                Rd < Rd - Rr        Z,C,N,V,H 1

SUBI   Rd, K    Вычесть константу                    Rd < Rd - K          Z,C,N,V,H 1

SBIW                Rdl,K                                          Вычесть слово с константой           Rdh,l< Rdh,l-K             Z,C,N,V,S                                   2

SBC     Rd, Rr   Вычесть с переносом                Rd < Rd - Rr - C   Z,C,N,V,H 1

SBCI   Rd, K    Вычесть с переносом                Rd < Rd - K - C    Z,C,N,V,H 1

AND    Rd, Rr   Логическое И                             Rd < Rd AND Rr  Z,N,V      1

ANDI   Rd, K    Логическое И                             Rd < Rd AND K   Z,N,V      1

OR      Rd, Rr   Логическое ИЛИ                       Rd < Rd OR Rr    Z,N,V      1

ORI     Rd, K    Логическое ИЛИ                       Rd < Rd OR K     Z,N,V      1

EOR    Rd, Rr   Исключающее ИЛИ                   Rd < Rd XOR Rr  Z,N,V      1

COM   Rd         Дополнение до 1                        Rd < $FF - Rd      Z,C,N,V  1

NEG    Rd         Дополнение до 2                        Rd < $00 - Rd       Z,C,N,V,H 1

SBR     Rd, K    Установка бит(-ов) в регистре   Rd < Rd OR K     Z,N,V      1

CBR    Rd, K    Сброс бит(-ов) в регистре         Rd < Rd AND (FFh - K)      Z,N,V  1

INC     Rd         Увеличить на 1                           Rd < Rd + 1         Z,N,V      1

DEC    Rd         Уменьшить на 1                         Rd < Rd - 1          Z,N,V      1

TST     Rd         Проверить на 0 или минус        Rd < Rd AND Rd Z,N,V      1



CLRяяя Rdяяяяяяяя ЋзЁбвЁвм ॣЁбваяяяяяяяяяяяяяяяяяяяяя Rd < Rd XOR Rd Z,N,Vяяяяя 1

SERяяяя Rdяяяяяяяя “бв ­®ўЁвм ॣЁбваяяяяяяяяяяяяяяяяяя Rd < $FFяяяяяяяяяяяяя ЌҐ ¬Ґ­пҐв 1

ЉЋЊЂЌ„› ‚…’‚‹…Ќ€џ

RJMPя kяяяяяяяяяя Ћв­®бЁвҐ«м­л© ЇҐаҐе®¤яяяяяяяяяяя PC < PC+k+1яяяяяя ЌҐ ¬Ґ­пҐв 2

LJMPяяяяяяяяяяяяяя ЏҐаҐе®¤ Ї®  ¤аҐбг (Z)я яяяяяяяяяяяя PC< Zяяяяяяяяяяя яяяяяя ЌҐ ¬Ґ­пҐв 2

RCALLяяяяяяяяяяяя kяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя Ћв­®бЁвҐ«м­л© ўл§®ў Ї®¤Їа®Ја ¬¬ляяяя PC < PC+k+1яяяяяя ЌҐ ¬Ґ­пҐвяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя 3

ICALLяяяяяяяяяяяяя ‚맮ў Ї®¤Їа®Ја ¬¬л Ї®  ¤аҐбг (Z) яяяяяяяяяяяяяяяяяяяяя PC< Z я ЌҐ ¬Ґ­пҐв яяя 3

RETяяяяяяяяяяяяяяяяя ‚л室 Ё§ Ї®¤Їа®Ја ¬¬ляяяяяяяяяя PC < STACKяяяяяяя ЌҐ ¬Ґ­пҐв 4

RETIяяяяяяяяяяяяяяяя ‚л室 Ё§ ЇаҐалў ­Ёпяяяяяяяяяяяяяяя PC < STACKяяяяяяя Iяяяяяяяяяяяяя 4

CPSEяя Rd, Rrяя ‘а ў­Ёвм, Їа®ЇгбЄ Ґб«Ё а ў­®я if(Rd=Rr) PC
CPяяяяяя Rd, Rrяя ‘а ў­Ёвмяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя Rd - Rrяяяяяяяяяяяяяяяяяя Z,N,V,C,H 1

CPCяяя Rd, Rrяя ‘а ў­Ёвм б ЇҐаҐ­®б®¬яяяяяяяяяяяяя Rd - Rr - Cяяяяяяяяяяяя Z,N,V,C,H 1

CPIяяяяя Rd, Kяяя ‘а ў­Ёвм б Є®­бв ­в®©яяяяяяяяяяяяя Rd - Kяяяяяяяяяяяяяяяяяяя Z,N,V,C,H 1

SBRCя Rr, bяяяяя Џа®ЇгбЄ Ґб«Ё ЎЁв ў ॣЁбвॠбЎа®иҐ­яяяяяяяяяяяяяяяяяя if(Rr(b)=0) PC
SBRSя Rr, bяяяяя Џа®ЇгбЄ Ґб«Ё ЎЁв ў ॣЁбвॠгбв ­®ў«Ґ­яяяяяяяяяяяяяяя if(Rr(b)=1) PC
SBICяя P, bяяяяяя Џа®ЇгбЄ Ґб«Ё ЎЁв ў ॣ. ўў®¤ /ўлў. бЎа®иҐ­яяяяяяяяя if(P(b)=0) PC
SBISяяя P, bяяяяяя Џа®ЇгбЄ Ґб«Ё ЎЁв ў ॣ. ўў®¤ /ўлў. гбв ­®ў«Ґ­яяяяя if(P(b)=1) PC
BRBSя s, kяяяяяяя ЏҐаҐе®¤ Ґб«Ё гбв ­®ў«Ґ­ д« Ј sяяяяяяяяяяяяяяяяяяяяяяяяяяяяя if(SREG(s)=1) PC


BRBCя s, kяяяяяяя ЏҐаҐе®¤ Ґб«Ё бЎа®иҐ­ д« Ј sяя if(SREG(s)=0) PC
BREQя kяяяяяяяяяя ЏҐаҐе®¤ Ґб«Ё а ў­®яяяяяяяяяяяяяяяяяя if(Z=1) PC < PC+k+1яяяяяяяяя ЌҐ ¬Ґ­пҐвяяяя 1/2

BRNEя kяяяяяяяяяя ЏҐаҐе®¤ Ґб«Ё ­Ґа ў­®яяяяяяяяяяяяяяя if(Z=0) PC < PC+k+1яяяяяяяяя ЌҐ ¬Ґ­пҐвяяяя 1/2

BRCSя kяяяяяяяяяя ЏҐаҐе®¤ Ґб«Ё гбв ­®ў«Ґ­ ЇҐаҐ­®бяяяяяяяяяяяяяяяяяяяяяяяяяя if(C=1) PC < PC+k+1 ЌҐ ¬Ґ­пҐв 1/2

BRCCя kяяяяяяяяяя ЏҐаҐе®¤ Ґб«Ё бЎа®иҐ­ ЇҐаҐ­®б if(C=0) PC < PC+k+1яяяяяяяяя ЌҐ ¬Ґ­пҐвяяяя 1/2

BRSHя kяяяяяяяяяя ЏҐаҐе®¤ Ґб«Ё а ў­® Ё«Ё Ў®«миҐяяяяяяяяяяяяяяяяяяяяяяяяяяяяя if(C=0) PC < PC+k+1 ЌҐ ¬Ґ­пҐв 1/2

BRLOя kяяяяяяяяяя ЏҐаҐе®¤ Ґб«Ё ¬Ґ­миҐяяяяяяяяяяяяяяя if(C=1) PC < PC+k+1яяяяяяяяя ЌҐ ¬Ґ­пҐвяяяя 1/2

BRMIя kяяяяяяяяяя ЏҐаҐе®¤ Ґб«Ё ¬Ё­гбяяяяяяяяяяяяяяяяяя if(N=1) PC < PC+k+1яяяяяяяяя ЌҐ ¬Ґ­пҐвяяяя 1/2

BRPLя kяяяяяяяяяя ЏҐаҐе®¤ Ґб«Ё Ї«обяяяяяяяяяяяяяяяяяяя if(N=0) PC < PC+k+1яяяяяяяяя ЌҐ ¬Ґ­пҐвяяяя 1/2

BRGEя kяяяяяяяяяя ЏҐаҐе®¤ Ґб«Ё Ў®«миҐ Ё«Ё а ў­®, б® §­ Є®¬яяяяяяяяяяя if(N XOR V=0) PC
BRLTяя kяяяяяяяяяя ЏҐаҐе®¤ Ґб«Ё ¬Ґ­миҐ ­г«п, б® §­ Є®¬яяяяяяяяяяяяяяяяяяяя if(N XOR V=1) PC
BRHSя kяяяяяяяяяя ЏҐаҐе®¤ Ґб«Ё гбв ­®ў«Ґ­ д« Ј Hяяяяяяяяяяяяяяяяяяяяяяяяяяяя if(H=1) PC < PC+k+1 ЌҐ ¬Ґ­пҐв 1/2

BRHCя kяяяяяяяяяя ЏҐаҐе®¤ Ґб«Ё бЎа®иҐ­ д« Ј Hя if(H=0) PC < PC+k+1яяяяяяяяя ЌҐ ¬Ґ­пҐвяяяя 1/2

BRTSя kяяяяяяяяяя ЏҐаҐе®¤ Ґб«Ё гбв ­®ў«Ґ­ д« Ј Tяяяяяяяяяяяяяяяяяяяяяяяяяяяя if(H=1) PC < PC+k+1 ЌҐ ¬Ґ­пҐв 1/2

BRTCя kяяяяяяяяяя ЏҐаҐе®¤ Ґб«Ё бЎа®иҐ­ д« Ј Tяя if(H=0) PC < PC+k+1яяяяяяяяя ЌҐ ¬Ґ­пҐвяяяя 1/2

BRVSя kяяяяяяяяяя ЏҐаҐе®¤ Ґб«Ё гбв ­®ў«Ґ­ д« Ј V (ЇҐаҐЇ®«­Ґ­ЁҐ)яя if(H=1) PC < PC+k+1 ЌҐ ¬Ґ­пҐв 1/2

BRVCя kяяяяяяяяяя ЏҐаҐе®¤ Ґб«Ё бЎа®иҐ­ д« Ј Vя if(H=0) PC < PC+k+1яяяяяяяяя ЌҐ ¬Ґ­пҐвяяяя 1/2

BRIEяя kяяяяяяяяяя ЏҐаҐе®¤ Ґб«Ё а §аҐиҐ­л ЇаҐалў ­Ёпяяяяяяяяяяяяяяяяяяяя if(I=1) PC < PC+k+1я ЌҐ ¬Ґ­пҐв 1/2

BRIDяя kяяяяяяяяяя ЏҐаҐе®¤ Ґб«Ё § ЇаҐйҐ­л ЇаҐалў ­Ёпяяяяяяяяяяяяяяяяяяяя if(I=1) PC < PC+k+1я ЌҐ ¬Ґ­пҐв 1/2



 

Њ­Ґ¬®­.яяяяяяяяя ЋЇҐа ­¤ляяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ЋЇЁб ­ЁҐяяяяяяяяяяяя „Ґ©бвўЁҐ ”« ЈЁяяяяяяяяяяя –Є«

ЉЋЊЂЌ„› Џ…ђ…‘›‹Љ€

MOVяяяя я Rd,Rrяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ЏҐаҐбл«Є  ¬Ґ¦¤г ॣЁбва ¬Ёяя яяяяя Rd< Rrяяяяяяяяяя яяяяяяяяяяя ЌҐ ¬Ґ­пҐвяяяяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя 1

LDIяяяяяя яя Rd,Kяяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ‡ Јаг§Ёвм Є®­бв ­вгяяя яяяяяяя Rd< Kяяяяяяяяяяя яяяяяяяяяяя ЌҐ ¬Ґ­пҐвяяяяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя 1

LDяяяяяяя яя Rd,Xяяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ‡ Јаг§Ёвм ॣЁбва ­ҐЇ®б।б⢥­­®яяяяяяяяя яяяяяяяяяяя Rd< (X)яяяяяяяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ЌҐ ¬Ґ­пҐвяяяяяя яяяяяя 2

LDяяяяяяя яя Rd,X+яяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ‡ Јаг§Ёвм ॣЁбва ­ҐЇ®б।. c Ї®бв Ё­ЄаҐ¬.яя яяяяяяяяяяя Rd< (X),X< X+1яяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ЌҐ ¬Ґ­пҐвяяяяяя яяяяяя 2

LDяяяяяяя яя Rd,-Xяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ‡ Јаг§Ёвм ॣЁбва ­ҐЇ®б। б ЇаҐ¤ў а. ¤ҐЄаҐ¬.я я X< X-1,Rd< (X)яяя яяяяяяяяяяяяяяяяяяяяяяяяяяя ЌҐ ¬Ґ­пҐвяяяяяя яяяяяя 2

LDяяяяяяя яя Rd,Yяяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ‡ Јаг§Ёвм ॣЁбва ­ҐЇ®б।б⢥­­®яяяяяяяяя яяяяяяяяяяя Rd< (Y)яяяяяяяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ЌҐ ¬Ґ­пҐвяяяяяя яяяяяя 2

LDяяяяяяя яя Rd,Y+яяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ‡ Јаг§Ёвм ॣЁбва ­ҐЇ®б।. c Ї®бв Ё­ЄаҐ¬.яя яяяяяяяяяяя Rd< (Y),Y< Y+1яяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ЌҐ ¬Ґ­пҐвяяяяяя яяяяяя 2

LDяяяяяяя яя Rd,-Yяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ‡ Јаг§Ёвм ॣЁбва ­ҐЇ®б।. б ЇаҐ¤ў а.¤ҐЄаҐ¬.я яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя Y< Y-1,Rd< (Y)яяя яяяяяяяяяяяяя ЌҐ ¬Ґ­пҐвяяяяяя яяяяяяяяяяя 2

LDDяяяяяя я Rd,Y+qяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ‡ Јаг§Ёвм ॣЁбва ­ҐЇ®б।. ᮠᬥ饭ЁҐ¬яяяя яяяяяяяяяяя Rd< (Y+q)яяяяяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ЌҐ ¬Ґ­пҐвяяяяяя яяяяяя 2

LDяяяяяяя яя Rd,Zяяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ‡ Јаг§Ёвм ॣЁбва ­ҐЇ®б।б⢥­­®яяяяяяяяя яяяяяяяяяяя Rd< (Z)яяяяяяяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ЌҐ ¬Ґ­пҐвяяяяяя яяяяяя 2



LDяяяяяяя яя Rd,Z+яяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ‡ Јаг§Ёвм ॣЁбва ­ҐЇ®ба. c Ї®бв Ё­ЄаҐ¬Ґ­в®¬яя Rd< (Z),Z< Z+1яяя яяяяяяяяяяяяяяяяяя ЌҐ ¬Ґ­пҐвяяяяяя яяяяяя 2

LDяяяяяяя яя Rd,-Zяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ‡ Јаг§Ёвм ॣЁбва ­ҐЇ®б।. б ЇаҐ¤ў.¤ҐЄаҐ¬.я яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя Z< Z-1,Rd< (Z)яяя яяяяяяяяяяяяя ЌҐ ¬Ґ­пҐвяяяяяя яяяяяяяяяяя 2

LDDяяя яяяя Rd,Z+qяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ‡ Јаг§Ёвм ॣЁбва ­ҐЇ®б।. ᮠᬥ饭ЁҐ¬яяяя яяяяяяяяяяя Rd< (Z+q)яяяяяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ЌҐ ¬Ґ­пҐвяяяяяя яяяяяя 2

LDSяяяяяя я Rd,kяяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ‡ Јаг§Ёвм Ё§ Ћ‡“яяяяяя яяяяяяяя Rd< (k)яяяяяяяяя яяяяяяяяяяя ЌҐ ¬Ґ­пҐвяяяяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя 3

STяяяяяяя яя X,Rrяяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ‡ ЇЁб вм ॣЁбва ­ҐЇ®б।б⢥­­®яяяяяяяяя яяяяяяяяяяя (X)< Rrяяяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ЌҐ ¬Ґ­пҐвяяяяяя яяяяяя 2

STяяяяяяя яя X+,Rrяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ‡ ЇЁб вм ॣЁбва ­ҐЇ®б।. c Ї®бв Ё­ЄаҐ¬Ґ­в®¬.яя (X)< Rr,X< X+1яяя яяяяяяяяяяяяяяяяяя ЌҐ ¬Ґ­пҐвяяяяяя яяяяяя 2

STяяяяяя яяя я-X,Rrяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ‡ ЇЁб вм ॣЁбва ­ҐЇ®б।. c ЇаҐ¤.¤ҐЄаҐ¬Ґ­в®¬.яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя X< X-1,(X)< Rrяяя яяяяяяяяяяяяя ЌҐ ¬Ґ­пҐвяяяяяя яяяяяяяяяяя 2

STяяяяяяя яя Y,Rrяяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ‡ ЇЁб вм ॣЁбва ­ҐЇ®б।б⢥­­®яяяяяяяяя яяяяяяяяяяя (Y)< Rrяяяяяяяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ЌҐ ¬Ґ­пҐвяяяяяя яяяяяя 2

STяяяяяяя яя Y+,Rrяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ‡ ЇЁб вм ॣЁбва ­ҐЇ®б।.c Ї®бв Ё­ЄаҐ¬Ґ­в®¬. я (Y)< Rr,Y< Y+1яяя яяяяяяяяяяяяяяяяяя ЌҐ ¬Ґ­пҐвяяяяяя яяяяяя 2

STяяяяяяя яя -Y,Rrяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ‡ ЇЁб вм ॣЁбва ­ҐЇ®б।.c ЇаҐ¤. ¤ҐЄаҐ¬Ґ­в®¬.яя Y< Y-1,(Y)< Rrяяя яяяяяяяяяяяяяяяяяяя ЌҐ ¬Ґ­пҐвяяяяяя яяяяяя 2

STDяяяя Y+q,Rrя ‡ ЇЁб вм ॣЁбва ­ҐЇ®б।.


ᮠᬥ饭ЁҐ¬яяяяяяяяяяя (Y+q)< Rrяяяяяяя ЌҐ ¬Ґ­пҐвяяяяяя яяяяяя 2

STяяяяяяя яя Z,Rrяяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ‡ ЇЁб вм ॣЁбва ­ҐЇ®б।б⢥­­®яяяяяяяяя яяяяяяяяяяя (Z)< Rrяяяяяяяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ЌҐ ¬Ґ­пҐвяяяяяя яяяяяя 2

STяяяяяяя яя Z+,Rrяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ‡ ЇЁб вм ॣЁбва ­ҐЇ®б।. c Ї®бвя Ё­ЄаҐ¬Ґ­в®¬.яя (Z)< Rr,Z< Z+1яяя яяяяяяяяяяяяяяяяяяя ЌҐ ¬Ґ­пҐвяяяяяя яяяяяя 2

STяяяяяяя яя -Z,Rrяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ‡ ЇЁб вм ॣЁбва ­ҐЇ®б।. c ЇаҐ¤. ¤ҐЄаҐ¬Ґ­в®¬.яя Z< Z-1,(Z)< Rrяяя яяяяяяяяяяяяяяяяяяяя ЌҐ ¬Ґ­пҐвяяяяяя яяяяяя 2

STDяяяяяя я Y+q,Rrяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ‡ ЇЁб вм ॣЁбва ­ҐЇ®б।. ᮠᬥ饭ЁҐ¬яяяяяяяяяяя (Y+q)< Rrя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ЌҐ ¬Ґ­пҐвяяяяяя яяяяяя 2

STSяяяяяя я k,Rrяяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ‡ ЇЁб вм ў Ћ‡“яяяяяяяя яяяяяяяяяя (k)< Rrяяяяяяяяя яяяяяяяяяяя ЌҐ ¬Ґ­пҐвяяяяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя 3

LPMяяяяяяяяяяяяяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ‡ Јаг§Ёвм Ё§ Ї ¬пвЁ Їа®Ја ¬¬.я яяя R0< (Z)яяяяяяяяя яяяяяяяяяяя ЌҐ ¬Ґ­пҐвяяяяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя 3

INяяяяяяя яяя Rd, Pяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ‚ў®¤ Ё§ Ї®ав яяяяяяяяя яяяяяяяяяяяя Rd< Pяяяяяяя яяяяяяяяяяяяяяя ЌҐ ¬Ґ­пҐвяяяяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя 1

OUTяяяяяя P, Rrяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ‚лў®¤ ў Ї®авяяяяяяяяяя яяяяяяяяяяя P< Rrяяяяяяяяяяя яяяяяяяяяяя ЌҐ ¬Ґ­пҐвяяяяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя 1

PUSHяяяяя Rrяяяяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ‡ ЇЁб вм ў б⥪яяяяяяя яяяяяяяяяяя STACK< Rrяяяяяяя яяяяяяяяяяя ЌҐ ¬Ґ­пҐвяяяяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя 2

POPяяяяяя я Rrяяяяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя Џа®зЁв вм Ё§ б⥪ яяяя яяяяяяяя Rr< STACKяяяяяяя яяяяяяяяяяя ЌҐ ¬Ґ­пҐвяяяяяя яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя 2



ЉЋЊЂЌ„› ђЂЃЋ’› ‘ Ѓ€’ЂЊ€

SBIяяяяя P,bяяяяяяя “бв ­®ўЁвм ЎЁв ў ॣЁбвॠўў®¤ /ўлў®¤ яяяяяяяяяяяяяяя I/O(P,b) < 1яяяяяя ЌҐ ¬Ґ­пҐв 2

CBIяяяяя P,bяяяяяяя ‘Ўа®бЁвм ЎЁв ў ॣЁбвॠўў®¤ /ўлў®¤ яяяяяяяяяяяяяяяяя I/O(P,b) < 0яяяяяя ЌҐ ¬Ґ­пҐв 2

LSLяяяя Rdяяяяяяяя ‹®ЈЁзҐбЄЁ© б¤ўЁЈ ў«Ґў®яяяяяяяяяя Rd(n+1)
LSRяяяя Rdяяяяяяяя ‹®ЈЁзҐбЄЁ© б¤ўЁЈ ўЇа ў®яяяяяяяя Rd(n)
ROLяяя Rdяяяяяяяя ‘¤ўЁЈ ў«Ґў® зҐаҐ§ Cяяяяяяяяяяяяяяяяя Rd(0)
яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя Rd(n+1)
RORяяя Rdяяяяяяяя ‘¤ўЁЈ ўЇа ў® зҐаҐ§ Cяяяяяяяяяяяяяя Rd(7) < C, яяяяяяяяяя Z,C,N,Vя 1

яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя Rd(n) < Rd(n+1), C < Rd(0)

ASRяяя Rdяяяяяяяя ЂаЁд¬ҐвЁзҐбЄЁ© б¤ўЁЈ ўЇа ў® Rd(n) < Rd(n+1), n=0..6яяяяя Z,C,N,Vяяяяяяя 1

SWAPя Rdяяяяяяяя ЋЎ¬Ґ­ ­ЁЎЎ«®ўяяяяяяяяяяяяяяяяяяяяяяяяя Rd(3-0) < Rd(7-4), яяяяяяяяяяяяя ЌҐ ¬Ґ­пҐвяяяя 1

яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя Rd(7-4) < Rd(3-0)

BSETяя sяяяяяяяяяяя “бв ­®ўЁвм д« Јяяяяяяяяяяяяяяяяяяяяяяя SREG(s) < 1яяяяяяяя SREG(s) 1

BCLRя sяяяяяяяяяяя ‘Ўа®бЁвм д« Јяяяяяяяяяяяяяяяяяяяяяяяяяя SREG(s) < 0яяяяяяяя SREG(s) 1

BSTяяяя Rr,bяяяяяя ‡ Ї®¬­Ёвм ЎЁв ў Tяяяяяяяяяяяяяяяяяяяя T < Rr(b)яяяяяяяяяяяяя Tяяяяяяяяяяяя 1

BLDяяяя Rd, bяяяя Џа®зЁв вм ЎЁв Ё§ Tяяяяяяяяяяяяяяяяяя Rd(b) < Tяяяяяяяяяяяя ЌҐ ¬Ґ­пҐв 1

SECяяяяяяяяяяяяяяяяя “бв ­®ўЁвм ЇҐаҐ­®бяяяяяяяяяяяяяяяяяя C < 1яяяяяяяяяяяяяяяяяяя Cяяяяяяяяяяя 1

CLCяяяяяяяяяяяяяяяяя ‘Ўа®бЁвм ЇҐаҐ­®бяяяяяяяяяяяяяяяяяяяя C < 0яяяяяяяяяяяяяяяяяяя Cяяяяяяяяяяя 1

SENяяяяяяяяяяяяяяяяя “бв ­®ўЁвм д« Ј Nяяяяяяяяяяяяяяяяяяяя N < 1яяяяяяяяяяяяяяяяяяя Nяяяяяяяяяяя 1

CLNяяяяяяяяяяяяяяяяя ‘Ўа®бЁвм д« Ј Nяяяяяяяяяяяяяяяяяяяяяя N < 0яяяяяяяяяяяяяяяяяяя Nяяяяяяяяяяя 1

SEZяяяяяяяяяяяяяяяяя “бв ­®ўЁвм д« Ј Zяяяяяяяяяяяяяяяяяяяя Z < 1яяяяяяяяяяяяяяяяяяяя Zяяяяяяяяяяяя 1

CLZяяяяяяяяяяяяяяяяя ‘Ўа®бЁвм д« Ј Zяяяяяяяяяяяяяяяяяяяяяяя Z < 0яяяяяяяяяяяяяяяяяяяя Zяяяяяяяяяяяя 1



SEIяяяяяяяяяяяяяяяяяя ђ §аҐиЁвм ЇаҐалў ­Ёпяяяяяяяяяяяя I < 1яяяяяяяяяяяяяяяяяяяяя Iяяяяяяяяяяяяя 1

CLIяяяяяяяяяяяяяяяяяя ‡ ЇаҐвЁвм ЇаҐалў ­Ёпяяяяяяяяяяяяя I < 0яяяяяяяяяяяяяяяяяяяяя Iяяяяяяяяяяяяя 1

SESяяяяяяяяяяяяяяяяя “бв ­®ўЁвм д« Ј Sяяяяяяяяяяяяяяяяяяяя S < 1яяяяяяяяяяяяяяяяяяяя Sяяяяяяяяяяяя 1

CLSяяяяяяяяяяяяяяяяя ‘Ўа®бЁвм д« Ј Sяяяяяяяяяяяяяяяяяяяяяяя S < 0яяяяяяяяяяяяяяяяяяяя Sяяяяяяяяяяяя 1

SEVяяяяяяяяяяяяяяяяя “бв ­®ўЁвм д« Ј Vяяяяяяяяяяяяяяяяяяяя V < 1яяяяяяяяяяяяяяяяяяя Vяяяяяяяяяяя 1

CLVяяяяяяяяяяяяяяяяя ‘Ўа®бЁвм д« Ј Vяяяяяяяяяяяяяяяяяяяяяя V < 0яяяяяяяяяяяяяяяяяяя Vяяяяяяяяяяя 1

SETяяяяяяяяяяяяяяяяя “бв ­®ўЁвм д« Ј Tяяяяяяяяяяяяяяяяяяяя T < 1яяяяяяяяяяяяяяяяяяя Tяяяяяяяяяяяя 1

CLTяяяяяяяяяяяяяяяяя ‘Ўа®бЁвм д« Ј Tяяяяяяяяяяяяяяяяяяяяяя T < 0яяяяяяяяяяяяяяяяяяя Tяяяяяяяяяяяя 1

SEHяяяяяяяяяяяяяяяяя “бв ­®ўЁвм д« Ј Hяяяяяяяяяяяяяяяяяяяя H < 1яяяяяяяяяяяяяяяяяяя Hяяяяяяяяяяя 1

CLHяяяяяяяяяяяяяяяяя ‘Ўа®бЁвм д« Ј Hяяяяяяяяяяяяяяяяяяяяяя H < 0яяяяяяяяяяяяяяяяяяя Hяяяяяяяяяяя 1

NOPяяяяяяяяяяяяяяяя ЌҐв ®ЇҐа жЁЁяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ЌҐ ¬Ґ­пҐв 1

SLEEPяяяяяяяяяяяяя Ћбв ­®ўяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ЌҐ ¬Ґ­пҐв 3

WDRяяяяяяяяяяяяяяя ‘Ўа®б бв®а®¦Ґў®Ј® в ©¬Ґа яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя ЌҐ ¬Ґ­пҐв 1


ОБРАБОТКА ПРЕРЫВАНИЙ


AT90S2313 имеет два регистра маски прерываний GIMSK - общий ре­гистр маски прерываний, расположенный по адресу $3B($5B) и TIMSK - регистр маски прерываний от таймера/счетчика - по адресу $39($59).

Когда возникает прерывание, общий бит разрешения прерываний I очи­щается (ноль) и прерывания запрещаются. Программа пользователя может установить этот бит для разрешения прерываний. Флаг разрешения преры­ваний I устанавливается в 1 при выполнении команды выхода из прерыва­ния - RETI.

Для прерываний включаемых статическими событиями (т.е. переключа­емыми уровнем) (например совпадение  значения  счетчика/таймера 1 с  регистром совпадения) флаг прерывания взводится, когда происходит событие. Ес­ли флаг прерывания очищен и присутствует условие возникновения преры­вания, флаг не будет установлен, пока не произойдет следующее собы­тие.

Когда программный счетчик устанавливается на текущий вектор пре­рывания для обработки прерывания, соответствующий флаг, сгенерированный прерыванием, аппаратно сбрасывается. Некоторые флаги прерывания могут быть сброшены записью логической единицы в бит соответствующий флагу.



ОБЩИЙ РЕГИСТР ФЛАГОВ ПРЕРЫВАНИЙ - GIFR


Бит

$3A($5A)

Чт./зап. (R/W)

Начальн. знач.

7

6

5

4

3

2

1

0

INTF1

INTF0

-

-

-

-

-

-

GIFR

R/W

R/W

R

R

R

R

R

R

0

0

0

0

0

0

0

0

 Бит 7 - INTF1: Флаг внешнего прерывания 1: При возникновении на  выводе INT1 события, вызывающего прерывание, INTF1 устанавливается в "1". Если установлены бит  I регистра SREG  и бит INT1  в GIMSK, происходит переход на вектор прерывания по адресу $002. Флаг очищается после  выполнения обработчика прерывания. Кроме того, флаг можно очистить,  записав в него логическую единицу.

 Бит 6 - INTF0: Флаг внешнего прерывания 0: При возникновении на  выводе INT0 события вызывающего прерывание, INTF0 устанавливается в "1". Если установлены бит  I регистра SREG  и бит INT0  в GIMSK, происходит переход на вектор прерывания по адресу $001. Флаг очищается после  выполнения обработчика прерывания. Кроме того, флаг можно очистить,  записав в него логическую единицу.

Биты 5..0 - зарезервированы. В AT90S2313 эти биты зарезервированы  и всегда читаются как 0.



ОБЩИЙ РЕГИСТР МАСКИ ПРЕРЫВАНИЙ - GIMSK


Бит

$3B($5B)

Чт./зап. (R/W)

Начальн. знач.

7

6

5

4

3

2

1

0

INT1

INT0

-

-

-

-

-

-

GIMSK

R/W

R/W

R

R

R

R

R

R

0

0

0

0

0

0

0

0

Бит 7 - Запрос внешнего прерывания 1 разрешен. Когда этот  бит установлен, а также установлен  бит I регистра состояния,  разрешается прерывание от  внешнего вывода.   Биты  управления запуском прерывания (ISC11 и ISC10) в регистре управления микроконтроллером (MCUCR)  определяют по какому событию отрабатывается прерывание - по спадающему или нарастающему фронту или же по уровню. При  возникновении  прерывания  выполняется  программа, начинающаяся с адреса $002 в памяти программ. (см. также "Внешние прерывания").

Бит 6 -  INT0: Запрос внешнего прерывания 0 разрешен. Когда этот бит установлен, а также установлен бит I регистра состояния, разрешается прерывание от внешнего вывода. Биты управления запуском прерывания (ISC01 и ISC00) в регистре управления микроконтроллером (MCUCR) опре­деляют по какому событию отрабатывается прерывание - по спадающему или нарастающему фронту или же по уровню. Если вывод INT0 используется для работы с внешним источником прерывания, бит DDD2 в регистре направле­ния данных порта D (DDRD), должен быть сброшен в 0, чтобы вывод INT0 работал как вход. При  возникновении  прерывания  выполняется  программа, начинающаяся с адреса $001 в памяти программ. (см. также "Внешние прерывания").

Биты 5..0 - зарезервированы. В AT90S2313 эти биты зарезервированы и всегда читаются как 0.



Регистровый файл быстрого доступа содержит


Регистровый файл быстрого доступа содержит 32 8-разрядных регистра общего назначения, доступ к которым осуществляется за один машинный цикл. Поэтому за один машинный цикл исполняется одна операция АЛУ. Два операнда выбираются из  регистрового файла, выполняется  операция, результат ее  записывается в  регистровый файл  - все  за один  машинный цикл.

Шесть из  32 регистров  можно использовать  как три  16-разрядных указателя в адресном пространстве данных, что дает возможность использовать высокоэффективную адресную арифметику (16-разрядные регистры X, Y и Z). Один из  трех адресных указателей (регистр Z)  можно использовать для адресации таблиц в памяти программ. Это X-, Y- и Z-регистры.

АЛУ поддерживает арифметические и логические операции с регистрами, с  константами и  регистрами. Операции  над отдельными  регистрами также выполняются в АЛУ.

Кроме регистровых операций, для работы с регистровым файлом могут использоваться доступные режимы адресации, поскольку регистровый  файл занимает адреса $00-$1F  в области данных, обращаться к ним можно  как к ячейкам памяти.

Пространство ввода состоит из 64 адресов для периферийных функций процессора, таких как управляющие регистры, таймеры/счетчики и другие. Доступ к пространству ввода/вывода может осуществляться непосредственно, как к ячейкам памяти расположенным после регистрового файла  ($20-$5F).

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

При помощи  команд относительных  переходов и  вызова подпрограмм осуществляется доступ ко  всему адресному пространству.  Большая часть команд AVR имеет размер 16-разрядов, одно слово. Каждый адрес в памяти программ содержит одну 16- или 32-разрядную команду.



При обработке прерываний и вызове подпрограмм адрес возврата  запоминается в стеке. Стек  размещается в памяти данных  общего назначения, соответственно размер  стека ограничен только  размером доступной памяти данных и ее использованием в программе. Все программы пользователя должны инициализировать указатель стека (SP) в программе, выполняемой после сброса (до  того как вызываются подпрограммы  и разрешаются прерывания). 8-разрядный указатель стека доступен для чтения/записи  в области ввода/вывода.

Доступ к 128 байтам статического ОЗУ, регистровому файлу и регистрам ввода/вывода осуществляется при помощи пяти доступных режимов адресации поддерживаемых архитектурой AVR.

Все пространство памяти AVR является линейным и непрерывным.

Гибкий модуль прерываний имеет собственный управляющий регистр  в пространстве ввода/вывода, и флаг глобального разрешения прерываний  в регистре состояния. Каждому прерыванию назначен свой вектор в  начальной области  памяти программ.  Различные прерывания  имеют приоритет в соответствии с расположением их векторов. По младшим адресам  расположены векторы с большим приоритетом.


ОПИСАНИЕ ВЫВОДОВ


Микроконтроллер AT90S2313

VCC - вывод источника питания

GND - земля

Port B (PB7..PB0) - Порт B является 8-битовым двунаправленным портом ввода/вывода. Для выводов порта предусмотрены внутренние под­тягивающие резисторы (выбираются для каждого бита). Выводы PB0 и PB1 также являются положительным (AIN0) и отрицательным (AIN1) входами встроенного аналогового компаратора. Выходные буферы порта B могут по­глощать ток до 20мА и непосредственно управлять светодиодными индика­торами. Если выводы PB0..PB7 используются как входы и извне устанавли­ваются в низкое состояние, они являются источниками тока, если включе­ны внутренние подтягивающие резисторы. Кроме того, Порт B обслуживает некоторые специальные функции, которые будут описаны ниже.

Port D (PD6..PD0) - Порт D является 7-битовым двунаправленным портом с внутренними подтягивающими резисторами. Выходные буферы порта D могут поглощать ток до 20мА. Как входы установленные в низкое состо­яние, выводы порта D являются источниками тока, если задействованы подтягивающие резисторы. Кроме того, Порт D обслуживает некоторые спе­циальные функции, которые будут описаны ниже.

RESET - Вход сброса. При удержании на входе низкого уровня в те­чение двух машинных циклов (если генератор работает), сбрасывает уст­ройство.

XTAL1 - вход инвертирующего усилителя генератора и вход внешнего тактового сигнала.

XTAL2 - Выход инвертирующего усилителя генератора.



ПАРАМЕТРЫ ВНЕШНЕГО ТАКТОВОГО СИГНАЛА


Параметр

Vcc=2.7...6.0 V

Vcc=4.0...6.0 V

Ед.

мин.

макс.

мин.

макс.

Частота

0

4

0

10

МГц

Период

250

100

нс

Длительность '1'

100

40

нс

Длительность '0'

100

40

нс

Длительность фронта (спада)

1,6

0.5

мкс



Передача данных


Передача данных инициируется записью передаваемых данных в  регистр ввода/вывода данных UART - UDR. Данные пересылаются из UDR в сдвиговый регистр передатчика когда:

     - новый  символ записывается  в UDR  после того  как был выдвинут стоповый бит для предыдущего  символа. При этом сдвиговый  регистр загружается сразу.

     - новый символ записывается в  UDR до того, как выдвинут  стоповый бит для предыдущего символа.  При этом сдвиговый регистр  записывается сразу после того, как будет выдвинут стоповый бит предыдущего символа. При этом в регистре состояния UART - USR устанавливается бит-признак очистки регистра данных -  UDRE/. Когда этот бит установлен,  UART готов к приему следующего символа. Пре перезаписи UDR в 10(11)- разрядный сдвиговый регистр, бит 0 сдвигового регистра обнуляется  (стартовый бит), а бит 9 или 10 устанавливается (стоповый бит). Если  выбрано 9-битовое слово данных (установлен бит CHR9 в регистре UCR), бит  TXB8 из UCR переписывается в 9-й бит сдвигового регистра передатчика.

После тактового импульса, следующего с частотой передачи, стартовый бит выдвигается на вывод  TXD. Затем выдвигаются данные, начиная  с младшего бита. После того как выдвинут стоповый бит, в сдвиговый  регистр загружаются новые данные, если они были записаны в UDR во  время передачи. При  загрузке устанавливается  бит UDRE.  Если до выдвижения стопового бита в регистр UDR не поступают новые данные, UDRE  остается установленным до последующей записи UDR. Если новые данные не поступили и на выводе TXD появляется стоповый бит, в регистре USR устанавливается флаг окончания передачи - TXC.

Установка бита TXEN в UCR разрешает работу передатчика. При очистке бита TXEN, вывод PD1 можно использовать для ввода/вывода  данных. Если бит TXEN установлен, передатчик UART подключен к выводу PD1 независимо от установки бита DDD1 в регистре DDRD.



Порт B


Порт B 8-разрядный двунаправленный порт.

Для обслуживания порта отведено три регистра: регистр данных PORTB ($18, $38), регистр направления данных - DDRB ($17, $37) и выводы порта B ($16, $36). Адрес выводов порта B предназначен только для чтения, в то время как регистр данных и регистр направления данных - для чтения/записи.

Все выводы порта имеют отдельно подключаемые подтягивающие резисторы. Выходы порта B могут поглощать ток до 20 мА и непосредственно управлять светодиодными индикаторами. Если выводы PB0..PB7 используются как входы и замыкаются на землю, если включены внутренние подтягивающие резисторы, выводы являются источниками тока (IIL). Дополнительные функции выводов порта B приведены в таблице 16.

Таблица 16. Альтернативные функции выводов порта B.

Вывод

Альтернативная функция

PB0

AIN0 (Положительный вход аналогового компаратора)

PB1

AIN1 (Отрицательный вход аналогового компаратора)

PB5

MOSI (Вход данных для загрузки памяти)

PB6

MISO (Выход данных для чтения памяти)

PB7

SCK (Вход тактовых импульсов последовательного обмена)

При использовании альтернативных функций выводов. Регистры DDRB и PORTB должны быть установлены в соответствии с описанием альтернатив­ных функций.



Порт B, как порт ввода/вывода общего назначения


Все 8 бит порта B при использовании для ввода/вывода одинаковы.

Бит DDBn регистра DDRB выбирает направление передачи данных. Если бит установлен (1), вывод сконфигурирован как выход. Если бит сброшен (0) - вывод сконфигурирован как вход. Если PORTBn установлен и вывод сконфигурирован как вход, включается КМОП подтягивающий резистор. Для отключения резистора, PORTBn должен быть сброшен (0) или вывод должен быть сконфигурирован как выход.

АЛЬТЕРНАТИВНЫЕ ФУНКЦИИ ПОРТА B

SCK   - бит 7 порта B - тактовые импульсы для записи/чтения памяти

MISO - бит 6 порта B - выход данных для чтения памяти

MOSI - бит 5 порта B - вход данных для записи памяти

OC1 - PORTB, Bit 3 - Выход совпадения. Этот вывод может быть  сконфигурирован для внешнего вывода  события  - совпадения таймера 1. Для  этого бит DDB3 должен быть установлен в 1 (вывод сконфигурирован как выход).

AIN1 - бит 1 порта B - Отрицательный вход аналогового компаратора. Если вывод сконфигурирован как вход (DDB1 сброшен) и отключен внутренний подтягивающий резистор (PB0 сброшен), этот вывод работает как отрицательный вход встроенного аналогового компаратора.

AIN0 - бит 0 порта B - Положительный вход аналогового компаратора. Если вывод сконфигурирован как вход (DDB0 сброшен) и отключен внутренний подтягивающий резистор (PB1 сброшен), этот вывод работает как положительный вход встроенного аналогового компаратора.

Таблица 17. Влияние DDBn на выводы порта B

DDBn

PORTBn

Вх/Вых

Подт.резист

Комментарий

0

0

Вход

Нет

Третье состояние (Hi-Z)

0

1

Вход

Да

PBn источник тока IIL, если извне соединен с землей

1

0

Выход

Нет

Выход установлен в 0

1

1

Выход

Нет

Выход установлен в 1

n = 7,6...0 - номер вывода




Порт D


Для порта D зарезервированы 3 ячейки памяти - регистр PORTD ($12, $32), регистр направления данных - DDRD ($11, $31) и выводы порта D - PIND ($10, $30). Регистры данных и направления данных могут читаться/записывать­ся, ячейка PIND - только для чтения.

Порт D - 7-разрядный двунаправленный порт с встроенными подтягивающими регистрами. Выходные буферы порта могут поглощать ток до 20 мА. Если выводы используются как входы и на них подан низкий уровень, они являются источниками тока IIL, если подключены подтягивающие рези­сторы. Некоторые из выводов порта имеют альтернативные функции, как показано в таблице 18.

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

Таблица 18. Альтернативные функции порта D

Вывод порта

Альтернативная функция

PD0

RXD (вход данных UART)

PD1

TXD (выход данных UART)

PD2

INT0 (вход внешнего прерывания 0)

PD3

INT1 (вход внешнего прерывания 1)

PD4

T0 (внешний вход таймера счетчика 0)

PD5

T1 (внешний вход таймера счетчика 1)

PD6

ICP (вход захвата таймера счетчика 1)



Порт D, как порт ввода/вывода общего назначения


Все 7 бит порта D при использовании для ввода/вывода одинаковы.

Бит DDDn регистра DDRD выбирает направление передачи данных. Если бит установлен (1), вывод сконфигурирован как выход. Если бит сброшен (0) - вывод сконфигурирован как вход. Если PORTDn установлен и вывод сконфигурирован как вход, включается КМОП подтягивающий резистор. Для отключения резистора, PORTDn должен быть сброшен (0) или вывод должен быть сконфигурирован как выход.

Таблица 19. Влияние DDDn на выводы порта D

DDDn

PORTDn

Вх/Вых

Подт.резист

Комментарий

0

0

Вход

Нет

Третье состояние (Hi-Z)

0

1

Вход

Да

PDn источник тока IIL, если извне соединен с землей

1

0

Выход

Нет

Выход установлен в 0

1

1

Выход

Нет

Выход установлен в 1

n = 6...0 - номер вывода



Прием данных.


Логическая схема  приемника обрабатывает  сигнал на  выводе RXD с частотой в 16 больше скорости передачи (для обработки одного бита принимаемой последовательности, производится  16 выборок входного  сигнала). В состоянии ожидания одна выборка логического нуля  интерпретируется как спадающий фронт  стартового бита, после чего  запускается последовательность обнаружения  стартового бита.  Если в  первой выборке сигнала обнаружен нулевой отсчет, приемник обрабатывает 8, 9 и 10  выборки сигнала на выводе  RXD. Если хотя бы  две из трех выборок  равны логической единице, стартовый бит считается шумом и приемник ждет следующего перехода из 1 в 0.

Если обнаружен  стартовый бит,  начинается обработка  бит данных. Решение об уровне данных также производится по 8, 9 и 10 выборкам входного сигнала, уровень входного сигнала определяется по равенству двух выборок. После того как уровень данных определен, данные вдвигаются  в сдвиговый регистр приемника.

Для определения стопового бита хотя бы две из трех выборок  входного сигнала должны быть равны  1. Если это условие не  выполняется, в регистре USR устанавливается флаг ошибки кадра FE. Перед чтением  данных из регистра UDR пользователь должен проверять бит FE для обнаружения ошибок кадра.

Независимо от  принятия правильного  стопового бита  по окончанию  приема символа принятые данные переписываются в UDR и  устанавливается флаг RXC в регистре USR. Физически регистр UDR состоит из двух отдельных регистров,  один используется  для передачи  данных, другой  - для приема. При чтении UDR происходит доступ к регистру приемника, при записи - к регистру передатчика.  При обмене 9-битовыми данными 9-й  бит принятых данных записывается в бит RXB8 регистра UCR.

Если при приеме символа из регистра UDR не был прочитан  предыдущий символ, в регистре UCR устанавливается флаг переполнения - OR. Установка этого бита означает, что последний принятый байт данных не переписывается из сдвигового регистра в регистр UDR и будет потерян. Бит OR буферирован и обновляется при чтении правильных данных из UDR.  Таким образом,  пользователь всегда  может проверить  состояние OR после чтения UDR и обнаружить происшедшее переполнение.

При сбросе бита RXEN в регистре UCR прием данных запрещается. При этом вывод PD0 можно использовать для ввода/вывода общего  назначения. При установке RXEN, приемник подключен к выводу PD0 независимо от  состояния бита DDD0 в регистре DDRD.



Пространство ввода/вывода


Ниже приведено описание пространства ввода/вывода для процессоров AT90S2313.

Все устройства ввода/вывода  и периферийные устройства  AT90S2313 располагаются в пространстве ввода/вывода. Различные ячейки этого пространства доступны через команды  IN и OUT, пересылающие  данные между одним из 32-х регистров общего назначения и пространством ввода/вывода. К регистрам $00..$1F можно осуществлять побитовый доступ командами SBI и  CBI. Значение  отдельного бита  этих регистров  можно проверить командами SBIC и SBIS. Дополнительную информацию по этому вопросу можно найти в описании системы команд.

При использовании специальных команд IN, OUT, SBIS и SBIC, должны использоваться адреса  $00..$3F. При  доступе к  регистру ввода/вывода как к ячейке ОЗУ, к его адресу необходимо добавить $20. В  приведенной выше таблице адреса регистров в памяти данных приведены в скобках.

 Таблица 1. Пространство ввода/вывода AT90S2313.

$3F($5F)

SREG

Status REGister

Регистр Состояния

$3D($5D)

SPL

Stack pointer low

Указатель стека, мл. байт

$3B($5B)

GIMSK

General Interrupt MaSK register

Общий регистр маски прерываний

$3A($5A)

GIFR

General Interrupt Flag register

Общий регистр флагов прерываний

$39($59)

TIMSK

Timer/counter Inter­rupt mask register

Регистр маски прерываний от таймера/счетчика

$38($58)

TIFR

Timer/counter Inter­rupt Flag register

Регистр флага прерывания таймера/счетчика

$35($55)

MCUCR

MCU general Control Register

Общий  регистр управления микроконтроллером

$33($53)

TCCR0

Timer/Counter 0 Control Register

Регистр управления таймером счетчиком 0

$32($52)

TCNT0

Timer/Counter 0 (8-бит)

Таймер/счетчик 0 (8 бит)

$2F($4F)

TCCR1A

Timer/Counter 1 Control Register A

Регистр A управления таймером счетчиком 1

$2E($4E)

TCCR1B

Timer/Counter 1 Control Register B

Регистр B управления таймером счетчиком 1

$2D($4D)

TCNT1H

Timer/Counter 1 High byte

Таймер/счетчик 1 старший байт

$2C($4C)

TCNT1L

Timer/Counter 1 Low  byte

Таймер/счетчик 1 младший байт

$2B($4B)

OCR1H

Output Compare Register 1 high byte

Выход регистра совпадения 1старший байт

$2A($4A)

ICR1L

Output Compare Register 1 low  byte

Выход регистра совпадения  1 младший байт

$25($45)

ICR1H

T/C 1 Input Cupture Register High Byte

Регистр захвата Т\С 1 старший байт

$24($44)

ICR1L

T/C 1 Input Cupture Register Low  Byte

Регистр захвата Т\С 1 младший байт

$21($41)

WDTCR

Watchdog Timer Control Register

Регистр управления стороже­вым таймером

$1E($3E)

EEAR

EEPROM Address Register

Регистр адреса энергонезави­симой памяти

$1D($3D)

EEDR

EEPROM Data Register

Регистр данных энергонезави­симой памяти

$1C($3C)

EECR

EEPROM Control Register

Регистр управления энергоне­зависимой памятью

$18($38)

PORTB

Data Register, Port B

Регистр данных порта B

$17($37)

DDRB

Data Direction Register Port B

Регистр направления данных порта B

$16($36)

PINB

Input pins, Port B

Выводы порта B

$12($32)

PORTD

Data Register, Port D

Регистр данных порта D

$11($31)

DDRD

Data Direction Register Port D

Регистр направления данных порта D

$10($30)

PIND

Input pins, Port D

Выводы порта D

$0C($2C)

UDR

UART Data Register

Регистр данных последовательного порта

$0B($2B)

USR

UART Status Register

Регистр состояния последовательного порта

$0A($2A)

UCR

UART Control Register

Регистр управления последовательного порта

$09($29)

UBRR

UART Baud Rate Register

Регистр скорости   последовательного порта

$08($28)

ACSR

Analog Comparator Cont­rol and Status Register

Регистр управления и состоя­ния аналогового компаратора

Примечание: зарезервированные и неиспользуемые ячейки не показаны.




РЕГИСТР A УПРАВЛЕНИЯ ТАЙМЕРОМ/СЧЕТЧИКОМ 1 - TCCR1A


Бит

$2F ($4F)

Чт./зап. (R/W)

Начальн.знач.

7

6

5

4

3

2

1

0

COM1A1

COM1A0

-

-

-

-

PWM11

PWM10

TCCR1A

R/W

R/W

R

R

R

R

R/W

R/W

0

0

0

0

0

0

0

0

Биты 7,6 - COM1A1, COM1A0: Режим  выхода совпадения, биты 1 и 0:  Эти управляющие биты задают отклик вывода OC1 процессора на совпадение регистра сравнения  и таймера/счетчика  1. Поскольку  это альтернативная функция порта,  соответствующий бит  направления должен  устанавливать вывод на выход. Конфигурация управляющих бит показана в следующей таблице:

Таблица 7. Установка режима совпадения.

COM1A1

COM1A0

Описание

0

0

Таймер/счетчик 1 отключен от вывода OC1

0

1

Переключение выхода OC1

1

0

Сброс (0) вывода OC1

1

1

Установка (1) вывода OC1

В режиме ШИМ эти биты имеют другие функции, которые указаны в таблице 11.

При изменении битов COM1A1 и COM1A0 прерывание по совпадению должно быть запрещено, очисткой  соответствующего бита в регистре  TIMSK. Иначе, прерывание может произойти во время изменения битов.

Биты 5..2 - зарезервированы. В AT90S2313 эти биты зарезервированы  и всегда читаются как 0.

Биты 1,0 - PWM11, PWM10: Биты установки ШИМ: Эти биты  устанавливают режим работы таймера/счетчика 1 в качестве ШИМ (см. табл. 8).  Подробнее этот режим будет рассмотрен ниже.

Таблица 8. Установка режима работы ШИМ.

PWM11

PWM10

Описание

0

0

Работа ШИМ запрещена

0

1

8-разрядный ШИМ

1

0

9-разрядный ШИМ

1

1

10-разрядный ШИМ



РЕГИСТР АДРЕСА EEPROM - EEAR


Бит

$1E($3E)

Чт./зап. (R/W)

Начальн.знач.

7

6

5

4

3

2

1

0

-

EEAR6

EEAR5

EEAR4

EEAR3

EEAR2

EEAR1

EEAR0

 EEAR

R

R/W

R/W

R/W

R/W

R/W

R/W

R/W

0

0

0

0

0

0

0

0

Бит 7 - зарезервирован. В AT90S2313 этот бит зарезервирован и всегда читается как 0.

Биты 6..0 - EEAR6..0 - Адрес EEPROM. Адресный регистр EEPROM  задает адрес в 128-байтном пространстве EEPROM. Байты данных EEPROM адресуются линейно в диапазоне 0..127.



РЕГИСТР B УПРАВЛЕНИЯ ТАЙМЕРОМ/СЧЕТЧИКОМ 1 - TCCR1B


Бит

$2E ($4E)

Чт./зап. (R/W)

Начальн.знач.

7

6

5

4

3

2

1

0

ICNC1

ICES1

-

-

CTC1

CS12

CS11

CS10

TCCR1B

R/W

R/W

R

R

R/W

R/W

R/W

R/W

0

0

0

0

0

0

0

0

Бит 7 - ICNC1: Подавитель входного шума входа захвата: Если этот  бит сброшен (0), подавление входного шума входа захвата запрещено. При этом захват срабатывает по  первому заданному (нарастающему или спадающему) фронту  сигнала на выводе ICP. При установке бита обрабатываются четыре последовательные  выборки сигнала  на выводе  ICP. Для срабатывания захвата  все  выборки  должны  соответствовать  уровню, заданному битом ICES1. Частота выборок равна тактовой частоте процессора.

Бит 6 - ICES1: выбор фронта сигнала захвата: Если бит ICES1  сброшен (0) содержимое таймера/счетчика 1 переписывается в регистр захвата  по спадающему фронту сигнала на выводе ICP. Если бит установлен - по  нарастающему фронту сигнала.

Биты 5,4 - зарезервированы.  В AT90S2313 эти биты  зарезервированы и всегда читаются как 0.

Бит 3 - CTC1: Очистка таймера счетчика 1 по совпадению: Если бит установлен (1),  таймер/счетчик 1  устанавливается в  $0000 в такте следующем за событием совпадения. Если бит сброшен, таймер/счетчик 1 продолжает считать пока не будет остановлен, сброшен, произойдет его  переполнение или изменение направления счета.  В режиме ШИМ этот бит  не работает.

Биты 2,1,0 - CS12, CS11, CS10: выбор тактирования: Эти биты определяют источник счетных импульсов для таймера/счетчика 1.

Таблица 9. Выбор источника счетных импульсов.

CS12

CS11

CS10

Описание

0

0

0

Таймер/счетчик остановлен

0

0

1

CK

0

1

0

CK/8

0

1

1

CK/64

1

0

0

CK/256

1

0

1

CK/1024

1

1

0

Внешний вывод T1, нарастающий фронт

1

1

1

Внешний вывод T1, спадающий фронт



РЕГИСТР ДАННЫХ EEPROM - EEDR


Бит

$1D ($3D)

Чт./зап. (R/W)

Начальн.знач.

7

6

5

4

3

2

1

0

MSB

-

-

-

-

-

-

LSB

 EEDR

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

0

0

0

0

0

0

0

0

Биты 7..0 - EEDR7..0 - Данные EEPROM. Для операции записи регистр EEDR содержит данные, которые будут записаны в EEPROM по адресу в ре­гистре EEAR. Для операции чтения в этот регистр читаются данные прочи­танные из EEPROM по адресу в регистре EEAR.



РЕГИСТР ДАННЫХ ПОРТА B - PORTB


Бит

$18

Чт./зап. (R/W)

Начальн.знач.

7

6

5

4

3

2

1

0

PORTB7

PORTB6

PORTB5

PORTB4

PORTB3

PORTB2

PORTB1

PORTB0

 PORTB

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

0

0

0

0

0

0

0

0



РЕГИСТР ДАННЫХ ПОРТА D - PORTD


Бит

$12($32)

Чт./зап. (R/W)

Начальн.знач.

7

6

5

4

3

2

1

0

-

PORTD6

PORTD5

PORTD4

PORTD3

PORTD2

PORTD1

PORTD0

 PORTD

R

R/W

R/W

R/W

R/W

R/W

R/W

R/W

0

0

0

0

0

0

0

0



РЕГИСТР МАСКИ ПРЕРЫВАНИЯ ОТ ТАЙМЕРОВ/СЧЕТЧИКОВ - TIMSK


Бит

$39($59)

Чт./зап. (R/W)

Начальн.знач.

7

6

5

4

3

2

1

0

TOIE1

OCIE1A

-

-

TICIE1

-

TOIE0

-

TIMSK

R/W

R/W

R

R

R/W

R

R/W

R

0

0

0

0

0

0

0

0

Бит 7 - TOIE1: Разрешение прерывания по переполнению  таймера/счетчика 1: Если установлен этот бит и бит разрешения прерываний в регистре состояния, разрешены прерывания по переполнению таймера/счетчика 1. Соответствующее прерывание (вектор $005) выполняется при  переполнении таймера/счетчика 1. В регистре флагов таймеров/счетчиков (TIFR)  устанавливается флаг переполнения. Если таймер/счетчик 1 работает в режиме ШИМ, флаг переполнения устанавливается при изменении направления  счета, при значении $0000.

Бит 6 - OCIE1A: Разрешение прерывания по совпадению таймера/счетчика 1: Если установлены бит OCIE1A и бит разрешения прерывания в регистре состояния, разрешены прерывания по совпадению таймера/счетчика  1. Прерывание (вектор $004) выполняется при равенстве таймера/счетчика  1 и регистра совпадения. Во флаговом регистре TIFR устанавливается ("1") флаг совпадения.

Биты 5,4 - зарезервированы; в AT90S2313 эти биты зарезервированы и всегда читаются как 0.

Бит 3 - TICIE1: Разрешение прерывания по входу захвата: Если  установлены бит TICIE1 и  бит разрешения прерывания в  регистре состояния, разрешены  прерывания  по  входу  захвата.  Соответствующее прерывание (вектор $003) выполняется по  сигналу захвата на выводе  11 (PD6/ICP). Во флаговом регистре TIFR устанавливается ("1") флаг захвата.

Бит 2 - зарезервирован; в AT90S2313 этот бит зарезервирован и  всегда читается как 0.

Бит 1 - TOIE0: Разрешение прерывания по переполнению таймера/счетчика 0. Если этот бит установлен в 1, и бит I в регистре состояния установлен в 1, разрешены  прерывания по переполнению таймера/счетчика  0. При возникновении переполнения выполняется соответствующий вектор прерывания ($006). Флаг переполнения (TOV0) во флаговом регистре прерываний (TIFR) таймеров/счетчиков устанавливается в 1.

Бит 0 - зарезервирован; в AT90S2313 этот бит зарезервирован и  всегда читается как 0.



РЕГИСТР НАПРАВЛЕНИЯ ДАННЫХ ПОРТА B - DDRB


Бит

$17

Чт./зап. (R/W)

Начальн.знач.

7

6

5

4

3

2

1

0

DDB7

DDB6

DDB5

DDB4

DDB3

DDB2

DDB1

DDB0

 DDRB

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

0

0

0

0

0

0

0

0



РЕГИСТР НАПРАВЛЕНИЯ ДАННЫХ ПОРТА D - DDRD


Бит

$11($31)

Чт./зап. (R/W)

Начальн.знач.

7

6

5

4

3

2

1

0

-

DDD6

DDD5

DDD4

DDD3

DDD2

DDD1

DDD0

 DDRD

R

R/W

R/W

R/W

R/W

R/W

R/W

R/W

0

0

0

0

0

0

0

0



РЕГИСТР СКОРОСТИ ПЕРЕДАЧИ (UBRR)


 

Бит

$09 ($29)

Чт./зап. (R/W)

Начальн.знач.

7

6

5

4

3

2

1

0

MSB

-

-

-

-

-

-

LSB

UBRR

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

0

0

0

0

0

0

0

0

Это 8-разрядный регистр, который задает скорость передачи последовательного порта в соответствии с выражением приведенным выше.



Регистр состояния - SREG


Регистр состояния расположен по адресу $3F($5F) пространства ввода/вы­вода и определен следующим образом:

Бит

$3F($5F)

Чт./зап. (R/W)

Начальн. знач.

7

6

5

4

3

2

1

0

I

T

H

S

V

N

Z

C

 SREG

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

0

0

0

0

0

0

0

0

Бит 7 -        I: Общее разрешение прерываний. Для разрешения прерываний этот бит должен быть установлен в единицу. Управление отдельными пре­рываниями производится регистром маски прерываний - GIMSK/TIMSK. Если флаг сброшен (0), независимо от состояния GIMSK/TIMSK, прерывания не разрешены. Бит I очищается аппаратно после входа в прерывание и вос­станавливается командой RETI, для разрешения обработки следующих пре­рываний.

Бит 6 -        T: Хранение копируемого бита. Команды копирования битов BLD (Bit LoaD) и BST (Bit STore) используют этот бит как источник и прием­ник обрабатываемого бита. Бит из регистра регистрового файла может быть скопирован в T командой BST, бит T может быть скопирован в бит регистрового файла командой BLD.

Бит 5 -        H: Флаг половинного переноса. Этот флаг индицирует перенос из младшей половины байта при некоторых арифметических операциях. Более подробно об этом можно прочитать в описании системы команд.

Бит 4 -        S: бит знака, S = N XOR V. Бит S всегда равен исключающему ИЛИ между флагами N (отрицательный результат) и V (переполнение допол­нения до двух). Более подробно об этом можно прочитать в описании сис­темы команд.

Бит 3 -        V: Флаг переполнения дополнения до двух. Этот флаг поддержи­вает арифметику с дополнением до двух. Более подробно об этом можно прочитать в описании системы команд.

Бит 2 -        N: Флаг отрицательного результата. Этот флаг индицирует отри­цательный результат различных арифметических и логических операций. Более подробно об этом можно прочитать в описании системы команд.

Бит 1 -        Z: Флаг нулевого результата. Этот флаг индицирует нулевой ре­зультат различных арифметических и логических операций. Более подробно об этом можно прочитать в описании системы команд.

Бит 0 -        C: Флаг переноса. Этот флаг индицирует перенос в арифметичес­ких и логических операциях. Более подробно об этом можно прочитать в описании системы команд.



РЕГИСТР СОСТОЯНИЯ UART (USR)


Бит

$0B($2B)

Чт./зап. (R/W)

Начальн.знач.

7

6

5

4

3

2

1

0

RXC

TXC

UDRE

FE

OR

-

-

-

USR

R

R

R

R

R

R

R

R

0

0

1

0

0

0

0

0

Регистр USR доступен только для чтения, в нем хранится информация о состоянии UART.

Bit 7 - RXC - прием завершен. Этот бит устанавливается в 1 когда принятый символ переписывается из сдвигового регистра приемника в  регистр UDR. Бит устанавливается независимо от обнаружения ошибки кадра. Если установлен бит RXCIE в регистре UCR, при установке бита  выполняется прерывание  по завершению  приема символа.  RXC сбрасывается  при чтении UDR. При использовании  приема данных по прерыванию,  обработчик прерывания должен читать регистр UDR для сброса RXC, иначе при  выходе из прерывания оно будет вызвано снова.

Bit 6 -  TXC - передача  завершена. Этот бит  устанавливается в 1 если символ из сдвигового регистра передатчика (включая стоповый  бит) передан, а в регистр UDR не были записаны новые данные. Этот флаг особенно  полезен  при  полудуплексной  связи, когда предающее устройство должно перейти в режим приема и освободить линию связи сразу по  окончанию передачи. Если установлен бит TXIE в регистре UCR, при установке TXC выполняется прерывания по окончанию передачи. TXC сбрасывается аппаратно при выполнении соответствующего вектора прерывания. Кроме  того, бит можно сбросить, записав в него 1.

Bit 5 - UDRE - регистр данных UART пуст. Этот бит устанавливается в 1 когда данные, записанные в UDR переписываются в регистр сдвига  передатчика. Установка этого бита означает, что передатчик готов принять следующий символ для  передачи. Если установлен  бит UDRIE в  регистре UCR, при установке этого бита выполняется прерывание окончания передачи. Бит UDRE сбрасывается  при записи регистра UDR.  При использовании передачи управляемой прерыванием, подпрограмма обслуживания прерывания должна записывать UDR,  чтобы сбросить бит  UDRE, иначе при  выходе из прерывания оно будет вызвано снова. При сбросе этот бит устанавливается в 1, чтобы проиндицировать готовность передатчика.

Bit 4 - FE - ошибка кадра. Этот бит устанавливается при обнаружении условия ошибки кадра, т.е. если стоповый бит принятого байта равен Бит FE сбрасывается при приеме единичного стопового бита.

Bit 3 - OR - переполнение. Этот бит устанавливается при обнаружении условия  переполнения, т.е.  когда символ  из регистра  UDR не был прочитан до того, как заполнился сдвиговый регистр приемника. Этот бит буферирован, т.е. остается установленным до тех пор, пока из  регистра UDR не будут  прочитаны правильные данные.  Бит OR сбрасывается,  когда принятые данные переписываются в UDR.

Биты 2..0 - зарезервированы. В AT90S2313 эти биты зарезервированы  и всегда читаются как 0.



РЕГИСТР СОВПАДЕНИЯ A ТАЙМЕРА/СЧЕТЧИКА 1 - OCR1AH И OCR1AL


Бит

$2B ($4B)

Чт./зап. (R/W)

Начальн.знач.

15

14

13

12

11

10

9

8

MSB

-

-

-

-

-

-

-

OCR1AH

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

0

0

0

0

0

0

0

0

Бит

$2A ($4A)

Чт./зап. (R/W)

Начальн.знач.

7

6

5

4

3

2

1

0

-

-

-

-

-

-

-

LSB

OCR1AL

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

0

0

0

0

0

0

0

0

Регистр совпадения - 16-разрядный регистр, доступный для чтения и записи.

В этом регистре хранятся данные, которые непрерывно  сравниваются с текущим значением таймера/счетчика 1. Действие по совпадению задается регистрами управления таймером/счетчиком 1 и регистром состояния.

Поскольку регистр OCR1A является 16-разрядным, при записи  нового значения в регистр, для того чтобы оба байта регистра записывались одновременно, используется временный регистр. При записи старшего байта, данные  помещаются  во  временный  регистр,  который  переписывается в OCR1AH при записи младшего байта в OCR1AL. Таким образом, для записи в регистр первым должен записываться старший байт.



РЕГИСТР УПРАВЛЕНИЯ EEPROM - EECR


Бит

$1C($3C)

Чт./зап. (R/W)

Начальн.знач.

7

6

5

4

3

2

1

0

-

-

-

-

-

EEMWE

EEWE

EERE

 EECR

R

R

R

R

R

R/W

R/W

R/W

0

0

0

0

0

0

0

0

Биты 7..3 - зарезервированы. В AT90S2313 эти биты зарезервированы  и всегда читаются как 0.

Бит 2 - EEMWE - Управление разрешением записи. Этот бит  определяет, будут ли записаны данные при  установке EEWE. Если бит EEMWE  установлен,  при  установке  EEWE  данные  записываются  по выбранному адресу EEPROM. Если этот бит сброшен,  установка EEWE не имеет эффекта. После программной установки  этот бит  сбрасывается аппаратно  через четыре такта процессора.

Бит 1  - EEWE  - Разрешение  записи в  EEPROM. Сигнал  EEWE является стробом записи в  EEPROM. После установки  правильных адреса и  данных для записи  в EEPROM  необходимо установить  бит EEWE. При записи "1" в бит EEWE должен быть установлен бит EEMWE, тогда происходит запись в EEPROM.   Для   записи   в   EEPROM   должна   соблюдаться   следующая последовательность:

    1. Ждем обнуления EEWE

    2. Записываем адрес в EEAR (не обязательно)

    3. Записываем данные в EEDR (не обязательно)

    4. Устанавливаем в 1 бит EEMWE

    5. Не позже чем через 4 такта после установки EEMWE  устанавливаем   EEWE

После того как  время записи истечет  (типично 2.5 mS  для Vcc=5V и 4mS для Vcc=2.7), бит EEWE очищается аппаратно. Пользователь может отслеживать этот бит и ожидать его установки в ноль, перед тем как записывать следующий байт. При установке EEWE, ЦПУ останавливается на  два цикла перед исполнением следующей команды.

Бит 0  - EERE  - разрешение  чтения из  EEPROM. Сигнал EERE является стробом чтения из  EEPROM. После установки  нужного адреса в  регистре EEAR, необходимо установить  бит EERE. После  того как бит  EERE будет аппаратно очищен, в регистре EEDR. Чтение EEPROM занимает одну команду и не требует отслеживания бита EERE. При установке бита EERE, ЦПУ  останавливается на  два цикла  перед тем  как будет  выполнена следующая команда. Перед  чтением пользователь  должен проверять  состояние бита EEWE, если  регистры данных  или адреса  изменяются во  время операции записи, запись в ячейку прерывается и результат операции записи  становится неопределенным.



РЕГИСТР УПРАВЛЕНИЯ И СОСТОЯНИЯ АНАЛОГОВОГО КОМПАРАТОРА - ACSR


Бит

$08($28)

Чт./зап. (R/W)

Начальн.знач.

7

6

5

4

3

2

1

0

ACD

-

ACO

ACI

ACIE

ACIC

ACIS1

ACIS0

ACSR

R/W

R

R

R/W

R/W

R/W

R/W

R/W

0

0

N/A

0

0

0

0

0

Бит 7 - ACD - Запрещение аналогового компаратора. Когда этот бит ус­тановлен, питание от аналогового компаратора отключается. Для отключе­ния компаратора этот бит можно установить в любое время. Обычно это свойство используется, если критично потребление процессора в холостом режиме и восстановление работы процессора от аналогового компаратора не требуется. При изменении бита ACD прерывания от аналогового компа­ратора должны быть запрещены сбросом ACIE в регистре ACSR. В противном случае прерывание может произойти во время изменения бита.

Бит 6 - зарезервирован. В AT90S2313 этот бит зарезервирован и всегда читается как 0.

Бит 5 - ACO - Выход аналогового компаратора. Бит ACO непосредственно подключен к выходу аналогового компаратора.

Бит 4 - ACI - Флаг прерывания от аналогового компаратора. Этот бит устанавливается, когда переключение выхода компаратора совпадает с ре­жимом прерывания установленным битами ACIS1 и ACIS0. Программа обрабо­тки прерывания от аналогового компаратора выполняется, если установлен бит ACIE (1) и установлен бит I в регистре состояния. ACI сбрасывается аппаратно при выполнении соответствующего вектора прерывания. Другой способ очистить ACI - записать во флаг логическую единицу.

Бит 3 - ACIE - Разрешение прерывания от аналогового компаратора. Ко­гда установлен этот бит и бит I регистра состояния, прерывания от ана­логового компаратора отрабатываются. Если бит очищен (0), прерывания запрещены.

Бит 2 -  ACIC - Захват по выходу аналогового компаратора. Если  этот бит установлен, функция захвата таймера/счетчика1 управляется  выходом аналогового компаратора. При этом выход компаратора подключается непосредственно к схеме  обработки захвата, предоставляя  удобные средства подавления шума и выбора фронта предусмотренные прерыванием захвата по входу.
Когда бит очищен, схема захвата и компаратор разъединены. Чтобы компаратор мог  управлять функцией  захвата таймера/счетчика1,  должен быть установлен бит TICIE1 в регистре TIMSK.

Биты 1,0 - ACIS1, ACIS0 - Выбор режима прерывания аналогового компа­ратора. Различные установки приведены в табл.15.

Таблица 15. Установки ACIS1/ACIS0

ACIS1

ACIS0

Описание

0

0

Прерывание от компаратора по переключению выхода

0

1

Зарезервировано

1

0

Прерывание от компаратора по спадающему фронту выхода

1

1

Прерывание от компаратора по нарастающему фронту выхода

Примечание: При изменении битов ACIS1/ACIS0 прерывания от аналогового компаратора должны быть запрещены сбросом бита разрешения прерывания в регистре ACSR. Иначе прерывание может произойти при изменении битов.


РЕГИСТР УПРАВЛЕНИЯ МИКРОКОНТРОЛЛЕРОМ – MCUCR


Этот регистр содержит биты общего управления микроконтроллером.

Бит

$35($55)

Чт./зап. (R/W)

Начальн.знач.

7

6

5

4

3

2

1

0

-

-

SE

SM

ISC11

ISC10

ISC01

ISC00

 MCUCR

R

R

R/W

R/W

R/W

R/W

R/W

R/W

0

0

0

0

0

0

0

0

Биты 7,6 - зарезервированы. В AT90S2313 эти биты зарезервированы и всегда читаются как 0.

Бит 5 - Sleep Enable -Разрешение режима Sleep. Этот бит должен быть установлен в 1, чтобы при выполнении команды SLEEP процессор переходил в режим пониженного энергопотребления (Sleep). Для использования режи­ма пониженного энергопотребления этот бит рекомендуется устанавливать в 1 до исполнения команды SLEEP.

Бит 4 -  Sleep Mode - Режим Sleep. Этот бит выбирает один из доступ­ных режимов пониженного энергопотребления. Если бит сброшен (0), то в ка­честве режима Sleep выбирается холостой режим (Idle mode). Если бит установлен, - выбирается экономичный режим (Power down). Особенности каждого из режимов будут рассмотрены ниже.

Биты 3,2 - ISC11, ISC10: биты управления срабатыванием прерывания  1: Внешнее прерывание  активируется выводом  INT1 если  установлен флаг I регистра состояния SREG и установлена соответствующая маска в регистре GIMSK. В таблице 4 приведена установка битов для задания  срабатывания по уровню и фронтам.

Биты 1,0 - ISC01, ISC00: биты управления срабатыванием прерывания  0: Внешнее прерывание  активируется выводом  INT0 если  установлен флаг I регистра состояния SREG и установлена соответствующая маска в регистре GIMSK. В таблице 5 приведена установка битов для задания  срабатывания по уровню и фронтам.

Таблица 4. Управление срабатыванием прерывания 1.

ISC11

ISC10

Описание

0

0

Запрос прерывания генерируется по низкому уровню на входе INT1

0

1

Зарезервировано

1

0

Запрос на прерывание по спадающему фронту на входе INT1

1

1

Запрос на прерывание по нарастающему фронту на входе INT1



ISC10 прерывание  INT1 должно быть


ПРИМЕЧАНИЕ: При  изменении битов  ISC11/ ISC10 прерывание  INT1 должно быть запрещено очисткой соответствующего бита в регистре GIMSK.  Иначе прерывание может возникнуть во время изменения битов.

Таблица 5. Управление срабатыванием прерывания 0.

ISC01

ISC00

Описание

0

0

Запрос прерывания генерируется по низкому уровню на входе INT0

0

1

Зарезервировано

1

0

Запрос на прерывание по спадающему фронту на входе INT0

1

1

Запрос на прерывание по нарастающему фронту на входе INT0

ПРИМЕЧАНИЕ: При изменении  битов ISC01 и  ISC00, прерывания по  входу INT0 должны быть запрещены сбросом бита разрешения прерывания в регистре GIMSK. Иначе прерывание может произойти при изменении значения битов.


РЕГИСТР УПРАВЛЕНИЯ СТОРОЖЕВЫМ ТАЙМЕРОМ - WDTCR


Бит

$21($41)

Чт./зап. (R/W)

Начальн.знач.

7

6

5

4

3

2

1

0

-

-

-

WDTOE

WDE

WDP2

WDP1

WDP0

 WDTCR

R

R

R

R/W

R/W

R/W

R/W

R/W

0

0

0

0

0

0

0

0

Биты 7..5 - зарезервированы. В AT90S2313 эти биты зарезервированы и всегда читаются как 0.

Бит 4 - WDTOE - разрешение выключения сторожевого таймера. При очистке бита WDE этот бит должен быть установлен (1). Иначе, работа сторожевого таймера  не прекращается.  Через четыре  такта после  установки этого бита, он аппаратно сбрасывается.

  Бит 3  - WDE-  разрешение сторожевого  таймера. Если  бит установлен (1), работа сторожевого таймера разрешена, если бит сброшен - запрещена. Сброс бита производится только в том случае, если бит WDTOE  установлен в 1. Для запрещения включенного сторожевого таймера должна  исполняться следующая процедура:

         1. Одной командой записать 1 в  WDTOE и WDE. Единица в WDE  должна   записываться даже в том случае если этот бит был установлен перед началом процедуры остановки таймера

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

Биты 2..0 - WDP2..0 - Биты предварительного делителя сторожевого таймера. Если работа сторожевого таймера разрешена, эти биты определя­ют предварительный коэффициент деления для сторожевого таймера. В таб­лице 13 приведены различные значения установок предварительного дели­теля и соответствующие им временные интервалы для напряжения питания Vcc=5V.

Таблица 13. Установки предварительного делителя сторожевого таймера

WDP2

WDP1

WDP0

Период времени

 

WDP2

WDP1

WDP0

Период времени

0

0

0

16 мс

1

0

0

256 мс

0

0

1

32 мс

1

0

1

512 мс

0

1

0

64 мс

1

1

0

1024 мс

0

1

1

128 мс

1

1

1

2048 мс



В AT90S2313 эти биты зарезервированы


Бит

$33($53)

Чт./зап. (R/W)

Начальн.знач.

7

6

5

4

3

2

1

0

-

-

-

-

-

CS02

CS01

CS00

 TCCR0

R

R

R

R

R

R/W

R/W

R/W

0

0

0

0

0

0

0

0

Биты 7..3 - зарезервированы. В AT90S2313 эти биты зарезервированы и всегда читаются как 0.

Биты 2,1,0 - CS02, CS01, CS00 - выбор тактовой частоты. Эти биты за­дают коэффициент деления предварительного делителя.

Таблица 6. Выбор коэффициента предварительного деления

CS02

CS01

CS00

Описание

0

0

0

Таймер/счетчик остановлен

0

0

1

CK

0

1

0

CK/8

0

1

1

CK/64

1

0

0

CK/256

1

0

1

CK/1024

1

1

0

Внешний вывод T0, нарастающий фронт

1

1

1

Внешний вывод T0, спадающий фронт

Условие Stop запрещает/разрешает функционирование таймера/счетчика. В режимах деления частота берется непосредственно от тактовых импульсов. При использовании работы от внешнего вывода предварительно должен быть установлен вывод регистра направления данных (0 - включает на ввод).


РЕГИСТР УПРАВЛЕНИЯ UART (UCR)


Бит

$0A($2A)

Чт./зап. (R/W)

Начальн.знач.

7

6

5

4

3

2

1

0

RXCIE

TXCIE

UDRIE

RXEN

TXEN

CHR9

RXB8

TXB8

UCR

R/W

R/W

R/W

R/W

R/W

R/W

R

W

0

0

0

0

0

0

1

0

Бит 7 - RXCIE - Разрешение прерыванию по окончанию приема. Если  этот бит установлен (1), установка бита  RXC в регистре USR приводит  к выполнению прерывания  по окончанию  приема (при  условии что  разрешены прерывания)

Бит 6 -  TXCIE - Разрешение  прерывания по окончанию  передачи. Если этот бит установлен,  установка бита TXC  в USR приводит  к выполнению прерывания по окончанию передачи (при условии, что прерывания разрешены).

Бит 5 - UDRIE - Прерывание по очистке регистра данных последовательного порта. Если этот бит установлен, установка бита UDRE в USR приводит к выполнению прерывания по очистке регистра данных UART (при условии, что прерывания разрешены).

Бит 4 - RXEN - Разрешение приемника. При установке этого бита разрешается работа  приемника UART. Если приемник выключен, флаги TXC, OR и FE не устанавливаются. Если эти флаги установлены, сброс RXEN не  очищает их.

Бит 3 - TXEN - Разрешение передатчика. При установке этого бита разрешается работа передатчика UART. При запрещении работы передатчика во время передачи символа,  он продолжает работать  пока не будет  очищен сдвиговый регистр и не будет передан символ, помещенный в UDR.

Бит 2 - CHR9 - 9-битовые посылки. Если этот бит установлен, принимаемые и передаваемые символы имеют  длину 9 бит. Для передачи  и приема 9-го символа используются биты RXB8 и TXB8 соответственно. 9-й бит можно использовать как дополнительный стоповый бит или как признак  четности.

Бит 1 - RXB8 - Бит  8 принимаемых данных. Если установлен бит  CHR9, сюда записывается 9-й бит принятых данных.

Бит 0 - TXB8 - Бит 8 передаваемых данных. Если установлен бит  CHR9, отсюда берется 9-й бит передаваемых данных.



РЕГИСТР ВВОДА/ВЫВОДА UART – UDR


Бит

$0C ($2C)

Чт./зап. (R/W)

Начальн.знач.

7

6

5

4

3

2

1

0

MSB

-

-

-

-

-

-

LSB

UDR

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

0

0

0

0

0

0

0

0

Физически регистр UDR  является двумя отдельными  регистрами, доступ к которым происходит по одному адресу. При записи происходит  запись в регистр передатчика, при чтении - читается регистр приемника.



РЕГИСТР ЗАХВАТА ТАЙМЕРА/СЧЕТЧИКА 1 - ICR1H И ICR1L


Бит

$25 ($45)

Чт./зап. (R/W)

Начальн.знач.

15

14

13

12

11

10

9

8

MSB

-

-

-

-

-

-

-

ICR1H

R

R

R

R

R

R

R

R

0

0

0

0

0

0

0

0

Бит

$24 ($44)

Чт./зап. (R/W)

Начальн.знач.

7

6

5

4

3

2

1

0

-

-

-

-

-

-

-

LSB

ICR1L

R

R

R

R

R

R

R

R

0

0

0

0

0

0

0

0

Регистр захвата 16-разрядный регистр, доступный только для чтения.

По нарастающему или спадающему фронту  (в соответствии с  выбором фронта импульса захвата ICES1) сигнала на выводе ICP текущее  значение таймера/счетчика 1  переписывается в  регистр захвата  ICR1. В  это же время устанавливается флаг захвата ICF1.

Поскольку регистр захвата  является 16-разрядным, для  чтения его значения, чтобы оба байта прочитались одновременно, используется  временный регистр. При чтении младшего байта ICR1L, он посылается в  ЦПУ, а старший байт регистра ICR1H переписывается во временный регистр. При чтении старшего  байта, он  принимается из  временного регистра. Таким образом для чтения 16-разрядного регистра первым должен читаться младший байт.



Режим холостого хода.


Когда бит SM сброшен (0), команда SLEEP переводит процессор в ре­жим холостого хода (Idle mode). ЦПУ останавливается, но Таймеры/Счет­чики, сторожевой таймер и система прерываний продолжают работать. Это позволяет процессору возобновлять работу как от внешних прерываний, так и по переполнению таймера/счетчика или по сбросу от сторожевого таймера. Если прерывание от аналогового компаратора не требуется, ана­логовый компаратор может быть отключен установкой бита ACD регистра ACSR. Это уменьшает потребляемую мощность в режиме холостого хода.



Режимы пониженного энергопотребления.


Для запуска режима пониженного энергопотребления должен быть ус­тановлен (1) бит SE регистра MCUCR, и должна быть исполнена команда SLEEP. Если во время нахождения в режиме пониженного потребления про­исходит одно из разрешенных прерываний, процессор начинает работать, исполняет подпрограмму обработки прерывания и продолжает выполнение программы с команды следующей за SLEEP. Содержимое регистрового файла и памяти ввода/вывода не изменяется. Если в режиме пониженного потреб­ления происходит сброс, процессор начинает выполнение программы с век­тора сброса.

Если используется прерывание по уровню, для вывода из режима Power Down, низкий уровень должен удерживаться на время достаточное для запуска генератора тактовых импульсов - 16 мс. Иначе флаг прерыва­ния может установиться в 0 до того как процессор начнет работу.



Сброс и обработка прерываний.


В AT90S2313 предусмотрены 10 источников прерываний.  Эти  прерывания и сброс имеют различные векторы в области памяти программ. Каждому из прерываний присвоен отдельный бит разрешающий данное прерывание при установке бита в 1, если бит I регистра состояния разрешает общее  обслуживание прерываний.

Самые младшие адреса памяти программ определены как векторы сброса и прерываний. Полный список векторов прерываний приведен в  таблице 2. Этот  список определяет  и приоритет  различных прерываний. Меньшие адреса соответствуют более  высокому уровню приоритета.  Самый высокий уровень у сброса, следующий приоритет у INT0 -  внешнего запроса  прерывания 0 и т.д.

Таблица 2. Сброс и векторы прерываний.

Номер вектора

Адрес

Источник

Описание прерывания

1

$000

RESET

Вывод сброса и сброс от сторо­жевого таймера

2

$001

INT0

Внешнее прерывание 0

3

$002

INT1

Внешнее прерывание 1

4

$003

TIMER1 CAPT1

Захват таймера/счетчика 1

5

$004

TIMER1 COMP1

Совпадение таймера/счетчика 1

6

$005

TIMER1 OVF1

Переполнение таймера/счетчика 1

7

$006

TIMER0,OVF0

Переполнение таймера/счетчика 0

8

$007

UART RX

Последовательный порт: прием закончен

9

$008

UART UDRE

Последовательный порт: регистр данных пуст

10

$009

UART TX

Последовательный порт: передача закончена

11

$00A

ANA_COMP

Аналоговый компаратор

Чаще всего используется следующая установка векторов прерываний в программе:

 Адрес  Метка        Код          Комментарий

 $000                 rjmp RESET      ; Обработка сброса

 $001                 rjmp EXT_INT0   ; Обработка IRQ0

 $002                 rjmp EXT_INT1   ; Обработка IRQ1

 $003                 rjmp TIM_CAPT1  ; Обработка захвата таймера 1

 $004                 rjmp TIM_COMP1  ; Обработка совпадения таймера 1

 $005                 rjmp TIM_OVF1    ; Обработка переполнения таймера 1

 $006                 rjmp TIM_OVF0   ; Обработка переполнения таймера 0

 $007                 rjmp UART_RXC   ; Обработка приема байта

 $008                 rjmp UART_DRE   ; Обработка освобождения UDR

 $009                 rjmp UART_TXC   ; Обработка передачи байта

 $00A                 rjmp ANA_COMP   ; Обработка аналогового компаратора

 $00B    MAIN:        <instr> xxx     ; Начало основной программы



СБРОС ОТ СТОРОЖЕВОГО ТАЙМЕРА


После отработки сторожевого таймера, генерируется короткий им­пульс сброса длительностью в один период тактовой частоты. По окончанию этого импульса внутренний таймер начинает отсчитывать время Ttout. Подробно работа сторожевого таймера будет рассмотрена дальше.



СБРОС ПО ВКЛЮЧЕНИЮ ПИТАНИЯ


Цепь сброса  по включению  питания обеспечивает  запрет включения процессора до тех пор, пока напряжение питания не достигнет безопасного уровня. После того, как напряжение питания достигнет уровня включения, процессор не включается до тех пор, пока встроенный таймер не обработает несколько рабочих  периодов сторожевого таймера.  Общее время сброса состоит из суммы времени Tpor и времени Tout (см. таблицу ниже).

Таблица 3. Характеристики сброса (Vcc=5.0 B).

Min

Typ

Max

Vpor

Напряжение срабатывания сброса по включению питания

1.8

2

2.2

В

Vrst

Напряжение срабатывания сброса по выводу RESET

VCC/2

В

Tpor

Сигнал сброса по включению питания

2

3

4

мс

Ttout

Задержка на отработку сброса (FSTRT не запрограммирован)

11

16

21

мс

Ttout

Задержка на отработку сброса (FSTRT запрограммирован)

1.0

1.1

1.2

мс

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

Поскольку к выводу  RESET подключен подтягивающий  резистор, этот вывод  может  оставаться  неподключенным,  если  не  требуется внешний сброс.  Подключение  вывода  RESET  к  напряжению  питания дает тот же эффект.  Время  включения  после  подачи  питания может быть увеличено удержанием вывода сброса на низком уровне.



счетчик1 регистр сравнения старший


Адрес

Название

Bit 7

Bit 6

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

Стр.

$3F($5F)

SREG

I

T

H

S

V

N

Z

C

14

$3E($5E)

З А Р Е З Е Р В И Р О В А Н

$3D($5D)

SPL

SP7

SP6

SP5

SP4

SP3

SP2

SP1

SP0

15

$3C($5C)

З А Р Е З Е Р В И Р О В А Н

$3B($5B)

GIMSK

INT1

INT0

-

-

-

-

-

-

20

$3A($5A)

GIFR

INTF1

INTF0

-

-

-

-

-

-

20

$39($59)

TIMSK

TOIE1

OCIE1A

-

-

TICIE1

-

TOIE0

-

21

$38($58)

TIFR

TOV1

OCF1A

-

-

ICF1

-

TOV0

-

22





З А Р Е З Е Р В И Р О В А Н Ы

$35($55)

MCUCR

-

-

SE

SM

ISC11

ISC10

ISC01

ISC00

25

$34($54)

З А Р Е З Е Р В И Р О В А Н

$33($53)

TCCR0

-

-

-

-

-

CS02

CS01

CS00

28

$32($52)

TCNT0

Таймер / счетчик (8 бит)

29





З А Р Е З Е Р В И Р О В А Н Ы

$2F($4F)

TCCR1A

COM1A1

COM1A0

-

-

-

-

PWM11

PWM10

30

$2E($4E)

TCCR1B

ICNC1

ICES1

-

-

CTC1

CS12

CS11

CS10

32

$2D($4D)

TCNT1H

Таймер/счетчик1 старший байт

33

$2C($4C)

TCNT1L

Таймер/счетчик1 младший байт

33

$2B($4B)

OCR1AH

Таймер/ счетчик1 регистр сравнения старший байт

34

$2A($4A)

OCR1AL

Таймер/счетчик1 регистр сравнения младший байт

34





З А Р Е З Е Р В И Р О В А Н Ы

$25($45)

ICR1H

Таймер/счетчик1 регистр захвата старший байт

34

$24($44)

ICR1L

Таймер/счетчик1 регистр захвата младший байт

35





З А Р Е З Е Р В И Р О В А Н Ы

$21($41)

WDTCR

-

-

-

WDTOE

WDE

WDP2

WDP1

WDP0

37





З А Р Е З Е Р В И Р О В А Н Ы

$1E($3E)

EEAR

-

Регистр адреса энергонезависимой памяти

39

$1E($3E)

EEDR

Регистр данных энергонезависимой памяти

39

$1E($3E)

EECR

-

-

-

-

-

EEMWE

EEWE

EERE

39





З А Р Е З Е Р В И Р О В А Н Ы

$18($38)

PORTB

PORTB7

PORTB6

PORTB5

PORTB4

PORTB3

PORTB2

PORTB1

PORTB0

48

$17($37)

DDRB

DDB7

DDB6

DDB5

DDB4

DDB3

DDB2

DDB1

DDB0

49

$16($36)

PINB

PINB7

PINB6

PINB5

PINB4

PINB3

PINB2

PINB1

PINB0

49





З А Р Е З Е Р В И Р О В А Н Ы

$12($32)

PORTD

-

PORTD6

PORTD5

PORTD4

PORTD3

PORTD2

PORTD1

PORTD0

51

$11($31)

DDRD

-

DDD6

DDD5

DDD4

DDD3

DDD2

DDD1

DDD0

52

$10($30)

PIND

-

PIND6

PIND5

PIND4

PIND3

PIND2

PIND1

PIND0

52





З А Р Е З Е Р В И Р О В А Н Ы

$0C($2C)

UDR

Регистр данных UART

42

$0B($2B)

USR

RXC

TXC

UDRE

FE

OR

-

-

-

43

$0A($2A)

UCR

RXCIE

TXCIE

UDRIE

RXEN

TXEN

CHR9

RXB8

TXB8

44

$09($29)

UBRR

Регистр скорости передачи UART

46

$08($28)

ACSR

ACD

-

ACO

ACI

ACIE

ACIC

ACIS1

ACIS0

46





З А Р Е З Е Р В И Р О В А Н Ы



Статическое ОЗУ данных


     На  следующем  рисунке  показана  организация  памяти  данных   в  AT90S2313:

Регистровый файл

 Область адресов данных

R0

$00

R1

$01

R30

$1E

R31

$1F

Регистры  вв./выв

$00

$20

$00

$21

$3E

$5E

$3F

$5F

Встроенное ОЗУ

$60

$61

$DE

$DF

224 ячейки памяти включают  в себя регистровый файл,  память ввода/вывода и статическое ОЗУ данных. Первые 96  адресов используются  для регистрового  файла и памяти ввода/вывода, следующие 128 - для ОЗУ данных.

При обращении к памяти используются пять различных режимов  адресации: прямой, непосредственный со смещением, непосредственный,  непосредственный с  предварительным декрементом  и непосредственный  с постинкрементном. Регистры  R26..R31 регистрового  файла используются  как указатели для непосредственной адресации.

Прямая адресация имеет доступ ко всей памяти данных.

Непосредственная адресация со смещением используется для  доступа к 63 ячейкам базовый адрес которых задается содержимым регистров Y или Z.

Для непосредственной адресации с инкрементом и декрементом адреса используются адресные регистры X, Y и Z.

При помощи любого из этих режимов производится доступ ко всем  32 регистрам общего назначения, 64  регистрам ввода/вывода и 128  ячейкам ОЗУ.



СТОРОЖЕВОЙ ТАЙМЕР


Сторожевой таймер работает от отдельного встроенного генератора работающего на частоте 1 МГц (это типовое значение частоты для питания 5В). Управляя предварительным делителем сто­рожевого таймера можно задавать интервал сброса таймера от 16 до 2048 периодов. Частота встроенного RC генератора зависит от напряжения пи­тания процессора.

Команда WDR сбрасывает сторожевой таймер. Для работы сторожевого таймера можно выбрать одно из 8-ми значений частоты, что позволяет в широких пределах изменять время между исполнением команды WDR и сбро­сом процессора. При отработке периода работы сторожевого таймера, если не поступила команда WDR, AT90S2313 сбрасывается, выполнение программы продолжается с вектора сброса.

Для предотвращения нежелательного отключения сторожевого таймера, для его запрещения должна выполняться определенная последовательность, которая описана при рассмотрении регистра WDTCR.



ТАЙМЕР/СЧЕТЧИК 0 - TCNT0.


Бит

$32($52)

Чт./зап. (R/W)

Начальн.знач.

7

6

5

4

3

2

1

0

MSB

-

-

-

-

-

-

LSB

 TCNT0

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

0

0

0

0

0

0

0

0

Таймер/счетчик реализован как нарастающий счетчик с возможностью чтения и записи. При записи таймера/счетчика, если присутствуют такто­вые импульсы, таймер/счетчик продолжает счет в следующем за  операцией записи тактовом цикле таймера.



ТАЙМЕР/СЧЕТЧИК 1 - TCNT1H И TCNT1L


Бит

$2D ($4D)

Чт./зап. (R/W)

Начальн.знач.

15

14

13

12

11

10

9

8

MSB

-

-

-

-

-

-

-

TCNT1H

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

0

0

0

0

0

0

0

0

Бит

$2C ($4C)

Чт./зап. (R/W)

Начальн.знач.

7

6

5

4

3

2

1

0

-

-

-

-

-

-

-

LSB

TCNT1L

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

0

0

0

0

0

0

0

0

Это 16-разрядный регистр, содержащий текущее значение таймера/счетчика 1. Чтобы чтение и запись двух байт счетчика происходило  синхронно, для работы с ним иcпользуется временный регистр (TEMP).

- Запись в таймер счетчик 1: При записи старшего байта в  TCNT1H, записываемые данные помещаются в регистр TEMP. Затем, при записи младшего байта, он вместе с данными из TEMP переписывается в  таймер/счетчик 1. Таким образом, при записи 16-разрядного значения первым  должен записываться байт в TCNT1H.

- Чтение таймера/счетчика 1: При чтении младшего байта из TCNT1L, он посылается в процессор, а данные из TCNT1H переписываются в регистр TEMP, то есть одновременно  читаются все 16-разрядов. При  последующем чтении регистра TCNT1H, данные берутся из регистра TEMP.

Таймер/счетчик 1  организован как  суммирующий счетчик  (в режиме ШИМ - суммирующий/вычитающий) с возможностью чтения и записи. Если выбран источник тактовых импульсов для таймера/счетчика 1, после  записи в него нового  значения, он продолжает  счет в следующем  после записи периоде тактовой частоты.



ТАЙМЕР/СЧЕТЧИК В РЕЖИМЕ ШИМ


При  выборе  режима  широтно-импульсной  модуляции  (ШИМ),   таймер/счетчик 1 и регистр совпадения OCR1A формируют 8, 9 или 10-разрядный непрерывный свободный от  "дрожания" и правильный по  фазе сигнал, выводимый на вывод PB3(OC1). Таймер/счетчик 1 работает как реверсивный счетчик считающий от 0 до конечного значения (см. табл.10). При достижении конечного значения счетчик  начинает считать в обратную  сторону до нуля, после чего рабочий цикл повторяется. Когда значение  счетчика совпадает  с  8,  9  или  10-ю  младшими  битами регистра OCR1A, вывод PD3(OC1) устанавливается или сбрасывается в соответствии с установками бит COM1A1 и COM1A0 в регистре TCCR1 (см. табл.11).

Таблица 10. Конечное значение таймера и частота ШИМ.

Разрешение ШИМ

Конечное значение таймера

Частота ШИМ

8 бит

$00FF (255)

Ftc1/510

9 бит

$01FF (511)

Ftc1/1022

10 бит

$03FF (1023)

Ftc1/2046

В режиме ШИМ, при записи в регистр OCR1A, 10 младших бит  передаются во временный регистр и переписываются только при достижении  таймером/счетчиком конечного значения. При этом устраняется появление несимметричных импульсов (дрожания),  которые неизбежны при  асинхронной записи OCR1A.

Таблица 11. Установка режима совпадения при работе ШИМ.

COM1A1

COM1A1

Влияние на вывод OC1

0

0

Не подключен

0

1

Не подключен

1

0

Очищается при совпадении, для возрастания  счетчика и сбрасывается для уменьшения (неинвертирующий ШИМ)

1

1

Очищается при совпадении, для уменьшения счетчика и сбрасывается для возрастания (инвертирующий ШИМ)

Если OCR1A содержит значение  $0000 или конечное значение  (TOP), вывод OC1 остается в  том состоянии, которое определяется  установками COM1A1 и COM1A0. Это показано в табл. 12.

Таблица 12. Выход ШИМ для OCR=$0000 или TOP

COM1A1

COM1A1

OCR1A

вывод OC1

1

0

$0000

Низкий

1

0

TOP

Высокий

1

1

$0000

Высокий

1

1

TOP

Низкий

В режиме ШИМ флаг  переполнения таймера 1 (TOV1)  устанавливается, когда счетчик изменяет направление счета в точке $0000. Прерывание  по переполнению  таймера  1  работает  как  при  нормальном режиме работы таймера/счетчика, т.е.  оно выполняется,  если установлен  флаг TOV1 и разрешены соответствующие прерывания. То же самое касается флага  совпадения и прерывания по совпадению.



ТАЙМЕРЫ/СЧЕТЧИКИ


В AT90S2313 предусмотрены два таймера/счетчика общего назначения, 8-разрядный и 16-разрядный. Каждый из таймеров индивидуально подключается к одному из выходов 10-разрядного предварительного делителя  частоты. Оба таймера могут использоваться как таймеры с внутренним источником импульсов или счетчики импульсов, поступающих извне.

В качестве источника импульсов для таймеров можно выбрать  сигнал с тактовой частотой процессора (CK), импульсы предварительного делителя (CK/8, CK/64, CK/256  или CK/1024) или импульсы  с  соответствующего внешнего вывода. Кроме того, таймеры могут быть остановлены,  запретом прохождения импульсов на них.



Указатель стека SP


Этот 8-разрядный  регистр с  адресом $3D  ($5D) хранит  указатель стека процессора  AT90S2313. 8-ми  разрядов достаточно,  для адресации ОЗУ в пределах $60-$DF.

Бит

$3D($5D)

Чт./зап. (R/W)

Начальн. знач.

7

6

5

4

3

2

1

0

SP7

SP6

SP5

SP4

SP3

SP2

SP1

SP0

 SPL

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

0

0

0

0

0

0

0

0

Указатель стека указывает на область памяти в которой  расположен стек вызова подпрограмм и прерываний.  Область стека в ОЗУ должна  быть задана до того как произойдет любой вызов подпрограммы или будут  разрешены прерывания. Указатель стека уменьшается на 1 при записи  данных в стек командой PUSH и уменьшается на 2 при вызове подпрограммы командой CALL или обработке прерывания. Указатель стека увеличивается на  1 при выборе данных из стека командой  POP и увеличивается на 2 при  выполнении команд  возврата из  подпрограммы или  обработчика прерывания (RET или RETI).



УНИВЕРСАЛЬНЫЙ АСИНХРОННЫЙ ПРИЕМО-ПЕРЕДАТЧИК


В состав AT90S2313  входит универсальный асинхронный  приемопередатчик (UART), его основные особенности:

    - генерация произвольных значений скорости

    - высокая скорость при низких тактовых частотах

    - 8 или 9 бит данных

    - фильтрация шума

    - Определение переполнения

    - Детектирование ошибки кадра

    - Определение неверного стартового бита

-         Три раздельных прерывания - завершение передачи, очистка регистра передачи и завершение приема.



ВНЕШНИЕ ПРЕРЫВАНИЯ


Внешние прерывания управляются выводами INT0 и INT1. Заметим, что прерывания обрабатываются даже когда выводы сконфигурированы как выходы. Это позволяет генерировать программные прерывания. Внешние  прерывания могут возникать по  спадающему или нарастающему фронту,  а также по низкому уровню. Это  устанавливается в регистре управления процессором MCUCR. Если внешние прерывания разрешены и сконфигурированы на отработку по уровню,  прерывание будет вырабатываться  до тех пор,  пока вывод удерживается в низком состоянии.

Управление работой  внешних прерываний  рассмотрено при  описании регистра управления процессором MCUCR.



ВНЕШНИЙ СБРОС


Внешнее прерывание генерируется низким уровнем на выводе RESET. Вывод должен удерживаться в низком состоянии, по крайней мере, на два периода тактовой частоты. После того как напряжение на выводе RESET достигнет значения Vrst, внутренний таймер запустит процессор после отработки времени Ttout.



ВРЕМЯ РЕАКЦИИ НА ПРЕРЫВАНИЕ


Минимальное время реакции на любое из предусмотренных в процессо­ре прерываний - 4 периода тактовой частоты. После четырех циклов вы­зывается программный вектор обрабатывающий данное прерывание. За эти 4 цикла программный счетчик (9 бит) записывается в стек, указатель стека уменьшается на 2. Программный вектор представляет собой относительный переход на подпрограмму обслу­живания прерывания и этот переход занимает 2 периода тактовой частоты. Если прерывание происходит во время выполнения команды длящейся неско­лько циклов, перед вызовом прерывания завершается выполнение этой команды.

Выход из программы обслуживания прерывания занимает 4 периода ак­товой частоты. За эти 4 периода из стека восстанавливается программный счетчик. После выхода из прерывания процессор всегда выполняет еще од­ну команду, прежде чем обслужить любое отложенное прерывание.

Заметим, что регистр состояния SREG аппаратно не обрабатывается процессором, как при вызове подпрограмм, так и при обслуживании преры­ваний. Если программа требует сохранения SREG, то это должно произво­диться программой пользователя.



Время выполнения команд.


ЦПУ процессора AVR управляется системной частотой генерируемой внешним резонатором. Внутреннее деление частоты генератора не исполь­зуется.

В процессоре организован буфер (pipeline) команд, при выборе команды из памяти программ происходит выполнение предыдущей команды. Подобная концепция позволяет достичь быстродействия 1MIPS на МГц, уни­кальных показателей стоимости, быстродействия и потребления процессо­ра.



ВЫВОДЫ ПОРТА B - PINB


Бит

$16

Чт./зап. (R/W)

Начальн.знач.

7

6

5

4

3

2

1

0

PINB7

PINB6

PINB5

PINB4

PINB3

PINB2

PINB1

PINB0

PINB

R

R

R

R

R

R

R

R

Hi-Z

Hi-Z

Hi-Z

Hi-Z

Hi-Z

Hi-Z

Hi-Z

Hi-Z

PINB не является регистром, по этому адресу осуществляется доступ к физическим значениям каждого из выводов порта B. При чтении PORTB, читаются данные из регистра-защелки, при чтении PINB читаются логичес­кие значения присутствующие на выводах порта.



ВЫВОДЫ ПОРТА D - PIND


Бит

$10 ($30)

Чт./зап. (R/W)

Начальн.знач.

7

6

5

4

3

2

1

0

-

PIND6

PIND5

PIND4

PIND3

PIND2

PIND1

PIND0

PIND

R

R

R

R

R

R

R

R

0

Hi-Z

Hi-Z

Hi-Z

Hi-Z

Hi-Z

Hi-Z

Hi-Z

PIND не является регистром, по этому адресу осуществляется доступ к физическим значениям каждого из выводов порта D. При чтении PORTD, читаются данные из регистра-защелки, при чтении PIND читаются логичес­кие значения присутствующие на выводах порта.



Загружаемая память программ.


AT90S2313 содержит 2кБ загружаемой флэш памяти для хранения про­грамм. Поскольку все команды занимают одно 16-разрядное слово, флэш память организована как 1K  16-разрядных слов. Флэш-память выдерживает не менее 1000 циклов перезаписи.

Программный счетчик имеет ширину  10 бит и таким образом адресуется к 1024 словам программной флэш-памяти.

Подробно загрузка флэш памяти будет рассмотрена дальше.

Таблицы констант  могут располагаться  в диапазоне  адресов 0-2K. (см. описание команды LPM).










Главная сайта