счетчик может получать импульсы тактовой
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 – процент ошибок ):



ХАРАКТЕРИСТИКИ ПО ПОСТОЯННОМУ ТОКУ
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
Если запрограммированы биты блокировки, байты сигнатуры в последовательном режиме не читаются.
КВАРЦЕВЫЙ ГЕНЕРАТОР
![]() |
![]() |
||
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 является линейным и непрерывным.
Гибкий модуль прерываний имеет собственный управляющий регистр в пространстве ввода/вывода, и флаг глобального разрешения прерываний в регистре состояния. Каждому прерыванию назначен свой вектор в начальной области памяти программ. Различные прерывания имеют приоритет в соответствии с расположением их векторов. По младшим адресам расположены векторы с большим приоритетом.
ОПИСАНИЕ ВЫВОДОВ

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 Interrupt mask register | Регистр маски прерываний от таймера/счетчика |
$38($58) | TIFR | Timer/counter Interrupt 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 Control 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 |
Прерывание от компаратора по нарастающему фронту выхода |
РЕГИСТР УПРАВЛЕНИЯ МИКРОКОНТРОЛЛЕРОМ – 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 |
РЕГИСТР УПРАВЛЕНИЯ СТОРОЖЕВЫМ ТАЙМЕРОМ - 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 |
Биты 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, спадающий фронт |
РЕГИСТР УПРАВЛЕНИЯ 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).