Пользовательского поиска

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

AT90S2333 и AT90S4433 - экономичные 8-битовые КМОП микроконтрол­леры, построенные с использованием расширенной RISC архитектуры AVR. Исполняя по одной команде за период тактовой частоты, AT90S2333 и AT90S4433 имеют производительность около 1MIPS на МГц, что позволяет разработчикам создавать системы оптимальные по скорости и потребляемой мощности. В основе ядра AVR лежит расширенная RISC архитектура, объединяю­щая развитый набор команд и 32 регистра общего назначения. Все 32 ре­гистра непосредственно подключены к арифметико-логическому устройству (АЛУ), что дает доступ к любым двум регистрам за один машинный цикл. Подобная архитектура обеспечивает десятикратный выигрыш в эффективнос­ти кода по сравнению с традиционными CISC микроконтроллерами. AT90S2333/4433 предлагают следующие возможности: 2кБ/4кБ загружа­емой флэш памяти; 128/256 байт EEPROM; 128 байт статического ОЗУ, 20 линий ввода/вывода общего назначения; 32 рабочих регистра; настраивае­мые таймеры/счетчики с режимом совпадения; внешние и внутренние преры­вания; программируемый универсальный последовательный порт; 6-каналь­ный 10-разрядный АЦП; программируемый сторожевой таймер со встроенным генератором; SPI последовательный порт для загрузки программ; два вы­бираемых программно режима низкого энергопотребления. Холостой режим (Idle Mode) отключает ЦПУ, оставляя в рабочем состоянии регистры, тай­меры/счетчики, SPI порт и систему прерываний. Экономичный режим (Power Down Mode) сохраняет содержимое регистров, но отключает генератор, за­прещая функционирование всех встроенных устройств до внешнего прерыва­ния или аппаратного сброса. Микросхемы производятся с использованием технологии энергонезави­симой памяти высокой плотности фирмы Atmel. Загружаемая флэш память на кристалле может быть перепрограммирована прямо в системе через после­довательный интерфейс SPI или доступным программатором энергонезависи­мой памяти. Объединяя на одном кристалле усовершенствованный 8-бито­вый RISC процессор с загружаемой флэш памятью, AT90S2333/4433 являются мощными микроконтроллерами, которые позволяют создавать достаточно гибкие и эффективные по стоимости устройства. AT90S2333/4433 поддерживаются полной системой разработки включаю­щей в себя компиляторы Си, макроассемблеры, программные отладчики/си­муляторы, внутрисхемные эмуляторы и отладочные комплекты.

 

назначение вывода

номер вывода

номер  вывода PDIP

RESET

29

1

PD0/RXD

30

2

PD1/TXD

31

3

PD2/INT0

32

4

PD3/INT1

1

5

PD4/T0

2

6

VCC

4

7

GND

5

8

XTAL1

7

9

XTAL2

8

10

PD5/T1

9

11

PD6/AIN0

10

12

PD7/AIN1

11

13

PB0/ICP

12

14

PB1/OC1

13

15

PB2/SS

14

16

PB3/MOSI

15

17

PB4/MISO

16

18

PB5/SCK

17

19

AVCC

18

20

AREF

20

21

AGND

21

22

PC0/ADC0

23

23

PC1/ADC1

24

24

PC2/ADC2

25

25

PC3/ADC3

26

26

PC4/ADC4

27

27

PC5/ADC5

28

28

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

GND - земля

 

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

Port С (PС5..PС0) - Порт С является 6-битовым двунаправленным портом ввода/вывода с внутренними подтягивающими резисторами. Выходные буферы порта С могут поглощать ток до 20мА. Если выводы PС0..PС5 испо­льзуются как входы и извне устанавливаются в низкое состояние, они яв­ляются источниками тока, если включены внутренние подтягивающие резис­торы. Кроме того Порт С обслуживает аналоговые входы АЦП.

 

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

 

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

тройство.

 

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

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

 

AVCC - Вывод источника питания АЦП. Этот вывод через фильтр низ­кой частоты должен быть подключен к выводу питания процессора.

 

AREF - Вход опорного напряжения АЦП. Напряжение, подаваемое на этот вывод лежит в пределах 2.7В...AVCC.

 

AGND - Если плата имеет отдельный слой аналоговой земли, к нему подключается этот вывод. В противном случае этот вывод соединяется с GND.

 

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

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

 

 

 

Обзор архитектуры процессоров.

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

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

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

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

Пространство ввода/вывода состоит из 64 адресов для периферийных функций процессора, таких как управляющие регистры , таймеры/счетчики и

другие. Доступ к пространству ввода/вывода может осуществляться непо­средственно, как к ячейкам памяти расположенным после регистрового файла (20h- 5Fh).

 

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

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

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

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

Все пространство памяти AVR является линейным и непрерывным. Гибкий модуль прерываний имеет собственный управляющий регистр  в

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

 

 

 

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

 

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

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

 

 

 

 

 

Регистр X

 

15                                                             0

7                           0

7                          0

1Bh (R27)

1Ah (R26)

 

 

 

 

Регистр Y

 

15                                                             0

7                           0

7                          0

1Dh (R29)

1Ch (R28)

 

 

 

 

 

Регистр Z

 

15                                                             0

7                           0

7                          0

1Fh (R31)

1Eh (R30)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

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

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

 

 

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

AT90S2333/4433 содержат 2/4 кБ загружаемой флэш памяти для хране­ния программ. Поскольку все команды занимают одно 16- или 32-разрядное слово, флэш память организована как 1/2 Kx16. Флэш-память выдерживает не менее 1000 циклов перезаписи. Программный счетчик имеет ширину 10/11 бит и позволяет адресоваться к 1024/2048 словам программной флэш-памяти.

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

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

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

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

На рисунке приведенном ниже показана организация памяти данных в AT90S2333/4433.

224 ячейки памяти включают в себя регистровый файл, память вво­да/вывода и статическое ОЗУ данных.

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

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

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

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

 

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

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

 

 

 

 

 

 

 

 

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

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

R0

00h

R1

01h

:

:

R30

1E

R31

1F

Регистры ввода\вывывода

 

00h

20h

01h

21h

:

:

3Eh

5Eh

3Fh

5Fh

-

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

-

61h

-

:

-

DEh

-

DFh

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

Адреса

регистры

название

функции

 

 

3Fh(5Fh)

SREG

Status REGister

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

 

 

3Dh(5Dh)

SP

Stack pointer low

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

 

3Bh(5Bh)

GIMSK

General Interrupt MaSK register

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

 

3Ah(5Ah)

GIFR

General Interrupt Flag Register

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

 

39h(59h)

TIMSK

Timer/counter Inter­rupt mask register

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

 

38h(58h)

TIFR

Timer/counter Inter­rupt Flag register

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

 

 

35h(55h)

MCUCR

MCU general Control Register

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

 

34h(54h)

MCUSR

MCU Status Register

рег.состояния микроконтрол.

 

33h(53h)

TCCR0

Timer/Counter 0 Control Register

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

 

32h(52h)

TCNT0

Timer/Counter 0 (8-бит)

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

 

2Fh(4Fh)

TCCR1A

Timer/Counter 1 Control Register A

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

 

2Eh(4Eh)

TCCR1B

Timer/Counter 1 Control Register B

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

 

2Dh(4Dh)

TCNT1H

Timer/Counter 1 High byte

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

 

2Ch(4Ch)

TCNT1L

Timer/Counter 1 Low byte

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

 

2Bh(4Bh)

OCR1H

Output Compare Register 1 high byte

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

 

2Ah(4Ah)

OCR1L

Output Compare Register 1 low byte

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

 

27h(47h)

ICR1H

T/C 1 Input Cupture Re­gister High Byte

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

 

26h(46h)

ICR1L

T/C 1 Input Cupture Re­gister Low  Byte

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

 

21h(41h)

WDTCR

Watchdog Timer Control Register

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

 

1Eh(3Eh)

EEAR

EEPROM Address Register

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

 

1Dh(3Dh)

EEDR

EEPROM Data Register

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

 

1Ch(3Ch)

EECR

EEPROM Control Register

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

 

18h(38h)

PORTB

Data Register, Port B

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

 

17h(37h)

DDRB

Data Direction Register Port B

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

 

16h(36h)

PINB

Input pins, Port B

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

15h(35h)

PORTС

Data Register, Port С

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

 

14h(34h)

DDRС

Data Direction Register Port С

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

 

13h(33h)

PINС

Input pins, Port С

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

 

12h(32h)

PORTD

Data Register, Port D

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

 

11h(31h)

DDRD

Data Direction Register Port D

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

 

10h(30h)

PIND

Input pins, Port D

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

 

0Fh(2Fh)

SPDR

SPI I/O Data Register

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

 

0Eh(2Eh)

SPSR

SPI Status Register

Регистр состоян. порта SPI

 

0Dh(2Dh)

SPCR

SPI Control Register

Регистр управл.порта SPI

 

0Ch(2Ch)

UDR

UART Data Register

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

 

0Bh(2Bh)

USR

UART Status Register

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

 

0Ah(2Ah)

UCR

UART Control Register

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

 

09h(29h)

UBRR

UART Baud Rate Register

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

 

08h(28h)

ACSR

Analog Comparator Cont­rol and Status Register

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

 

07h(27h)

ADMUX

ADC multiplexer Select register

Регистр коммутатора АЦП

 

06h(26h)

ADCSR

ADC Control and Status Register

Регистр управления и состо­яния АЦП

 

05h(25h)

ADCH

ADC data register High

Рег данных АЦП (старш.)

 

04h(24h)

ADCL

ADC data register Low

Рег данных АЦП (младш.)

 

03h(23h)

UBRRHI

UART Baud Rate Register HIgh

Регистр скорости последо­вательного порта (старш.)

 

 

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

 

 

 

 

 

 

 

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

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

Регистр состояния – SREG  3Fh(5Fh)

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

 

    3Fh(5Fh)

7

6

5

4

3

2

1

0

I

T

H

S

V

N

Z

S

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: Флаг переноса. Этот флаг индицирует перенос в арифметичес­ких и логических операциях. Более подробно об этом можно прочитать в описании системы команд.

 

 

 

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

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

 

   3Dh(5Dh)

7

6

5

4

3

2

1

0

SP7

SP6

SP5

SP4

SP3

SP2

SP1

SP0

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).

 

***Стек процессора работает с предварительным инкрементом и постдекрементом

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

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

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

 

 

 

000h

rjmp RESET

Обработка сброса

001h

rjmp EXT_INT0

Обработка IRQ0

002h

rjmp EXT_INT1

Обработка IRQ1

003h

rjmp TIM1_CAPT

Обработка захвата таймера 1

004h

rjmp TIM1_COMP

Обработка совпадения таймера 1

005h

rjmp TIM1_OVF

Обработка переполнения таймера 1

006h

rjmp TIM0_OVF

Обработка переполнения таймера 0

007h

rjmp SPI_STC

Обработка передачи по SPI

008h

rjmp UART_RXC

Обработка приема байта

009h

rjmp UART_DRE

Обработка освобождения UDR

00Ah

rjmp UART_TXC

Обработка передачи байта

00Bh

rjmp ADC

Обработка преобразования АЦП

00Ch

rjmp EE_RDY

Обработка готовности EEPROM

00Dh

rjmp ANA_COMP

Обработка аналогов. компаратора

00Eh

Основная программа

Начало основной программы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

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

Адрес

Источник

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

1

000h

RESET

Ножка сброса, сторожевой таймер Brown-Out reset

2

001h

INT0

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

3

002h

INT1

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

4

003h

TIMER1 CAPT

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

5

004h

TIMER1 COMP

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

6

005h

TIMER1 OVF

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

7

006h

TIMER0 OVF

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

8

007h

SPI, STC

Передача по SPI завершена

9

008h

UART RX

Последоват.порт прием закончен

10

009h

UART UDRE

Посл.порт регистр данных пуст

11

00Ah

UART TX

Посл.порт передача закончена

12

00Bh

ADC

Преобразование АЦП завершено

13

00Ch

RDY

EEPROM готово

14

00Dh

COMP

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

 

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

AT90S2333/4433 имеют четыре источника сброса.

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

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

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

* Brown-Out сброс сброс при падении Vcc ниже некоторого значения.

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

 

 

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

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

 

 

 

 

 

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

 

Тип напряжения

 

Min

Typ

Max

Vpower

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

1.7v

2.2v

2.7v

Vreset

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

 

0.6Vcc

 

Vbodlevel

Напряжение срабатывания сброса по Brown-Out

BODLEVEL=1

2.6v

2.7v

2.8v

Напряжение срабатывания сброса по Brown-Out

BODLEVEL=0

3.8v

4.0v

4.2v

 

Таблица 4. Установка времени сброса

 

CKSEL [2:0]

Время запуска

000

4mS + 6CK

001

6CK

010

64mS + 16K CK

011

4mS + 16K CK

100

16K CK

101

64mS + 1K CK

110

4mS + 1K CK

111

1K CK

 

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

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

 

BROWN-OUT

AT90S2333/4433 имеют встроенную схему отслеживания напряжения пи­тания. Работа этой схемы разрешается и запрещается битом-перемычкой BODEN. Если бит BODEN запрограммирован, при уменьшении напряжения ниже заданного уровня срабатывает схема сброса. Время сброса задается как и для сброса по включению питания (табл.4). Уровень сброса устанавлива­ется битом BODLEVEL на 2.7В если бит не запрограммирован или на 4В если

бит запрограммирован. Уровень срабатывания имеет гистерезис 50мВ.

Для того, чтобы произошел сброс падение напряжения до уровня сра­батывания должно продержаться не менее 3мкС для уровня срабатывания 4В (7мкС для 2.7В).

 

СБРОС ПО СТОРОЖЕВОМУ ТАЙМЕРУ

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

 

РЕГИСТР СОСТОЯНИЯ ПРОЦЕССОРА - MCUSR

Этот регистр содержит информацию о том, что явилось причиной сброса процессора.

 

MCUSR

 

    34h(54h)

7

6

5

4

3

2

1

0

-

-

-

-

WDRF

BORF

EXTRF

PORF

R

R

R

R

R

R

R\W

R\W

Начальное значение

0

0

0

0

0

0

0

0

 

Биты 7..4 - зарезервированы. В AT90S2333/4433 эти биты зарезервиро­ваны и всегда читаются как 0.

 

Бит 3 - WDRF - этот бит устанавливается при сбросе от сторожевого таймера. Бит обнуляется при сбросе по включению питания или записью нуля.

 

Бит 2 - BORF - этот бит устанавливается при сбросе от схемы слежения за напряжением питания. Бит обнуляется при сбросе по включению питания или записью нуля.

 

Бит 1 - EXTRF - этот бит устанавливается при внешнем сбросе Бит об­нуляется при сбросе по включению питания или записью нуля.

 

Бит 0 - PORF - этот бит устанавливается при сбросе по включению пи­тания, бит очищается записью нуля.

 

Чтобы определить источник сброса пользователь должен в самом на­чале программы прочитать регистр MCUSR и обнулить все биты. Источник сброса определяется проверкой соответствующих флагов сброса.

 

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

AT90S2333/4433 имеют два регистра маскирования прерываний GIMSK - общий регистр маски прерываний и TIMSK - регистр маски прерываний от таймеров/счетчиков.

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

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

 

 

 

 

 

 

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

 

   3Bh(5Bh)

7

6

5

4

3

2

1

0

INT1

INT0

-

-

-

-

-

-

R\W

R\W

R

R

R

R

R

R

Начальное значение

0

0

0

0

0

0

0

0

 

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

 

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

 

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

 

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

 GIFR

 

    3Bh(5Bh)

7

6

5

4

3

2

1

0

INTF1

INTF0

-

-

-

-

-

-

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, происходит переход на вектор прерывания по адресу 002h. Флаг очищается после вы­полнения обработчика прерывания. Кроме того, флаг можно очистить, за­писав в него логическую единицу.

 

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

 

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

 

 

 

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

TIMSK

 

    39h(59h)

7

6

5

4

3

2

1

0

TOIE1

OCIE1A

-

-

TICIE1

-

TOIE0

-

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

 

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

 

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

 

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

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

 

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

 

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

 

 

 

 

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

 

TIFR

 

    38h(58h)

7

6

5

4

3

2

1

0

TOV1

OCF1

-

-

ICF1

-

TOV0

-

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

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

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

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

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

 

 

 

 

 

 

 

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

 

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

 

MCUCR

 

    35h(55h)

7

6

5

4

3

2

1

0

-

-

SE

SM

ISC11

ISC10

ISC01

ISC00

R

R

R\W

R\W

R\W

R\W

R\W

R\W

Начальное значение

0

0

0

0

0

0

0

0

 

 

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

 

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

 

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

 

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

 

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

GIMSK. В таблице 6 приведена установка битов для задания срабатывания по уровню и фронтам.

 

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

 

ISC11

ISC10

Описание

0

0

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

0

1

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

1

0

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

1

1

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

 

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

 

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

 

ISC01

ISC0

Описание

0

0

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

0

1

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

1

0

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

1

1

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

 

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

 

 

 

РЕЖИМЫ ПОНИЖЕННОГО ЭНЕРГОПОТРЕБЛЕНИЯ.

 

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

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

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

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

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

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

сбросу  или внешнему прерыванию по уровню.

Если для вывода из экономичного режима используется прерывание по уровню, низкий уровень должен удерживаться на время достаточное для запуска процессора. Это увеличивает устойчивость процессора к помехам. Изменение уровня дважды проверятся с периодом генератора сторожевого таймера, если обе выборки сигнала имеют необходимый уровень, процессор включается. Номинальный период сторожевого таймера 1uS при 5В питания и температуре 25 градусов Цельсия.

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

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

 

 

 

 

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

 

CKSEL [2:0]

Время запуска

000

6CK

001

6CK

010

16K CK

011

16K CK

100

16K CK

101

1K CK

110

1K CK

111

1K CK

 

 

 

 

 

 

 

 

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

 

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

 

8-РАЗРЯДНЫЙ ТАЙМЕР/СЧЕТЧИК 0

 

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

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

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

 

 

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

 

TCCR0

 

    33h(53h)

7

6

5

4

3

2

1

0

-

-

-

-

-

CS02

CS01

CS00

R

R

R

R

R

R\W

R\W

R\W

Начальное значение

0

0

0

0

0

0

0

0

 

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

 

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

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

 

CS02

CS01

CS00

Описание

0

0

0

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

0

0

1

CK

0

1

0

CK/8

0

1

1

CK/64

1

0

0

CK/256

1

0

1

CK/1024

1

1

0

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

1

1

1

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

 

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

 

 

 

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

 

TCNT0

 

    32h(52h)

7

6

5

4

3

2

1

0

MSB

 

 

 

 

 

 

LSB

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

 

16-разрядный таймер/счетчик 1 может получать импульсы тактовой частоты - 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-х машинных цик­лов.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

    2Fh(4Fh)

7

6

5

4

3

2

1

0

COM1A1

COM1A0

-

-

-

-

PWM11

PWM10

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. Поскольку это альтернативная функция порта, соответствующий бит направления должен устанавливать вывод на выход. Конфигурация управляющих бит показана в таблице 9.

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

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

 

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

 

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

 

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

 

COM1A1

COM1A0

Описание

0

0

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

0

1

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

1

0

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

1

1

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

 

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

 

PWM11

PWM10

Описание

0

0

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

0

1

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

1

0

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

1

1

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

 

 

 

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

 

    2Eh(4Eh)

7

6

5

4

3

2

1

0

ICNC1

ICES1

-

-

CTC1

CS12

CS11

CS10

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 - зарезервированы. В AT90S2333/4433 эти биты зарезервирова­ны и всегда читаются как 0.

 

Бит 3 - CTC1: Очистка таймера счетчика 1 по совпадению: Если бит ус­тановлен (1), таймер/счетчик 1 устанавливается в 0000h в такте сле­дующем за событием совпадения. Если бит сброшен, таймер/счетчик 1 про­должает считать, совпадение не отражается на состоянии таймера/счетчика. Поскольку совпадение обнаруживается процессором в цикле  следующем

за событием совпадения,  в следующем после  совпадения такте в  счетчик запишется число на 1 большее значения регистра совпадения. При коэффи­циенте деления 1, установке регистра совпадения на величину С и уста­новленном бите CTC1, таймер принимает следующие значения:

...С-1,С,С+1,0,1...

при делении тактовой частоты на 8:

       ...С-1,С-1,С-1,С-1,С-1,С-1,С-1,С-1,С,С,С,С,С,С,С,С, С+1,0,0,0,0,0,0,0,0,1...

В режиме ШИМ этот бит не работает.

 

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

 

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

 

CS12

CS11

CS10

Описание

0

0

0

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

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

 

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

 

 

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

 

TCNT1H

 

   2Dh(4Dh)

7

6

5

4

3

2

1

0

MSB

-

-

-

-

-

-

-

R\W

R\W

R\W

R\W

R\W

R\W

R\W

R\W

Начальное значение

0

0

0

0

0

0

0

0

 

TCNT1L

 

   2Ch(4Ch)

7

6

5

4

3

2

1

0

 

 

 

 

 

 

 

LSB

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. Чтобы чтение и запись двух байт счетчика происходило синхрон­но, для работы с ним используется временный регистр (TEMP). Этот вре-

менный регистр также используется при доступе к регистрам OCR1 и ICR1.

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

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

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

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

периоде тактовой частоты.

 

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

 

OCR1H

 

   2Bh(4Bh)

7

6

5

4

3

2

1

0

MSB

 

 

 

 

 

 

 

R\W

R\W

R\W

R\W

R\W

R\W

R\W

R\W

Начальное значение

0

0

0

0

0

0

0

0

 

OCR1L

 

   3Dh(5Dh)

7

6

5

4

3

2

1

0

 

 

 

 

 

 

 

LSB

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-разрядным, при записи нового значения в регистр, для того чтобы оба байта регистра записывались од­новременно, используется временный регистр (TEMP). При записи старшего байта, данные помещаются во временный регистр, который переписывается в OCR1AH при записи младшего байта в OCR1AL. Таким образом, для записи в регистр первым должен записываться старший байт. Регистр TEMP используется при доступе к TCNT1 и ICR1, поэтому ес­ли временный регистр используется в основной программе и в прерывани­ях, при доступе к TEMP из основной программы прерывания должны запрещаться.

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

ICR1H

 

 

25h(45h)

7

6

5

4

3

2

1

0

MSB

 

 

 

 

 

 

 

R\W

R\W

R\W

R\W

R\W

R\W

R\W

R\W

Начальное значение

0

0

0

0

0

0

0

0

 

ICR1L

 

  

24h(44h)

7

6

5

4

3

2

1

0

 

 

 

 

 

 

 

LSB

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-разрядный регистр доступный только для чтения. По нарастающему или спадающему фронту (в соответствии с выбором фронта импульса захвата ICES1) сигнала на выводе ICP текущее значение таймера/счетчика 1 переписывается в регистр захвата ICR1. В это же время устанавливается флаг захвата ICF1. Поскольку регистр захвата является 16-разрядным, для чтения его значения, чтобы оба байта прочитались одновременно, используется вре­менный регистр. При чтении младшего байта ICR1L, он посылается в ЦПУ, а старший байт регистра ICR1H переписывается во временный регистр (TEMP). При чтении старшего байта, он принимается из временного регис­тра. Таким образом для чтения 16-разрядного регистра первым должен чи­таться младший байт. Регистр TEMP используется при доступе к TCNT1 и OCR1, поэтому ес­ли временный регистр используется в основной программе и в прерывани­ях, при доступе к TEMP из основной программы прерывания должны запрещаться.

 

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

 

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

 

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

 

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

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

Частота ШИМ

8 бит

00FFh (255)

Ftc1/510

9 бит

01FFh (511)

Ftc1/1022

10 бит

03FFh (1023)

Ftc1/2046

 

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

 

COM1A1

COM1A0

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

0

0

не подключен

0

1

не подключен

1

0

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

1

1

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

В режиме ШИМ, при записи в регистр OCR1A, 10 младших бит переда­ются во временный регистр и переписываются только при достижении тай­мером/счетчиком конечного значения. При этом устраняется появление не­симметричных импульсов (дрожания), которые неизбежны при асинхронной записи OCR1A. Во промежуток времени между записью во временный регистр и пере­писыванием его в OCR1, при обращении к OCR1 читается содержимое вре­менного регистра. Если OCR1A содержит значение 0000h или конечное значение (TOP), вывод OC1 остается в том состоянии, которое определяется установками COM1A1 и COM1A0. Это показано в табл. 14.

 

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

 

COM1A1

COM1A0

OCR1A

вывод OC1

1

1

0

0

0000h

TOP

низкий

высокий

1

1

1

1

0000h

TOP

высокий

низкий

 

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

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

Сторожевой таймер работает от отдельного встроенного генератора работающего на частоте 1 MHz (это типовое значение частоты для питания 5В). Управляя предварительным делителем сторожевого таймера можно за­давать интервал сброса таймера от 16 до 2048 mS. Команда WDR сбрасыва­ет сторожевой таймер. Для работы сторожевого таймера можно выбрать од­но из 8-ми значений частоты, что позволяет в широких пределах изменять время между исполнением команды WDR и сбросом процессора. При отработ­ке периода работы сторожевого таймера, если не поступила команда WDR, AT90S2313 сбрасывается, выполнение программы продолжается с вектора сброса.

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

 

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

 

WDTCR

 

  

21h(41h)

7

6

5

4

3

2

1

0

 

 

 

WDTOE

WDE

WDP2

WDP1

WDP0

R

R

R

R

R\W

R\W

R\W

R\W

Начальное значение

0

0

0

0

0

0

0

0

 

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

 

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

 

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

 

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

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

 

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

 

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

 

 

WDP2

WDP1

WDP0

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

0

0

0

16K циклов

0

0

1

32K циклов

0

1

0

64K циклов

0

1

1

128K циклов

1

0

0

256 циклов

1

0

1

512 циклов

1

1

0

1024 циклов

1

1

1

2048 циклов

 

 

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

 

Регистры доступа к энергонезависимой памяти (EEPROM) расположены в пространстве ввода/вывода. Время записи лежитв диапазоне 2.5-4 mS и зависит от напряжения питания. Это самотактируемая функция которая, однако, позволяет пользователю определить, можно ли записывать следующий байт. Для определе­ния возможности записи в EEPROM можно использовать специальное преры­вание по готовности EEPROM. Инициированная запись в EEPROM заканчивается даже при возникнов­ении условия сброса. Для защиты от нежелательной записи в EEPROM необходимо следовать некоторым правилам, которые будут рассмотрены ниже, при описании уп­равляющего регистра энергонезависимой памяти. При записи или чтении EEPROM процессор приостанавливается на 2 машинных цикла до начала выполнения следующей команды. При чтении из EEPROM процессор приостанавливается на четыре ма­шинных цикла перед тем как начнет выполняться следующая команда.

 

 

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

 

  

1Eh(3Eh)

7

6

5

4

3

2

1

0

EEAR7

EEAR6

EEAR5

EEAR4

EEAR3

EEAR2

EEAR1

EEAR0

R\W

R\W

R\W

R\W

R\W

R\W

R\W

R\W

Начальное значение

0

0

0

0

0

0

0

0

 

Регистр EEAR задает адрес одного из 128/256 байт адресного прост­ранства EEPROM. Байты данных адресуется линейно в диапазоне от 0 до 127/255. Начальное значение регистра EEAR неопределено, поэтому перед доступом к EEPROM в этот регистр должно быть записано требуемое число.

 

 

 

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

 

  

1Dh(3Dh)

7

6

5

4

3

2

1

0

MSB

 

 

 

 

 

 

LSB

R\W

R\W

R\W

R\W

R\W

R\W

R\W

R\W

Начальное значение