Реферат: AVR микроконтроллер AT90S2333 фирмы Atmel
Микроконтроллеры 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 01Bh(R27)
1Ah(R26)
Регистр Y
15 0 7 0 7 01Dh(R29)
1Ch(R28)
Регистр Z
15 0 7 0 7 01Fh (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 Interrupt mask register Регистр маски прерываний от таймера/счетчика
38h(58h) TIFR Timer/counter Interrupt 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 Register High Byte Регистр захвата Т\С 1 старший байт
26h(46h) ICR1L T/C 1 Input Cupture Register 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 Control 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 1I
T
H
S
V
N
Z
S
R\W
R\W
R\W
R\W
R\W
R\W
R\W
R\W
Начальное значениеБит 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 1SP7
SP6
SP5
SP4
SP3
SP2
SP1
SP0
R\W
R\W
R\W
R\W
R\W
R\W
R\W
R\W
Начальное значениеУказатель стека указываетна область памяти в которой расположен стек вызова подпрограмм и прерваний.Область стека в ОЗУ должна быть задана до того как произойдет любой вызовподпрограммы или будут разрешены прерывания. Указатель стека уменьшается на 1при записи данных в стек командой PUSH и уменьшается на 2 при вызовеподпрограммы командой CALL или обработке прерывания. Указатель стекаувеличивается на 1 при выборе данных из стека командой POP и увеличивается на 2при выполнении команд возврата из подпрограммы или обработчика прерывания (RETили RETI).
***Стекпроцессора работает с предварительным инкрементом и постдекрементом
Сброс и обработка прерываний.
В процессорепредусмотрены 13 источников прерываний. Эти прерывания и сброс имеют различныевекторы в области памяти программ. Каждому из прерываний присвоен отдельный битразрешающий данное прерывание при установке бита в 1, если бит I регистрасостояния разрешает общее обслуживание прерываний.
Самые младшие адресапамяти программ определены как векторы сброса и прерываний. Полный списоквекторов прерываний приведен в таблице Этот список определяет и приоритетразличных прерываний. Меньшие адреса соответствуют более высокому уровнюприоритета. Самый высокий уровень у сброса, следующий приоритет у INT0 — внешнего запроса прерывания 0 и т.д. Ниже приведена типичная программаобработки сброса и векторов прерываний:
000h
rjmp RESET Обработка сброса001h
rjmp EXT_INT0Обработка IRQ
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.7vVreset
Напряжение срабатывания сброса по выводу RESET 0.6VccVbodlevel
Напряжение срабатывания сброса по 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-OUTAT90S2333/4433 имеют встроенную схемуотслеживания напряжения питания. Работа этой схемы разрешается и запрещаетсябитом-перемычкой BODEN. Если бит BODEN запрограммирован, при уменьшениинапряжения ниже заданного уровня срабатывает схема сброса. Время сбросазадается как и для сброса по включению питания (табл.4). Уровень сбросаустанавливается битом BODLEVEL на 2.7В если бит не запрограммирован или на 4Весли
бит запрограммирован. Уровень срабатывания имеетгистерезис 50мВ.
Для того, чтобы произошел сброс падение напряжения доуровня срабатывания должно продержаться не менее 3мкС для уровня срабатывания4В (7мкС для 2.7В).
СБРОС ПО СТОРОЖЕВОМУ ТАЙМЕРУПо истечениюпериода работы сторожевого таймера генерируется импульс длительностью 1 периодтактовой частоты. По заднему фронту этого импульса запускается таймер,отсчитывающий время сброса
РЕГИСТР СОСТОЯНИЯ ПРОЦЕССОРА — MCUSRЭтот регистр содержит информацию о том,что явилось причиной сброса процессора.
MCUSR34h(54h)
7 6 5 4 3 2 1-
-
-
-
WDRF
BORF
EXTRF
PORF
R
R
R
R
R
R
R\W
R\W
Начальное значениеБиты 7..4 — зарезервированы. В AT90S2333/4433 эти битызарезервированы и всегда читаются как 0.
Бит 3 — WDRF — этот бит устанавливается при сбросе от сторожевоготаймера. Бит обнуляется при сбросе по включению питания или записью нуля.
Бит 2 — BORF — этот бит устанавливается при сбросе от схемы слежения за напряжениемпитания. Бит обнуляется при сбросе по включению питания или записью нуля.
Бит 1 — EXTRF — этот бит устанавливается при внешнем сбросе Бит обнуляется при сбросе повключению питания или записью нуля.
Бит 0 — PORF — этот бит устанавливается при сбросе по включению питания,бит очищается записью нуля.
Чтобы определить источник сброса пользователь должен всамом начале программы прочитать регистр MCUSR и обнулить все биты. Источниксброса определяется проверкой соответствующих флагов сброса.
ОБРАБОТКА ПРЕРЫВАНИЙAT90S2333/4433 имеютдва регистра маскирования прерываний GIMSK — общий регистр маски прерываний иTIMSK — регистр маски прерываний от таймеров/счетчиков.
Когда возникаетпрерывание бит глобального разрешения прерываний I сбрасывается (ноль) и всепрерывания запрещаются. Программа пользователя может установить этот бит дляразрешения прерываний. Флаг разрешения прерываний I устанавливается в 1 привыполнении команды выхода из прерывания — RETI.
Когда программныйсчетчик устанавливается на текущий вектор прерывания для его обработки,соответствующий флаг, сгенерированный прерыванием, аппаратно сбрасывается.Некоторые флаги прерывания могут быть сброшены записью логической единицы в битсоответствующий флагу.
ОБЩИЙ РЕГИСТР МАСКИ ПРЕРЫВАНИЙ GIMSK3Bh(5Bh)
7 6 5 4 3 2 1INT1
INT0
-
-
-
-
-
-
R\W
R\W
R
R
R
R
R
R
Начальное значениеБит 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 1INTF1
INTF0
-
-
-
-
-
-
R\W
R\W
R
R
R
R
R
R
Начальное значениеБит 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 1TOIE1
OCIE1A
-
-
TICIE1
-
TOIE0
-
R\W
R\W
R\W
R\W
R\W
R\W
R\W
R\W
Начальное значениеБит 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.
РЕГИСТР ФЛАГОВПРЕРЫВАНИЙ ОТ ТАЙМЕРОВ/СЧЕТЧИКОВ – TIFRTIFR
38h(58h)
7 6 5 4 3 2 1TOV1
OCF1
-
-
ICF1
-
TOV0
-
R\W
R\W
R\W
R\W
R\W
R\W
R\W
R\W
Начальное значениеБит 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-
-
SE
SM
ISC11
ISC10
ISC01
ISC00
R
R
R\W
R\W
R\W
R\W
R\W
R\W
Начальное значениеБиты 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
Описание
Запрос на прерывание генерируется по низкому уровню напряжения на входе INT11
Запрос по изменению уровня на входе INT11
Запрос на прерывание по спадающему фронту на входе INT11
1
Запрос на прерывание по нарастающ. фронту на входе INT1ПРИМЕЧАНИЕ: Приизменении битов ISC11/ISC10 прерывание INT1 должно быть запрещено очисткойсоответствующего бита в регистре GIMSK. Иначе прерывание может возникнуть вовремя изменения битов.
Таблица 6. Управление срабатываниемпрерывания 0.
ISC01
ISC0
Описание
Запрос на прерывание генерируется по низкому уровню напряжения на входе INT01
Запрос по изменению уровня на входе INT01
Запрос на прерывание по спадающему фронту на входе INT01
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
TCCR
33h(53h)
7 6 5 4 3 2 1-
-
-
-
-
CS02
CS01
CS00
R
R
R
R
R
R\W
R\W
R\W
Начальное значениеБиты 7..3 — зарезервированы. В AT90S2333/4433 эти биты зарезервированы и всегда читаютсякак 0.
Биты 2,1,0 — CS02, CS01, CS00- выбор тактовой частоты. Эти биты задают коэффициент деления предварительногоделителя.
Таблица 8. Выбор коэффициентапредварительного деления
CS02
CS01
CS00
Описание
Таймер/счетчик остановлен
1
CK
1
CK/8
1
1
CK/64
1
CK/256
1
1
CK/1024
1
1
Внешний вывод T0, нарастающий фронт
1
1
1
Внешний вывод T0, спадающий фронт
Условие Stopзапрещает/разрешает функционирование таймера/счетчика. В режимах деленияиспользуется частота тактового генератора. При использовании работы отвнешнего источника предварительно должен быть установлен соответствующий битрегистра направления данных (0 — включает ножку на ввод).
ТАЙМЕР/СЧЕТЧИК 0 — TCNT0.
TCNT0
32h(52h)
7 6 5 4 3 2 1MSB
LSB
R\W
R\W
R\W
R\W
R\W
R\W
R\W
R\W
Начальное значениеТаймер/счетчик реализован как нарастающийсчетчик с возможностью чтения и записи. При записи таймера/счетчика, еслиприсутствуют тактовые импульсы, таймер/счетчик продолжает счет в следующем заоперацией записи тактовом цикле.
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 1COM1A1
COM1A0
-
-
-
-
PWM11
PWM10
R\W
R\W
R
R
R
R
R\W
R\W
Начальное значениеБиты 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
Описание
Таймер/счетчик 1 отключен от вывода OC11
Переключение выхода OC11
Сброс (0) вывода OC11
1
Установка (1) вывода OC1Таблица 10. Установка режима работы ШИМ
PWM11
PWM10
Описание
Работа ШИМ запрещена1
8 разрядный ШИМ1
9 разрядный ШИМ1
1
10 разрядный ШИМРЕГИСТР B УПРАВЛЕНИЯ ТАЙМЕРОМ/СЧЕТЧИКОМ 1 — TCCR1B
2Eh(4Eh)
7 6 5 4 3 2 1ICNC1
ICES1
-
-
CTC1
CS12
CS11
CS10
R\W
R\W
R
R
R\W
R\W
R\W
R\W
Начальное значениеБит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 ОписаниеТаймер/счетчик 1 остановлен
1
CK
1
CK/8
1
1
CK/64
1
CK/256
1
1
CK/1024
1
1
Спадающий фронт на выводе T1
1
1
1
Нарастающий фронт на выводе T1
Условие Stopзапрещает/разрешает функционирование таймера/счетчика. В режимах деленияиспользуется частота тактового генератора. При использовании работы от внешнегоисточника предварительно должен быть установлен соответствующий бит регистранаправления данных (0 — включает ножку на ввод).
ТАЙМЕР/СЧЕТЧИК 1 — TCNT1H И TCNT1L
TCNT1H
2Dh(4Dh)
7 6 5 4 3 2 1MSB
-
-
-
-
-
-
-
R\W
R\W
R\W
R\W
R\W
R\W
R\W
R\W
Начальное значение
TCNT1L
2Ch(4Ch)
7 6 5 4 3 2 1
LSB
R\W
R\W
R\W
R\W
R\W
R\W
R\W
R\W
Начальное значениеЭто 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 1MSB
R\W
R\W
R\W
R\W
R\W
R\W
R\W
R\W
Начальное значениеOCR1L
3Dh(5Dh)
7 6 5 4 3 2 1
LSB
R\W
R\W
R\W
R\W
R\W
R\W
R\W
R\W
Начальное значениеРегистрсовпадения 16-разрядный регистр, доступный для чтения и записи. В этомрегистре хранятся данные, которые непрерывно сравниваются с текущим значениемтаймера/счетчика 1. Действие по совпадению задается регистрами управлениятаймером/счетчиком 1 и регистром состояния. Поскольку регистр OCR1A является16-разрядным, при записи нового значения в регистр, для того чтобы оба байтарегистра записывались одновременно, используется временный регистр (TEMP). Призаписи старшего байта, данные помещаются во временный регистр, которыйпереписывается в OCR1AH при записи младшего байта в OCR1AL. Таким образом, длязаписи в регистр первым должен записываться старший байт. Регистр TEMPиспользуется при доступе к TCNT1 и ICR1, поэтому если временный регистриспользуется в основной программе и в прерываниях, при доступе к TEMP изосновной программы прерывания должны запрещаться.
РЕГИСТР ЗАХВАТА ТАЙМЕРА/СЧЕТЧИКА 1 — ICR1HИ ICR1L
ICR1H
25h(45h)
7 6 5 4 3 2 1MSB
R\W
R\W
R\W
R\W
R\W
R\W
R\W
R\W
Начальное значение
ICR1L
24h(44h)
7 6 5 4 3 2 1
LSB
R\W
R\W
R\W
R\W
R\W
R\W
R\W
R\W
Начальное значениеРегистр захвата 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 не подключен1
не подключен1
очищается при совпадении, для возрастания счетчика и сбрасывается для уменьшения (неинвертирующий ШИМ)1
1
очищается при совпадении, для уменьшения счетчика и сбрасывается для возрастания (инвертирующий ШИМ)В режиме ШИМ, при записи в регистр OCR1A, 10 младшихбит передаются во временный регистр и переписываются только при достижении таймером/счетчикомконечного значения. При этом устраняется появление несимметричных импульсов(дрожания), которые неизбежны при асинхронной записи OCR1A. Во промежуток временимежду записью во временный регистр и переписыванием его в OCR1, при обращениик OCR1 читается содержимое временного регистра. Если OCR1A содержит значение0000h или конечное значение (TOP), вывод OC1 остается в томсостоянии, которое определяется установками COM1A1 и COM1A0. Это показано втабл. 14.
Таблица 14. Выход ШИМ для OCR=0000h или TOP
COM1A1 COM1A0 OCR1A вывод OC11
1
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
WDTOE
WDE
WDP2
WDP1
WDP0
R
R
R
R
R\W
R\W
R\W
R\W
Начальное значениеБиты 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
период времени
16K циклов
1
32Kциклов
1
64Kциклов
1
1
128Kциклов
1
256 циклов
1
1
512 циклов
1
1
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 1EEAR7
EEAR6
EEAR5
EEAR4
EEAR3
EEAR2
EEAR1
EEAR0
R\W
R\W
R\W
R\W
R\W
R\W
R\W
R\W
Начальное значениеРегистр EEAR задает адрес одного из128/256 байт адресного пространства EEPROM. Байты данных адресуется линейно вдиапазоне от 0 до 127/255. Начальное значение регистра EEAR неопределено,поэтому перед доступом к EEPROM в этот регистр должно быть записано требуемоечисло.
РЕГИСТР ДАННЫХ EEPROM – EEDR
1Dh(3Dh)
7 6 5 4 3 2 1MSB
LSB
R\W
R\W
R\W
R\W
R\W
R\W
R\W
R\W
Начальное значениеБиты 7..0 — EEDR7..0 — Данные EEPROM. При записи регистр EEDR содержитданные, которые записываются в EEPROM по адресу в регистре EEAR. Для операциичтения в этот регистр читаются данные прочитанные из EEPROM по адресу заданномув регистре EEAR.
РЕГИСТР УПРАВЛЕНИЯ EEPROM — EECR
1Ch(3Ch)
7 6 5 4 3 2 1
EERIE
EEMWE
EEWE
EERE
R
R
R
R
R
R\W
R\W
R\W
Начальное значениеБиты 7..4 — зарезервированы. В AT90S2333/4433 эти битызарезервированы и всегда читаются как 0.
Бит 3 — EERIE — Разрешение прерывания по готовности EEPROM. Если установленыбиты I в регистре SREG и EERIE, разрешается прерывание по готовности EEPROM.Это прерывание возникает непрерывно, если сброшен бит EEWE.
Бит 2 — EEMWE — Управление разрешением записи. Этот бит определяет,будут ли записаны данные при установке EEWE. Если бит EEMWE установлен, приустановке EEWE данные записываются по выбранному адресу EEPROM. Если этот битсброшен, установка EEWE не имеет эффекта. После программной установки этот битсбрасывается аппаратно через четыре такта процессора.
Бит 1 — EEWE — Разрешение записи в EEPROM. Сигнал EEWE являетсястробом записи в EEPROM. После установки правильных адреса и данных для записив EEPROM необходимо установить бит EEWE. При записи «1»
вбит EEWE должен быть установлен бит EEMWE, тогда происходит запись в
EEPROM. Для записи в EEPROM должна соблюдатьсяследующая последовательность (порядок шагов 2 и 3 необязателен):
1
Ждем обнуления EEWE2
Записываем адрес в EEAR (не обязательно)3
Записываем данные в EEDR (не обязательно)4
Устанавливаем в 1 бит EEMWE5
Не позже чем через 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, если регистры данных или адреса изменяются вовремя операции записи, запись в ячейку прерывается и результат операции записистановится неопределенным.
ПОСЛЕДОВАТЕЛЬНЫЙ ИНТЕРФЕЙС SPI
Интерфейс SPI позволяет производить высокоскоростнойсинхронный обмен данными между AT90S2333/4433 и периферийными устройствами илинесколькими процессорами. SPI-интерфейс предлагает следующие возможности:
Полностью дуплексная 3-проводная синхронная передача данных; Работа в режиме ведущего или ведомого; Передача начиная со старшего или младшего бита; Четыре программируемые скорости передачи; Флаг прерывания по окончанию передачи; Флаг защиты от коллизий при записи Выход из режима Idle.Соединение между ведущим и ведомым контроллерамипоказана ниже. Вывод PB5(SCK) является выходом тактовых импульсов для ведущегоконтроллера и входом для ведомого. Запись в регистр данных SPI ведущегоконтроллера запускает тактовый генератор. Записанные данные сдвигаются черезвывод PB3(MOSI) на вывод PB3(MOSI) ведомого контроллера. После того как байтбудет выведен тактовый генератор останавливается и выставляет флаг окончанияпередачи (SPIF). Если разрешены прерывания (установлен бит SPIE в регистреSPCR), вызывается соответствующее прерывание. Вывод PB2(SS) ведомого контроллерадолжен быть подключен на землю. Два сдвиговых регистра в ведущем и ведомомконтроллерах можно рассматривать как один распределенный 16-разрядный регистрсдвига. Когда данные сдвигаются из ведущего контроллера в ведомый, то же самоепроисходит в обратном направлении. За один цикл сдвига ведущий и ведомыйконтроллеры обмениваются байтами данных.
Система имеет одиночный буфер в направлении передачи идвойной в направлении приема. Передаваемый символ не записывается в регистр данныхSPI до тех пор, пока передача не завершится. При приеме до завершения операциисдвига данные должны быть прочитаны из регистра данных. Иначе предыдущий символтеряется. При разрешении SPI выводы MOSI, MISO, SCK и SS устанавливаются наввод/вывод в соответствии с таблицей.
Таблица 16. Установка выводов SPI
Вывод Направление в режиме ведущего Направление в режиме ведомого MOSI Определяется пользователем Вход MISO Вход Определяется пользователем SCK Определяется пользователем Вход SS Определяется пользователем ВходРАБОТА ВЫВОДА SS
Если SPI сконфигурирован как ведущий (установлен битMSTR в SPCR), пользователь может задавать направление ввода для ножки SS. ЕслиSS сконфигурирован на вывод, ножка работает как бит ввода/вывода общегоназначения не влияющий на работу SPI. Если ножка сконфигурирована на ввод, нанее необходимо подать высокий уровень, чтобы SPI работал в режиме ведущего.Если в режиме ведущего ножка SS установлена на ввод и внешним устройствомустанавливается в низкий уровень, системой SPI это воспринимается как выборшины другим ведущим устройством и попытка передать данные ведомому. Дляизбежания конфликтов на шине система SPI делает следующее:
1. Сбрасывается бит MSTR в SPCR, система SPIстановится ведомой. При этом ножки MOSI и SCK становятся входами.
2. Устанавливается флаг SPIF в SPSR, если разрешеныпрерывания, будет исполнена программа обслуживания прерывания.
Таким образом если передача по SPI производится врежиме ведущего и существует возможность установки вывода SS в низкий уровень,прерывание должно отслеживать установлен ли бит MSTR. Если бит MSTR будетсброшен при переходе в режим ведомого контроллера, обратно он должен бытьустановлен пользователем.
Если система SPI сконфигурирована как ведомая, выводSS всегда является входом. Когда SS переводится в низкий уровень, система SPIактивируется и ножка MISO, если это задано пользователем, становится выходом.Другие выводы являются входами. Если внешним устройством на вывод SS поданвысокий уровень, все выводы становятся входами, а система SPI становитсяпассивной, т.е. не будет принимать данные.
Режимы обменаданными
Биты CPHA и CPOL определяют четыре комбинации фазы иполярности SCK относительно битов данных. Битом CPOL задается полярностьимпульсов на выводе SCK, при CPOL=0 полярность импульсов положительная, при отсутствииимпульсов на выводе удерживается низкий уровень. При CPOL=1 полярностьимпульсов отрицательная, при отсутствии импульсов на выходе высокий уровень.Битом CPHA задается фронт по которому обрабатываются биты данных. При CPHA=0обработка происходит по переднему фронту импульсов SCK (для CPOL=0 переход изнизкого уровня в высокий, для CPOL=1 — из высокого в низкий). При CPHA=1обработка происходит по заднему фронту импульсов SCK.
РЕГИСТР УПРАВЛЕНИЯ SPI – SPCR
0Dh(2Dh)
7 6 5 4 3 2 1SPIE
SPE
DORD
MSTR
CPOL
CPHA
SPR1
SPRO0
R\W
R\W
R\W
R\W
R\W
R\W
R\W
R\W
Начальное значение1
Бит 7 — SPIE — Разрешение прерываний от SPI — если этот бит установлен, приустановке бита SPIF в регистре SPSR выполняется прерывание от SPI, еслиразрешены общие прерывания.
Бит 6 — SPE — Разрешение SPI — Этот бит должен быть установлен для осуществлениялюбых операций по шине SPI.
Бит 5 — DORD — Порядок бит данных — Если этот бит установлен, при обмене первымпередается младший бит данных. Если бит сброшен – первым передается старшийбит.
Бит 4 — MSTR — Выборведущего/ведомого — При установке этого бита шина SPI работает в режимеведущего, при сбросе — в режиме ведомого. Если вывод SS сконфигурирован каквход и устанавливается в низкий уровень когда установлен бит MSTR, бит MSTRсбрасывается и устанавливается бит SPIF в регистре SPSR. Для возобновленияработы в режиме ведущего пользователь должен установить этот бит.
Бит 3 — CPOL — Полярность тактовых сигналов — Этим битом задаетсяполярность импульсов на выводе SCK, при CPOL=0 полярность импульсов положительная,при отсутствии импульсов на выводе удерживается низкий уровень. При CPOL=1полярность импульсов отрицательная, при отсутствии импульсов на выходе высокийуровень.
Бит 2 — CPHA — Фазировка тактовых импульсов. — Этим битом задаетсяфронт по которому обрабатываются биты данных. При CPHA=0 обработка происходитпо переднему фронту импульсов SCK (для CPOL=0 переход из низкого уровня ввысокий, для CPOL=1 — из высокого в низкий). При CPHA=1 обработка происходит позаднему фронту импульсов SCK.
Биты 1,0 — SPR1,SPR0 — Выбор тактовой частоты SPI. — Этими битами задаетсяскорость работы SPI шины для ведущего устройства. Для ведомого контролерраустановка этих бит не имеет значения. Соотношение тактовой частоты процессора ичастоты SCK приведено в таблице:
Таблица 17. Соотношение между SCK итактовой частотой процессора
SPR1 SPR0 Частота SCK SPR1 SPR0 Частота SCK Fck/4 1 Fck/641
Fck/16 1 1 Fck/128РЕГИСТР СОСТОЯНИЯ SPI– SPSR
0Eh(2Eh)
7 6 5 4 3 2 1SPIF
WCOL
-
-
-
-
-
-
R
R
R
R
R
R
R
R
Начальное значение1
Бит 7 — SPIF — флаг прерывания SPI. После завершения обмена устанавливается битSPIF и генерируется прерывание, если установлен бит SPIE в SPCR и разрешеныглобальные прерывания. Этот флаг устанавливается и в том случае, если на выводSS, сконфигурированный как вход, подается низкий уровень, когда SPI работает врежиме ведущего. Флаг SPIF сбрасывается аппаратно при выполнениисоответствующего вектора прерывания. Кроме того бит SPIF, если он былустановлен, сбрасывается при первом же чтении регистра SPSR и последующемдоступе к регистру данных SPI.
Бит 6 — WCOL — Ошибказаписи. — Этот бит устанавливается при записи в регистр SPDR во время обмена.Чтение регистра во время обмена дает неверный результат, запись в него непроизводится. Так же как и бит SPIF, WCOL сбрасывается (если он был установлен)при первом же чтении регистра SPSR и последующем доступе к регистру SPDR.
Биты 5..0- зарезервированы. В AT90S2333/4433 эти биты зарезервированы и всегда читаютсякак 0.
SPI интерфейс также используется для загрузки и чтенияпамяти программ и содержимого EEPROM процессора, программирование процессорачерез SPI интерфейс будет рассмотрено ниже.
РЕГИСТР ДАННЫХ SPI – SPDR
0Fh(2Fh)
7 6 5 4 3 2 1MSB
LSB
R\W
R\W
R\W
R\W
R\W
R\W
R\W
R\W
Начальное значениеРегистр данных SPI доступен для чтения и записи ииспользуется для обмена данными между набором регистров и регистром сдвига SPI.Запись в регистр инициирует передачу данных. При чтении регистра читаютсяданные и буфера регистра сдвига.
УНИВЕРСАЛЬНЫЙ АСИНХРОННЫЙ ПРИЕМО-ПЕРЕДАТЧИК
В состав AT90S2333/4433 входит универсальныйасинхронный приемопередатчик (UART), его основные особенности:
— генерация произвольных значений скорости
— высокая скорость при низких тактовых частотах
— 8 или 9 бит данных
— фильтрация шума
— Определение переполнения
— Детектирование ошибки кадра
— Определение неверного стартового бита
— Три раздельных прерывания — завершение передачи, очистка регистра передачи изавершение приема.
— Режим мультипроцессорного обмена.
Передача данных
Передача данных инициируется записью передаваемыхданных в регистр ввода/вывода данных 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.
Приемданных
Логическая схема приемника обрабатывает сигнал навыводе 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.
Режиммультипроцессорного обмена Режим многопроцессорного обмена позволяет несколькимведомым процессорам принимать данные от ведущего. Для этого сначаладекодируется адресный байт, который определяет к какому из процессоровобращается ведущий.
Есливедомый процессор принял правильный адрес, последующие
байты он принимает как данные, в то время какостальные ведомые процессоры игнорируют принимаемые байты до приема следующегоадреса. Для работы в режиме ведущего процессор должен установить 9-битовыйрежим передачи (установлен бит CHR9 в UCSRB). Для передачи адресного байтадевятый бит должен устанавливаться в 1, и сбрасываться для передачи байтов данных.В ведомых процессорах механизм приема слегка отличается для 8-ми и 9-тибитового режима приема. При приеме восьми бит (сброшен бит CHR9 в UCSRB),стоповый бит для адресного байта равен единице и равен нулю для байт данных. В9-ти битовом режиме для адресного байта устанавливается 9-й бит, для байтданных он будет сброшен, стоповый бит всегда будет равен 1. Для обмена даннымив многопроцессорном режиме необходимо выполнить следующую процедуру.
1. Все подчиненные процессоры устанавливают обмен вмногопроцессорном режиме (установлен бит MPCM в UCSRA)
2.Ведущий процессор посылает адресный байт, все подчиненные процессоры читают ипринимают этот байт. В ведомых процессорах устанавливается флаг RXC в UCSRA.
3. Каждый из ведомых процессоров читает регистр UDR иопределяет был ли он выбран. Если процессор выбран, он сбрасывает флаг MPCM вUCSRA, иначе он будет ожидать следующего адресного байта.
4. Для каждого принятого байта данных в ведомомпроцессоре устанавливается флаг завершения приема (RXC в UCSRA). Кроме того в8-битовом режиме будет генерироваться ошибка кадра (FE в UCSRA), посколькустоповый бит будет равен 0. В других подчиненных процессорах
установлен бит MPCM, поэтому байты данных будутигнорироваться, регистр UDR не записывается, флаги RXC и FE неустанавливаются.
5. После передачи последнего байта данных процессповторяется с шага 2.
Управление UART
РЕГИСТР ВВОДА/ВЫВОДА UART
0Ch(2Ch)
7 6 5 4 3 2 1MSB
LSB
R\W
R\W
R\W
R\W
R\W
R\W
R\W
R\W
Начальное значение1
Физически регистр UDR является двумя отдельнымирегистрами, доступ к которым происходит по одному адресу. При записипроисходит запись в регистр передатчика, при чтении — читается регистрприемника.
РЕГИСТР УПРАВЛЕНИЯ И СОСТОЯНИЯ UART (UСSRA)
0Bh(2Bh)
7 6 5 4 3 2 1RXC
TXC
UDRE
FE
OR
-
-
MPCM
R
R\W
R
R\W
R\W
R\W
R\W
R\W
Начальное значение1
1
Бит 7 — RXC — прием завершен.Этот бит устанавливается в 1 когда принятый символ переписывается из сдвиговогорегистра приемника в регистр UDR. Бит устанавливается независимо отобнаружения ошибки кадра. Если установлен бит RXCIE в регистре UCR, приустановке бита выполняется прерывание по завершению приема символа. RXCсбрасывается при чтении UDR. При использовании приема данных по прерыванию, обработчик прерывания должен читать регистр UDR для сброса RXC, иначе при выходе из прерывания оно будет вызвано снова.
Бит 6 — TXC — передача завершена. Этот бит устанавливается в 1 если символ изсдвигового регистра передатчика (включая стоповый бит) передан, а в регистр UDRне были записаны новые данные. Этот флаг особенно полезен при полудуплекснойсвязи, когда предающее устройство должно перейти в режим приема и освободитьлинию связи сразу по окончанию передачи. Если установлен бит TXIE в регистреUCR, при установке TXC выполняется прерывания по окончанию передачи. TXCсбрасывается аппаратно при выполнении соответствующего вектора прерывания.Кроме того, бит можно сбросить записав в него 1.
Бит 5 — UDRE — регистр данныхUART пуст. Этот бит устанавливается в 1 когда данные, записанные в UDRпереписываются в регистр сдвига передатчика. Установка этого бита означает,что передатчик готов принять следующий символ для передачи. Если установлен бит UDRIE в регистре UCR, при установке этого бита выполняется прерываниеокончания передачи. Бит UDRE сбрасывается при записи регистра UDR. Прииспользовании передачи управляемой прерыванием, подпрограмма обслуживанияпрерывания должна записывать UDR, чтобы сбросить бит UDRE, иначе при выходеиз прерывания оно будет вызвано снова. При сбросе этот бит устанавливается в1, чтобы проиндицировать готовность передатчика.
Бит 4 — FE — ошибка кадра.Этот бит устанавливается при обнаружении условия ошибки кадра, т.е. еслистоповый бит принятого байта равен 0. Бит FE сбрасывается при приеме единичногостопового бита.
Бит 3 — OR — переполнение. Этот бит устанавливается при обнаружении условияпереполнения, т.е. когда символ из регистра UDR не был прочитан до того, какзаполнился сдвиговый регистр приемника. Этот бит буферирован, т.е. остаетсяустановленным до тех пор, пока из регистра UDR не будут прочитаны правильныеданные. Бит OR сбрасывается когда принятые данные переписываются в UDR.
Биты 2..1 — зарезервированы. ВAT90S2333/4433 эти биты зарезервированы и всегда читаются как 0.
Бит 0 — MPCM — режиммультипроцессорного обмена. Этот бит используется для перехода в режиммультипроцессорного обмена. Этот бит устанавливается когда ведомый процессорожидает приема адресного байта. Когда ведомый процессор распознает свойадрес он должен сбросить бит MPCM и начать прием данных.
РЕГИСТР УПРАВЛЕНИЯ И СОСТОЯНИЯ UART (UСSRB)
0Ah(2Ah)
7 6 5 4 3 2 1RXCIE
TXCIE
UDRIE
RXEN
TXEN
CHR9
RXB8
TXB8
R\W
R\W
R\W
R\W
R\W
R\W
R
W
Начальное значение1
Бит 7 — RXCIE — Разрешение прерывания по окончанию приема. Если этот бит установлен(1), установка бита RXC в регистре UCSRA приводит к выполнению прерывания поокончанию приема (при условии что разрешены прерывания).
Бит 6 — TXCIE — Разрешение прерывания по окончанию передачи. Если этот битустановлен, установка бита TXC в UCSRA приводит к выполнению прерывания поокончанию передачи (при условии, что прерывания разрешены).
Бит 5 — UDRIE — Прерывание по очистке регистра данных последовательного порта. Еслиэтот бит установлен, установка бита UDRE в UCSRA приводит к выполнениюпрерывания по очистке регистра данных 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-й бит передаваемых данных.
ГЕНЕРАТОР СКОРОСТИ ПЕРЕДАЧИ
Генераторскорости передачи это делитель частоты, который генерирует скорости всоответствии с нижеприведенным выражением:
BAUD= Fck / (16*(UBRR+1))
здесьBAUD — скорость передачи (бод)
Fck- частота тактового генератора процессора
UBRR- содержимое регистров UBRRH и UBRR (0...4095)
В следующей таблице приведены значения регистра UBRR ипроцентное отклонение от стандартной скорости передачи для стандартных частоткварцевых генераторов.
Таблица.18
Скор.,
бод
1.0000
MHz
Ош.
%
Скор.,
бод
1.8432
MHz
Ош.
%
Скор.,
бод
2.0000
MHz
Ош.
%
2400
4800
9600
14400
19200
28800
38400
57600
76800
115200
25
12
6
3
2
1
1
0.2
0.2
7.5
7.8
7.8
7.8
22.9
7.8
22.9
84.3
2400
4800
9600
14400
19200
28800
38400
57600
76800
115200
47
23
11
7
5
3
2
1
1
33.0
2400
4800
9600
14400
19200
28800
38400
57600
76800
115200
51
25
12
8
6
3
2
1
1
0.2
0.2
0.2
3.7
7.5
7.8
7.8
7.8
22.9
7.8
Скор.,
бод
3.2768
MHz
Ош.
%
Скор.,
бод
3.6864
MHz
Ош.
%
Скор.,
бод
4.0000
MHz
Ош.
%
2400
4800
9600
14400
19200
28800
38400
57600
76800
115200
84
42
20
13
10
6
4
3
2
1
0.4
0.8
1.6
1.6
3.1
1.6
6.3
12.5
12.5
12.5
2400
4800
9600
14400
19200
28800
38400
57600
76800
115200
95
47
23
15
11
7
5
3
2
1
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
2400
4800
9600
14400
19200
28800
38400
57600
76800
115200
103
51
25
16
12
8
6
3
2
1
0.2
0.2
0.2
2.1
0.2
3.7
7.5
7.8
7.8
7.8
Скор.,
бод
7.3728
MHz
Ош.
%
Скор.,
бод
8.0000
MHz
Ош.
%
Скор.,
бод
9.2160
MHz
Ош.
%
2400
4800
9600
14400
19200
28800
38400
57600
76800
115200
191
95
47
31
23
15
11
7
5
3
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
2400
4800
9600
14400
19200
28800
38400
57600
76800
115200
207
103
51
34
25
16
12
8
6
3
0.2
0.2
0.2
0.8
0.2
2.1
0.2
3.7
7.5
7.8
2400
4800
9600
14400
19200
28800
38400
57600
76800
115200
239
119
59
39
29
19
14
9
7
4
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
6.7
0.0
РЕГИСТР СКОРОСТИ ПЕРЕДАЧИ (UBRR)
UBRRHI
03h(23h)
7 6 5 4 3 2 1
MSB
-
-
-
R
R
R
R
R\W
R\W
R\W
R\W
Начальное значениеUBRR
09h(29h)
7 6 5 4 3 2 1
LSB
R\W
R\W
R\W
R\W
R\W
R\W
R\W
R\W
Начальное значениеЭто 12-разрядный регистр,который задает скорость передачи последовательного порта в соответствии свыражением приведенным выше. В регистре UBRRHI хранятся 4 старших бита, в UBRR- 8 младших бит.
АНАЛОГОВЫЙ КОМПАРАТОР
Аналоговый компаратор сравнивает входныенапряжение на положительном входе PD6 (AIN0) и отрицательном входе PD7(AIN1).Когда напряжение на положительном входе больше напряжения на отрицательном,устанавливается бит ACO (Analog Comparator Output). Выход аналогового компаратораможно установить на работу с функцией захвата Таймера/Счетчика1. Кроме того,компаратор может вызывать свое прерывание. Пользова-
тель может установить установить срабатываниепрерывания по нарастающему или спадающему фронту, или по переключению.
РЕГИСТР УПРАВЛЕНИЯ И СОСТОЯНИЯ АНАЛОГОВОГОКОМПАРАТОРА (ACSR).
ACSR
08h(28h)
7 6 5 4 3 2 1ACD
AINBG
ACO
ACI
ACIE
ACIC
ACIS1
ACIS0
R\W
R
R
R\W
R\W
R\W
R\W
R\W
Начальное значение1
Бит 7 — ACD — Запрещение аналогового компаратора. Когда этот бит установлен,питание от аналогового компаратора отключается. Для отключения компаратораэтот бит можно установить в любое время. Обычно это свойство используется есликритично потребление процессора в холостом режиме и восстановление работыпроцессора от аналогового компаратора не требуется. При изменении бита ACDпрерывания от аналогового компаратора должны быть запрещены сбросом ACIE врегистре ACSR. В противном случае прерывание может произойти во время изменениябита.
Бит 6 — AINBG — Выборнапряжения сравнения аналогового компаратора. Когда этот бит установлен, выводAIN0 подключается к напряжению 1.22 + 0.05В. Когда бит сброшенвозобновляется нормальная работа вывода AIN0.
Бит 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 — Выбор режима прерывания аналогового компаратора. Различные установки приведеныниже.
Таблица 19. Установки ACIS1/ACIS0
ACIS1 ACIS0 Описание Прерывание от компаратора по переключению выхода1
Зарезервировано1
Прерывание от компаратора по спадающему фронту выхода1
1
Прерывание от компаратора по нарастающему фронту выходаПримечание: При изменении битов ACIS1/ACIS0 прерывания отаналогового компаратора должны быть запрещены сбросом бита разрешенияпрерывания в регистре ACSR. Иначе прерывание может произойти при изменениибитов.
АНАЛОГО-ЦИФРОВОЙ ПРЕОБРАЗОВАТЕЛЬ
Основныехарактеристики:
— разрешение 10 бит
— точность +- 1/2 младшего разряда
— время преобразования 65-260 uS
— 6 мультиплексирумых входов
— работа с полным размахом напряжения
— непрерывный режим или одиночные преобразования
— прерывание по завершению преобразования
— подавление шума в режиме Sleep
AT90S2333/4433имеют 10-разрядный АЦП последовательного приближения. АЦП подключен к выходушестивходового мультиплексора. Мультиплексор позволяет подключать на вход АЦПлюбой из входов порта C. В состав АЦП входит усилитель выборки-хранения, который позволяет сохранять на входе АЦП уровень напряжения постоянный за времяпреобразования.
АЦП имеет два отдельных вывода питания AVCC и AGND.ФПТВ должен подключаться к GND, напряжение на AVCC не должно отличаться от VCCболее чем на +-0.3В. Внешнее опорное напряжение должно подаваться на выводAREF. Это напряжение должно лежать в пределах AGND-AVCC.
РАБОТА АЦП
АЦП может работать в двух режимах — одиночного преобразования и непрерывном. В режиме одиночного преобразованиекаждое преобразование инициируется пользователем. В непрерывном режиме АЦПпроизводит непрерывную обработку входного сигнала и обновляет регистр данныхАЦП. Переключение режимов осуществляется битом ADFR в регистре ADCSR. РегистрADMUX выбирает один из шести входов подключаемый ко входу АЦП. Кроме того вкачестве входа можно использовать фиксированное опорное напряжение. Работа АЦПразрешается записью логической «1» в бит разрешения АЦП (ADEN вADCSR). Перед первым преобразованием после разрешения АЦП выполняется одно«пустое» преобразование инициализирующее АЦП. Для пользователяединственное отличие первого преобразования от последующих заключается в том,что оно занимает 25 тактовых импульсов вместо обычных 13.
Преобразованиезапускается записью логической 1 в бит запуска АЦП — ADCS. Этот бит остаетсяустановленным пока идет преобразование и аппаратно сбрасывается, когдапреобразование завершается. Если во время преобразования происходитпереключение канала, пред переключением АЦП завершает текущее преобразование.
Операция выборки-хранения занимает один цикл послезапуска преобразования. Это позволяет пользователю устанавливать номервходного канала одновременно с запуском преобразования Поскольку результатпреобразования занимает 10 разрядов, для хранения результата используется дварегистра ADCH и ADCL, которые должны быть прочитаны для получения результата.Для защиты данных, чтобы обеспечить чтение результата одного преобразования изобоих регистров используется специальная логика защиты данных.
Этотмеханизм работает так:
При чтении данных первым должен читаться регистр ADCL.Доступ АЦП к регистру данных блокируется. Это приводит к тому, что еслипрочитан байт ADCL и преобразование завершилось до того как прочитан регистрADCH, регистр данных не изменяется и результат преобразования будет потерян.Доступ АЦП к регистру данных разрешается после чтения ADCH. АЦП имеетсобственное прерывание, которое выполняется по завершению преобразования. Еслидоступ АЦП к регистру данных запрещен (между чтением ADCL и ADCH), прерываниевызывается даже если данные потеряны. Предварительный делитель АЦП работает стактовыми частотами в диапазоне 50-200 kHz. Для полного преобразования АЦПнеобходимо 13 тактов, т.е. преобразование занимает от 65 до 260 uS. Корректноезначение выхода АЦП гарантируется только для тактовых частот не выходящих изприведенного диапазона. Для генерации тактовой частоты АЦП из тактовой частотыпроцессора выше 100 кГц используются биты ADPS0-ADPS2. Предварительный делительначинает счет в момент разрешения АЦП установкой бита ADEN в ADCSR.Предварительный делитель продолжает работать до тех пор, пока установлен битADEN и непрерывно сбрасывается если бит ADEN сброшен. Функция подавленияшумов АЦП Одна из особенностей АЦП — функция подавления шумов, АЦП можетосуществлять преобразования в режиме холостого хода, это позволят уменьшитьшумы, наводимые ядром процессора. Чтобы воспользоваться этой возможностью,необходимо произвести следующую процедуру:
1.Удостоверьтесь, что АЦП разрешен и не занят преобразованием. Необходимо выбратьрежим одиночного преобразования и разрешить прерывания по окончаниюпреобразования .
ADEN=1
ADSC=0
ADFR=0
ADIE=1
2. Перейти в режим холостого хода. АЦП начнетпреобразование после того как остановится процессор.
3. Если за время преобразования не произойдут другиепрерывания, по окончанию преобразования процессор выйдет из режима холостогохода и выполнит прерывание по окончанию преобразования.
РЕГИСТР УПРАВЛЕНИЯ МУЛЬТИПЛЕКСОРОМ АЦП –AMUX
07h(27h)
7 6 5 4 3 2 1-
ADCBG
-
-
-
MUX2
MUX1
MUX0
R\W
R
R
R\W
R\W
R\W
R\W
R\W
Начальное значение1
Бит 7- зарезервирован; в AT90S2333/4433 этот бит зарезервирован и при записи долженустанавливаться в 0.
Бит 6 — ADCBG — выбор опорного напряжения АЦП — при установке этого бита на вход АЦПподается фиксированное напряжение 1.22+-0.05В, когда бит сброшен, вход АЦПподключается к одному из внешних входов согласно установке битов MUX2..MUX0.
Биты 5..3 — зарезервированы. ВAT90S2333/4433 эти биты зарезервированы и при записи должны устанавливаться в0.
Биты 2..0 — MUX2..MUX0 — выбор аналогового входа. Содержимое этих битопределяет какой из аналоговых входов подключен на вход АЦП.
РЕГИСТР УПРАВЛЕНИЯ И СОСТОЯНИЯ АЦП – ADCSR
ADCSR
06h(26h)
7 6 5 4 3 2 1ADEN
ADSC
ADFR
ADIF
ADIE
ADPS2
ADPS1
ADPS0
R\W
R\W
R\W
R\W
R\W
R\W
R\W
R\W
Начальное значение1
Бит 7 — ADEN — Разрешение АЦП. — При записи логической «1» в этот битразрешается работа АЦП. При установке бита в «0» АЦП выключается. Привыключении АЦП до окончания преобразования, преобразование не завершается.
Бит 6 — ADSC — Запуск преобразования АЦП. — В режиме одиночного преобразования длязапуска преобразования в этот бит должна быть записана «1». Призапуске преобразования битом ADSC время преобразования отчитывается ль началаследующего периода частоты на выходе делителя. При установке ADSC послеразрешения АЦП или при одновременном разрешении АЦП и установке ADSC, первомупреобразованию предшествует «пустой» цикл преобразования. Во времяэтого цикла происходит инициализация АЦП. Во время преобразования бит ADSCостается установленным и сбрасывается при завершении преобразования, но дотого, как результат переписывается в регистр данных АЦП. Это позволяетзапустить новое преобразование до того как завершится текущее. Новоепреобразование будет запущено сразу по окончанию текущего. Если преобразованиюпредшествует «пустой» цикл, бит ADSC остается установленным пока небудет завершено реальное преобразование. Запись 0 в этот бит не даетрезультата.
Бит 5 — ADFR — Выбор непрерывного преобразования АЦП. — Когда этот бит установлен,включается режим непрерывного преобразования АЦП. В этом режиме АЦП непрерывнопроизводит выборки сигнала и обновляет регистр данных. При сбросе этого битарежим непрерывного преобразования отключается.
Бит 4 — ADIF — Флаг прерывания АЦП. — Этот флаг устанавливается когда завершаетсяцикл преобразования АЦП и обновляется регистр данных АЦП. Если установлены флагглобального разрешения прерываний (I в
SREG)и бит ADIE, по завершению преобразования выполняется прерывание.
Флаг ADIF сбрасывается аппаратно при выполнениисоответствующего прерывания. Другой способ сбросить флаг — записать в него«1». Необходимо предостеречь, что при чтении-модификации-записиADCSR может быть запрещено отложенное прерывание. Это же касается и командSBI и CBI.
Бит 3 — ADIE — Разрешениепрерывания от АЦП. — При установке этого бита и бита I в регистре SREGразрешены прерывания по окончанию преобразования АЦП.
Биты 2..0 — ADPS2..ADPS0 — биты установки предварительного делителя. — Этибиты задают коэффициент деления тактовой частоты процессора и задают тактовуючастоту работы АЦП.
Таблица 20. Выбор коэффициента деления АЦП
ADPS2 ADPS1 ADPS0 Коэф.деления ADPS2 ADPS1 ADPS0 Коэф.деления 21
161
21
1
321
41
1
641
1
81
1
1
128РЕГИСТР ДАННЫХ АЦП — ADCL И ADCH
ADCH
05h(25h)
7 6 5 4 3 2 1-
-
-
-
-
MSB
R
R
R
R
R
R
R
R
Начальное значение
ADCL
04h(24h)
7 6 5 4 3 2 1
LSB
R
R
R
R
R
R
R
R
Начальное значение1
Сканирование аналоговых каналов
Поскольку смена аналоговых каналов всегдапроисходит после завершения преобразования, для переключения каналовпреобразователя можно использовать режим непрерывного преобразования. Обычнодля переключения каналов используется прерывание по завершению преобразования.Однако пользователь должен принимать во внимание следующие факторы:
— в режиме непрерывного преобразования,цикл выборки-хранения следующего преобразования начинается через полторатактовых цикла после того как результат текущего преобразования записывается врегистр данных АЦП и устанавливается флаг ADIF. Если канал АЦП переключится дотого как произойдет операция выборки-хранения, результат преобразования будетотражать новое состояние мультиплексора, если ADMUX изменится послевыборки-хранения, следующий результат будет использовать прежнее значениевходного канала. Новый подключенный канал будет обслужен в следующем циклепреобразования. При чтении регистра ADMUX всегда возвращается последнеезаписанное в него число, независимо от того, какой канал используется длятекущего преобразования.
Техника подавления шума АЦП
Цифровые схемы внутри и снаружиAT90S2333/4433 генерируют электромагнитные излучения, которые могут повлиятьна точность аналоговых измерений. Если точность преобразования важна, уровеньума может быть понижен при помощи следующей техники:
1. Аналоговая часть процессора и все аналоговыекомпоненты устройства должны иметь отдельно разведенную на печатной платеземлю. Аналоговая земля должна соединяться с цифровой только в одной точке печатнойплаты.
2. Путь прохождения аналогового сигнала должен бытькоротким насколько можно. Старайтесь отделять аналоговые дорожки от цифровыханалоговой землей и проводить их как можно дальше от высокоскоростных цифровыхсигналов.
3.Вывод AVcc должен подключаться к источнику Vcc через RC цепочку, как показанона рисунке:
4.Для уменьшения шума наводимого процессором используйте функцию подавления шума.
5. Если какие-то выводы порта С используются длявывода цифровых сигналов, они не должны переключаться во время преобразования.
ХАРАКТЕРИСТИКИ АЦП (T=-40...+85 град.)
Разрешение 10бит
Интегральная нелинейность (Vref>2V), 0.2(тип),0.5(макс)ед.мл.разр.
Дифференц. нелинейность (Vref>2V), 0.2(тип),0.5(макс)ед.мл.разр.
Ошибка нуля (смещение) 1(тип)ед.мл.разр.
Время преобразования 65...260мкС
Тактовая частота 50...200кГц
Напряжение AVcc Vcc+-0.3В(не больше 6В)
Опорное напряжение Agnd...AVcc
Вх.сопр. по вх. опорн. напр. 6..10(тип)..13кОм
Вх сопр. аналог. входа 100(тип) МОм
ПОРТЫ ВВОДА/ВЫВОДА
Порт B
ПортB 6-разрядный двунаправленный порт ввода/вывода.
Для обслуживания порта отведено три регистра: регистрданных PORTB (18h, 38h), регистр направления данных — DDRB (17h, 37h) иножки порта B — PINB (16h, 36h). Адрес ножек порта B предназначен только для чтения,в то время как регистр данных и регистр направления данных — для чтения/записи.
Все выводы порта имеют отдельноподключаемые подтягивающие резисторы. Выходы порта B могут поглощать ток до 20mA и непосредственно управлять светодиодными индикаторами. Если выводы PB0..PB5используются как входы и замыкаются на землю, если включены внутренние подтягивающиерезисторы, выводы являются источниками тока (Iil). Дополнительные функциивыводов порта B приведены в таблице 20.
Таблица 21. Альтернативные функции выводовпорта B
Вывод Альтернативная функция PB0 ICP (Вход захвата таймера/счетчика 1) PB1 OC1 (Выход совпадения таймера, счетчика 1) PB2 SS (Выбор ведомого шины SPI) PB3 MOSI (Выход ведущего/ вход ведомого шины SPI) PB4 MISO (Вход ведущего/ выход ведомого шины SPI) PB5 SCK (Тактовые импульсы шины SPI)При использовании альтернативных функций выводов.регистры DDRB и PORTB должны быть установлены в соответствии с описаниемальтернативных функций.
РЕГИСТР ДАННЫХ ПОРТА B
PORTB
18h(38h)
7 6 5 4 3 2 1-
-
PORTB5
PORTB0
R\W
R\W
R\W
R\W
R\W
R\W
R\W
R\W
Начальное значение
РЕГИСТР НАПРАВЛЕНИЯ ДАННЫХ ПОРТА B
DDRB
17h(37h)
7 6 5 4 3 2 1-
-
DDB5
DDB0
R\W
R\W
R\W
R\W
R\W
R\W
R\W
R\W
Начальное значение
ВЫВОДЫ ПОРТА B
PINB
16h(36h)
7 6 5 4 3 2 1-
-
PINB5
PINBO
R
R
R\W
R\W
R\W
R\W
R\W
R\W
Начальное значениеZ
Z
Z
Z
Z
Z
PINB не является регистром, по этому адресуосуществляется доступ к физическим значениям каждого из выводов порта B. Причтении PORTB, читаются данные из регистра-защелки, при чтении PINB читаютсялогические значения присутствующие на выводах порта.
ПОРТ B, КАК ПОРТ ВВОДА/ВЫВОДА ОБЩЕГО НАЗНАЧЕНИЯ
Все6 бит порта B при использовании для ввода/вывода одинаковы.
Бит DDBn регистра DDRB выбирает направление передачиданных. Если бит установлен (1), вывод сконфигурирован как выход. Если битсброшен (0) — вывод сконфигурирован как вход. Если PORTBn установлен и выводсконфигурирован как вход, включается КМОП подтягивающий резистор. Дляотключения резистора, PORTBn должен быть сброшен (0) или вывод должен бытьсконфигурирован как выход.
Таблица 22. Влияние DDBn на выводы порта B
DDBn PORTBn Вх/Вых Подт.резист Комментарий Вход Нет 1 Вход Да PBn источник тока Iil, если извне соединен с землей 1 Выход Нет Выход установлен в 0 1 1 Выход Нет Выход установлен в 1n = 5...0 — номер вывода
АЛЬТЕРНАТИВНЫЕ ФУНКЦИИ PORTB
SCK — PORTB, Bit 5 — Выход тактовой частоты ведущего и тактовый входведомого процессора канала SPI. Если работа SPI разрешена и шина сконфигурированакак ведомая, этот вывод устанавливается на ввод независимо от установки DDB5.Если процессор работает как ведущий, направление передачи данных по этомувыводу определяется DDB5. Когда вывод устанавливается на ввод, подключениеподтягивающего резистора состоянием бита PORTB5. Подробнее см. описание портаSPI.
MISO — PORTB, Bit 4 — Вход данных ведущего, выход ведомого в канале SPI.Если разрешена работа SPI в качестве ведущего, вывод PB4 сконфигурирован каквход независимо от установки DDB4. Если SPI разрешен и работает как ведомый,направление передачи данных управляется состоянием DDB4. Когда выводпринудительно сконфигурирован как вход, подключение подтягивающего резисторапо-прежнему управляется состоянием бита PORTB4. Подробнее см. описание портаSPI.
MOSI — PORTB, Bit 3 — Выход данных ведущего, вход ведомого в канале SPI.Когда SPI работает как ведомый, этот вывод работает как вход независимо отустановки бита DDB3. При работе SPI ведомым направление передачи этого выводауправляется битом DDB3. Когда вывод принудительно сконфигурирован как вход,подключение подтягивающего резистора по
прежнемууправляется состоянием бита PORTB3. Подробнее см. описание
портаSPI.
SS — PORTB, Bit 2. — Вход выбора ведомого. Если канал работает какведомый, этот вывод работает как вход независимо то установки DDB2.
SPI активируется как ведомый при переводе этого выводав низкое состояние. При работе SPI как ведущего, направление передачи данныхчерез этот вывод управляется битом DDB2. Когда вывод переводится в состояниеввода, подключение подтягивающего резистора управляется битом PORTB2. Подробнеесм. описание порта SPI.
OC1 — PORTB, Bit 1. Выходсовпадения. Вывод PB1 может работать как внешний выход совпадениятаймера/счетчика 1. Для обслуживания этой функции вывод должен бытьсконфигурирован как выход (DDB1=1). Разрешение работы этой функции рассмотренопри описании таймера. Вывод OC1
такжеработает как выход при работе таймера в режиме ШИМ.
ICP — PORTB, Bit 0. Входзахвата. Вывод PB0 может работать как внешний вход захвата Таймера/счетчика 1.Для обслуживания этой функции вывод должен быть сконфигурирован как вход.Подробнее см. описание работы таймера.
Порт C
ПортC 6-разрядный двунаправленный порт ввода/вывода.
Для обслуживания порта отведено три регистра: регистрданных PORTC (15h, 35h), регистр направления данных — DDRC (14h, 34h) иножки порта C — PINC (13h, 33h). Адрес ножек порта C предназначен только для чтения,в то время как регистр данных и регистр направления данных — для чтения/записи.Все выводы порта имеют отдельно подключаемые подтягивающие резисторы. Выходыпорта C могут поглощать ток до 20 mA и непосредственно управлять светодиоднымииндикаторами. Если выводы PC0..PC5 используются как входы и замыкаются наземлю, если включены внутренние подтягивающие резисторы, выводы являютсяисточниками тока (Iil). Дополнительные функции порта C — аналоговые входы АЦП.Если некоторые из выводов порта сконфигурированы как выходы, во время преобразованияне рекомендуется производить их переключение. В экономичном режиме триггерыШмитта отключаются от цифровых входов. Это позволяет удерживать на входаханалоговое напряжение Vcc/2 без заметного увеличения потребления.
РЕГИСТР ДАННЫХ ПОРТА C – PORTC
15h(35h)
7 6 5 4 3 2 1-
-
PORTC5
PORTC0
R
R
R\W
R\W
R\W
R\W
R\W
R\W
Начальное значение
РЕГИСТР НАПРАВЛЕНИЯ ДАННЫХ ПОРТА B
DDRC
14h(34h)
7 6 5 4 3 2 1-
-
DDC5
DDC0
R
R
R\W
R\W
R\W
R\W
R\W
R\W
Начальное значение
ВЫВОДЫ ПОРТА B
PINC
13h(33h)
7 6 5 4 3 2 1-
-
PINC5
PINC0
R
R
R\W
R\W
R\W
R\W
R\W
R\W
Начальное значениеZ
Z
Z
Z
Z
Z
PINC не является регистром, по этому адресуосуществляется доступ к физическим значениям каждого из выводов порта C. Причтении PORTC, читаются данные из регистра-защелки, при чтении PINC читаютсялогические значения присутствующие на выводах порта.
ПОРТ C, КАК ПОРТ ВВОДА/ВЫВОДА ОБЩЕГОНАЗНАЧЕНИЯ
Все6 бит порта C при использовании для ввода/вывода одинаковы.
Бит DDCn регистра DDRC выбирает направление передачиданных. Если бит установлен (1), вывод сконфигурирован как выход. Если битсброшен (0) — вывод сконфигурирован как вход. Если PORTCn установлен и выводсконфигурирован как вход, включается КМОП подтягивающий резистор. Дляотключения резистора, PORTCn должен быть сброшен (0) или вывод должен бытьсконфигурирован как выход.
Таблица 23. Влияние DDCn на выводы порта C
DDC PORTC In\Out Подтягивающие резисторы описание Нет Третье состояние1
1
Да PBn источник тока Iil, если извне соединен с землей1
Нет Выход установлен в 01
1
1
Нет Выход установлен в 1Порт D
ПортD 8-разрядный двунаправленный порт ввода/вывода.
Для обслуживания порта отведено три регистра: регистрданных PORTD (12h, 32h), регистр направления данных — DDRD (11h, 31h) иножки порта D — PIND (10h, 30h). Адрес ножек порта D предназначен только для чтения,в то время как регистр данных и регистр направления данных — для чтения/записи.Все выводы порта имеют отдельно подключаемые подтягивающие резисторы. Выходыпорта D могут поглощать ток до 20 mA и непосредственно управлять светодиоднымииндикаторами. Если выводы PD0..PD7 используются как входы и замыкаются наземлю, если включены внутренние подтягивающие резисторы, выводы являютсяисточниками тока (Iil). Альтернативные функции портаприведены в таблице.
Таблица 24. Альтернативные функции порта D
Вывод порта Альтернативная функцияPD0
RXD (вход данных UART)PD1
TXD (выход данных UART)PD2
INT0 (вход внешнего прерывания 0)PD3
INT1 (вход внешнего прерывания 1)PD4
T0 (внешний вход таймера счетчика 0)PD5
T1 (внешний вход таймера счетчика 1)PD6
AIN0 (неинвертирующ.вход компаратора)PD7
AIN1 (инвертирующий вход компаратора)РЕГИСТР ДАННЫХ ПОРТА D – PORTD
15h(35h)
7 6 5 4 3 2 1-
-
PORTD5
PORTD0
R
R
R\W
R\W
R\W
R\W
R\W
R\W
Начальное значение
14h(34h)
7 6 5 4 3 2 1-
-
DDD5
DDD0
R
R
R\W
R\W
R\W
R\W
R\W
R\W
Начальное значение
13h(33h)
7 6 5 4 3 2 1-
-
PIND5
PIND0
R
R
R\W
R\W
R\W
R\W
R\W
R\W
Начальное значениеZ
Z
Z
Z
Z
Z
PIND не является регистром, по этомуадресу осуществляется доступ к физическим значениям каждого из выводов порта D.При чтении PORTD, читаются данные из регистра-защелки, при чтении PIND читаютсялогические значения присутствующие на выводах порта.
ПОРТ D, КАК ПОРТ ВВОДА/ВЫВОДА ОБЩЕГО НАЗНАЧЕНИЯ
Бит DDDn регистра DDRD выбирает направление передачиданных. Если бит установлен (1), вывод сконфигурирован как выход. Если битсброшен (0) — вывод сконфигурирован как вход. Если PORTDn установлен и выводсконфигурирован как вход, включается КМОП подтягивающий резистор. Дляотключения резистора, PORTDn должен быть сброшен (0) или вывод должен бытьсконфигурирован как выход.
Таблица 25. Влияние DDDn на выводы порта D
DDDn PORTDn In\Out Подтягивающие резисторы Описание Вход Нет Третье состояние 1 Вход Да PDn источник тока Iil, если извне соединен с землей 1 Выход Нет Выход установлен в 0 1 1 Выход Нет Выход установлен в 1Альтернативные функции порта D
AIN1 — Порт D, бит7 — инвертирующий вход аналогового компаратора. Есливывод сконфигурирован как вход (DDD7=0) и отключен внутренний подтягивающийрезистор, этот вывод может работать как инвертирующий вход аналоговогокомпаратора. В экономичном режиме триггер Шмитта отключен от цифрового входа.Это позволяет удерживать на входе напряжение близкое к Vcc/2 без заметногоувеличения потребления.
AIN0 — Порт D, бит6 — неинвертирующий вход аналогового компаратора. Есливывод сконфигурирован как вход (DDD6=0) и отключен внутренний подтягивающийрезистор, этот вывод может работать как инвертирующий вход аналоговогокомпаратора. В экономичном режиме триггер Шмитта отключен от цифрового входа.Это позволяет удерживать на входе напряжение близкое к Vcc/2 без заметногоувеличения потребления.
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подключает встроенный подтягивающий резистор.
ПРОГРАММИРОВАНИЕ ПАМЯТИ
Программированиебитов блокировки памяти
Микроконтроллеримеет два бита блокировки, которые могут быть оставлены незапрограммированными(1) или программироваться (0), при этом достигаются свойства приведенные втаблице 20.
Таблица 26. Режимы защиты и биты блокировки
Биты блокировки Тип защиты Режим LB1 LB2 описание 11
1
защита не установлена 21
дальнейшее программирование флэш памяти и EEPROM запрещено 3 как режим 2, но запрещено и чтениеПримечание: биты блокировки стираются толькопри полном стирании памяти
Биты конфигурации (Fuse bits)
В AT90S2333/4433 предусмотрены шесть бит конфигурации- SPIEN, BODLEVEL, BODEN, и CKSEL[2:0].
Когдазапрограммирован бит SPIEN (0) разрешен режим
последовательногопрограммирования. По умолчанию бит запрограммирован
(0).В режиме последовательного программирования этот бит недоступен.
BODLEVEL. Задает уровень срабатывания схемы сброса попропаданию питания. Если бит незапрограммирован (1), этот уровень — 2.7В, для
запрограммированногобита — 4В. По умолчанию бит незапрограммирован.
BODEN.Когда этот бит запрограммирован (0), разрешен сброс по пропаданию питания. Поумолчанию бит незапрограммирован.
CKSEL[2:0]. В таблице 4 приведены значения задержки при сбросе на которые влияютэти биты. По умолчанию биты установлены в 010 — 64mS+16K CK.
Кодустройства
Все микроконтроллеры фирмы Atmel имеют 3-байтовыйсигнатурный код, по которому идентифицируется устройство. Этот код может бытьпрочитан в параллельном и последовательном режимах. Эти три байта размещены вотдельном адресном пространстве и для AT90S4433 имеют следующие значения:
1.$000: $1E — код производителя — Atmel
2.$001: $92 — 4 кБ флэш памяти
3. $002: $01 — при $01=$92 — м/схAT90S4433 для AT90S2333:
1.$000: $1E — код производителя — Atmel
2.$001: $91 — 2 кБ флэш памяти
3.$002: $05 — при $01=$92 — м/сх AT90S2333
Программирование флэш памяти и EEPROM
AT90S2333/4433 имеют 2кБ или 4кБ перепрограммируемойфлэш памяти программ и 256 байт энергонезависимой памяти данных.
При поставке флэш память и память данных стерты(содержат FFh) и готовы к программированию. Микросхемы поддерживаютвысоковольтный (12В) параллельный режим программирования и низковольтный режимпоследовательного программирования. Напряжение +12В используется только дляразрешения программирования, этот вывод почти не потребляет тока. Последовательныйрежим программирования предусмотрен для загрузки программы и данных в системепользователя (внутрисистемное программирование). В обоих режимахпрограммирования память программ и данных программируется байт за байтом. Дляпрограммирования EEPROM предусмотрен цикл автоматического стирания припрограммировании в последовательном режиме.
Параллельное программирование.
Ниже рассмотрено параллельное программирование флэшпамяти программ, энергонезависимой памяти данных, битов блокировки и конфигурации.Некоторые выводы процессоров ниже называются именами, отражающимифункциональное назначение сигналов при параллельном программировании. Выводы неприведенные в следующей таблице называются своими обычными именами.
Таблица 27. Имена выводов
Имя сигнала при программирован.Имя
вывода
Вх/Вых Функция RDY/BSY PD1 Вых0: мкросхема занята программированием
1: мкросхема готова к приему команды
OE PD2 Вх Разрешение выходов (активный 0) WR PD3 Вх Импульс записи (активный 0) BS PD4 Вх Выбор байта XA0 PD5 Вх Действие XTAL бит 0 XA1 PD6 Вх Действие XTAL бит 1Биты XA0 и XA1 определяютдействие происходящее по положительному импульсу XTAL1. Установки битовприведены в следующей таблице:
Таблица 28. Установка XA1 и XA0
XA1 XA0 Действие при подаче импульса XTAL1 Загрузка адреса памяти программ или данных (старший/младший байт задается выводом BS1
Загрузка данных (старший/младший байт для флэш памяти задается выводом BS)1
Загрузка команды1
1
Не работает, холостой ходПо импульсу WR или OE загружается команда определяющаядействие по вводу или выводу. В байте команды каждому биту присвоена функция,как показано в таблице 29.
Таблица 29. Биты конфигурации командногобайта
Бит Значение при установке 7 Стирание кристалла 6 Запись битов конфигурации, расположенных в следующих позициях байта данных: D5-SPIEN, D4-BODLEVEL, D3-BODEN, D2-D0-CKSEL (0 для программирования, 1 для стирания) 5Запись битов блокировки, расположенных в следующих позициях байта данных: D2 — LB2, D1 — LB1
(для программирования устанавливать 0)
4 Запись памяти программ или данных (определяется битом 0) 3 Чтение сигнатуры 2 Чтение битов блокировки и конфигурации, расположенных в следующих позициях байта данных: D5-SPIEN, D4-BODLEVEL, D3-BODEN, D2-D0 -CKSEL (для BS=1) или D2-LB2, D1-LB1 (для BS=0) 1 Чтение памяти программ или данных (определяется битом 0) доступ к памяти программ, 1 к памяти данныхВХОД В РЕЖИМ ПРОГРАММИРОВАНИЯ
Следующий алгоритм переводит устройство врежим параллельного программирования:
1.Подать напряжение 4.5...5.5В на выводы питания.
2.Установить RESET и BS в 0 и выдержать не меньше 100 нС.
3.Подать 12В на RESET и выждать не менее 100 нС перед изменением
BS. Любая активность на выводе BS в течение этоговремени приведет к тому, что микросхема не включится в режим программирования.
СТИРАНИЕ КРИСТАЛЛА
При стирании кристалла стираются память программ иданных, а также биты блокировки. Биты блокировки не сбрасываются до полногостирания памяти программ и данных. Биты конфигурации не изменяются. (Стираниекристалла производится перед его программированием).
Загрузкакоманды «стереть кристалл»
1. Установить XA1,XA0 в '10'.Это разрешает загрузку команды.
2. Установить BS в 0
3.Установить PC(1..0) PB(5..0) в '1000 0000'. Это команда стирания кристалла.
4.Подать положительный импульс на XTAL1. При этом загружается команда иначинается стирание памяти программ и данных. После импульса XTAL1, податьотрицательный импульс на WR, чтобы разрешить стирание битов блокировки поокончанию цикла стирания. Подождать около 10 мС до окончания цикла стирания.Стирание кристалла не генерирует сигнала RDY/BSY.
ПРОГРАММИРОВАНИЕ ФЛЭШ ПАМЯТИ
Загрузить команду «программирование флэш памяти»
1. Установить XA1,XA0 в '10'.Это разрешает загрузку команды.
2. Установить BS в 0
3.Установить PC(1..0) PB(5..0) в '0001 0000'. Это команда программирования флэшпамяти
4.Подать положительный импульс на XTAL1. При этом загружается команда.
Загрузить младший байт адреса
1. Установить XA1,XA0 в '00'.Это разрешает загрузку адреса.
2. Установить BS в 0. Этовыбирает младший байт адреса.
3. Установить на PC(1..0)PB(5..0) младший байт адреса.
4.Подать положительный импульс на XTAL1. При этом загружается младший байтадреса.
Загрузить старший байт адреса
1. Установить XA1,XA0 в '00'.Это разрешает загрузку адреса.
2. Установить BS в 1. Этовыбирает старший байт адреса.
3.Установить на PC(1..0) PB(5..0) старший байт адреса. ($00..$01)
4.Подать положительный импульс на XTAL1. При этом загружается старший байтадреса.
Загрузить байт данных
1. Установить XA1,XA0 в '01'.Это разрешает загрузку данных.
2. Установить на PC(1..0)PB(5..0) младший байт данных.
3.Подать положительный импульс на XTAL1. При этом загружается младший байтданных.
Запись младшего байта данных.
1. Установить BS в '0'. Этовыбирает младший байт данных
2.Подать на WR отрицательный импульс. Это инициирует программирование байта.RDY/BSY переходит в низкое состояние.
3.Перед программированием следующего байта подождать, пока RDY/BSY перейдет ввысокое состояние.
Загрузить байт данных
1. Установить XA1,XA0 в '01'.Это разрешает загрузку данных.
2. Установить на PC(1..0)PB(5..0) старший байт данных.
3.Подать положительный импульс на XTAL1. При этом загружается старший байтданных.
Запись старшего байта данных.
1. Установить BS в '1'. Этовыбирает старший байт данных
2.Подать на WR отрицательный импульс. Это инициирует программирование байта.RDY/BSY переходит в низкое состояние.
3.Перед программированием следующего байта подождать, пока RDY/BSY перейдет ввысокое состояние.
Загруженные адрес и данные сохраняются в устройствепосле программирования, при этом процесс программирования упрощается.
* Команду программирования флэш памяти необходимоподать только перед программированием первого байта
*Старший байт адреса можно менять только перед программированием
следующейстраницы памяти программ (256 слов).
ПРОГРАММИРОВАНИЕ ПАМЯТИ ДАННЫХ
Алгоритм программирования памяти данных следующий(обратитесь к программированию памяти программ за описанием загрузки команды,адреса и данных):
1.Загрузить команду '0001 0001'.
2.Загрузить младший адрес памяти данных (00h — 7Fh/FFh).
3.Загрузить младший байт данных
4. Подать отрицательный импульс на WR и подождатьперевода RDY/BSY в 1.
Загрузка команды необходима только перед программированием первогобайта.
ЧТЕНИЕ ПАМЯТИ ПРОГРАММ
Алгоритм чтения флэш памяти следующий (обратитесь кпрограммированию памяти программ за описанием загрузки команды, адреса иданных):
1.Загрузить команду '0000 0010'
2. Загрузить младший байт адреса ($00 — $FF)
3.Загрузить старший байт адреса ($00 — $03/$07)
4. Установить OE в '0', BS в '0'. Теперь на выводахPC(1..0) PB(5..0) можно прочитать байт данных.
5. Установить BS в '1'. Теперь на выводах PB можнопрочитать старший байт данных.
6.Установить OE в '1'.
Загрузкакоманды необходима только перед чтением первого байта.
ЧТЕНИЕ ПАМЯТИ ДАННЫХ
Алгоритм чтения памяти данных следующий (обратитесь кпрограммированию памяти программ за описанием загрузки команды, адреса и данных):
1.Загрузить команду '0000 0011'
2.Загрузить младший байт адреса (00h — 7Fh)
3. Установить OE в '0', BS в '0'. Теперь на выводахPC(1..0) PB(5..0) можно прочитать байт данных.
4.Установить OE в '1'.
Загрузкакоманды необходима только перед чтением первого байта.
ПРОГРАММИРОВАНИЕ БИТОВ КОНФИГУРАЦИИ
Алгоритм программирования битов конфигурации следующий(обратитесь к программированию памяти программ за описанием загрузки команды,адреса и данных):
1.Загрузить команду '0100 0000'
2.Загрузить данные
Бит5=0 - программироватьбит SPIEN, Бит5=1 — стереть бит SPIEN
Бит4=0 - программироватьбит BODLEVEL,
Бит4=1 - стеретьбит BODLEVEL
Бит3=0 - программироватьбит BODEN,
Бит3=1 - стеретьбит BODEN
Биты2-0 =0 — программировать биты CKSEL,
Биты2-0 =1 — стереть биты CKSEL
3. Подать на WR отрицательный импульс и ждать переходаRDY/BSY в единицу.
ПРОГРАММИРОВАНИЕ БИТОВ БЛОКИРОВКИ
Алгоритм программирования битов блокировки следующий(обратитесь к программированию памяти программ за описанием загрузки команды,адреса и данных):
1.Загрузить команду '0010 0000'
2.Загрузить данные
Бит2=0- программировать бит LB2
Бит1=0- программировать бит LB1
3. Подать на WR отрицательный импульс и ждать переходаRDY/BSY в единицу.
Битыблокировки стираются только при стирании всей микросхемы.
ЧТЕНИЕ БИТОВ КОНФИГУРАЦИИ И БЛОКИРОВКИ
Алгоритм чтения битов блокировки иконфигурации следующий (обратитесь к программированию памяти программ заописанием загрузки команды, адреса и данных):
1.Загрузить команду '0000 0100'
2. Установить OE в '0', BS в '0'. Теперь на выводахPC(1..0) PB(5..0) можно прочитать биты конфигурации.
Бит5- SPIEN — '0' запрограммирован
Бит4- BODLEVEL — '0' запрограммирован
Бит3- BODEN — '0' запрограммирован
Биты2-0 — CKSEL — '0' запрограммированы
3. Установить OE в '0', BS в '1'. Теперь на выводахPC(1..0) PB(5..0) можно прочитать биты блокировки.
Бит2- LB2 — '0' запрограммирован
Бит1- LB1 — '0' запрограммирован
3.Установить OE в '1'.
ЧТЕНИЕ БАЙТОВ СИГНАТУРЫ
Алгоритмчтения байтов сигнатуры следующий (обратитесь к программированию памятипрограмм за описанием загрузки команды, адреса и данных):
1.Загрузить команду 0000 1000
2. Загрузить младший байт адреса ($00 — $02), установитьOE и BS в «0». После этого выбранный байт сигнатуры можно прочитатьна выводах PC(1..0) PB(5..0).
3.Установить OE в «1».
Командунеобходимо подавать только перед чтением первого байта.
Таблица31. Характеристики параллельного программирования
T=21..27 ±C, Vcc=4.5-5.5V
Параметр Min Typ Max tDVXH Задерж.между установ. данных и сигн.упр. и высоким уровнем XTAL1 67 nS tXHXL Ширина импульса XTAL 67 nS tXLDHУдержание данных и сигналов управления
После установки XTAL1 = 1
67 nS tBVVL Удержание BS после установки WR 67 nS tWLWH Ширина импульса WR 67 nS tWHRL Задержка между WR 1 и RDY/BSY 0 ( ) 20 nS tXLOL Задержка между XL 0 и OE 67 nS tOLDV Задержка между XL 0 и установкой данных 20 nS tWLRH Задержка между WR 0 и RDY/BSY 1 ( ) 0.5 0.7 0.9 mS /> /> /> /> /> /> /> /> /> /> />Примечание: если tWHRL удерживается дольше,чем tWLRH импульс на RDY/BSY не появится.
ПОСЛЕДОВАТЕЛЬНАЯ ЗАГРУЗКА
Как память программ, так и память данных могут бытьзапрограммированы с использованием последовательной шины SPI, при этом выводRESET должен быть подключен к земле. Последовательный интерфейс работает свыводами SCK, MOSI (вход) и MISO (выход). После подачи низкого уровня на RESETперед программированием/стиранием необходимо исполнить команду разрешенияпрограммирования. При программировании памяти данных, во внутренний алгоритмпрограммирования встроен цикл стирания (только при последовательном программировании),поэтому нет необходимости в выполнении команды стирания памяти. Командастирания микросхемы переводит все ячейки памяти программ и данных в состояниеFFh. Флэш память программ и энергонезависимая памятьданных имеют отдельное адресное пространство: 000h — 3FFh/7FFh дляпамяти программ и 000h — 07Fh/0FFh для памяти данных. При программировании необходимоподавать внешнюю тактовую частоту на вывод XTAL1 или подключить внешнийтактовый генератор к выводам XTAL1 и XTAL2. Минимальные длительности низкого ивысокого уровня сигнала SCK определены следующим образом:
Низкий:> 2 периодов XTAL1
Высокий:> 2 периодов XTAL1
ПОДТВЕРЖДЕНИЕ ДАННЫХ
До завершения программировании нового байта, причтении из памяти будет читаться значение FFh. После тогокак микросхема будет готова для записи следующего байта, при чтении можнопрочитать записанное значение. Это используется для определения момента, когдаможно записывать следующий байт. Этот способ не будет работать для байта FFh,поэтому для записи этого числа перед программированием следующего байтапридется выждать по крайней мере 4mS. Поскольку после стирания ячейки памятиустанавливаются в FFh, при программировании ячейки, содержащие FFhможно пропускать. Это не применимо при перезаписи EEPROM без стирания памятипрограмм. В этом случае подтверждение не работает для данных FFh,для этого значения перед программированием следующего байта необходимо выждать4mS.
АЛГОРИТМ ПОСЛЕДОВАТЕЛЬНОГО ПРОГРАММИРОВАНИЯ
Для программирования и проверки AT90S2333/4433 врежиме последовательного программирования рекомендуется следующаяпоследовательность действий (см. формат четырех байтовой команды в табл.32):
1.Последовательность включения питания:
Подать напряжение питания между VCC и GND, при этомRESET и SCK должны быть установлены в '0'. Если кварцевый резонатор неподключен к выводам XTAL1 и XTAL2, подайте частоту на вывод XTAL1.(Еслипрограмматор не гарантирует установки SCK в '0' при подаче питания, после тогокак на SCK будет установлен '0', на RESET необходимо подать положительныйимпульс, и удерживать его по крайней мере два периода тактовой частоты после
установкивывода SCK в «0».
2. Подождать 20 mS и разрешить последовательноепрограммирование послав команду разрешения на вывод MOSI/PB3.
3. При посылке команды разрешения программирования,второй байт последовательности (53h) будет возвращен при посылкетретьего байта. В любом случае, должны быть посланы все четыре байта команды.Если число 53h не получено обратно, подайте положительный импульсна SCK и повторите команду разрешения программирования. Если после 32 попытокне будет получено число 53h, микросхема неисправна.
4.После подачи команды стирания (всегда при программировании памяти программ),необходимо подождать 10 mS, выдать положительный импульс на RESET и продолжитьс шага 2.
5.Память программ и память данных программируются по одному байту выдачей адреса и данных в команде записи. Перед записью новых данных в EEPROM ячейкипамяти перед записью новых данных автоматически стираются. Чтобы определитьвремя, когда можно записывать следующий байт, используется подтверждение данных. При записи предварительно стертой микросхемы записывать ячейкисодержащие FFh не обязательно.
6. Любую ячейку памяти можно проверить используякоманду чтения, которая выдает содержимое указанной ячейки на последовательныйвывод MISO/PB4.
7. По окончанию программирования вывод RESET можетбыть установлен в '1' для возобновления нормальной работы схемы.
8.Последовательность выключения питания (если необходимо) Установить XTAL1 в '0'(если не используется кварцевый резонатор)
УстановитьRESET в '1'.
Отключитьпитание
При записи последовательных данных в процессор данныечитаются по нарастающему фронту сигнала CLK. При чтении данных из процессораданные читаются по спадающему фронту сигнала CLK.
Таблица 32. Команды последовательногопрограммирования
Команда Формат команды Действие Байт 1 Байт 2 Байт 3 Байт 4
Разрешение рограммир. 1010 1100 0101 0011 xxxx xxxx xxxx xxxx Разрешен.послед. программирования после установки RESET в '0'
Стирание микросх. 1010 1100 100x xxxx xxxx xxxx xxxx xxxx Стирание памяти прогр. и данных
Чтение памяти прогр. 0010 H000 0000 aaaa bbbb bbbb oooo oooo Читать старший или младший байт o по адресу ab
Запись памяти прогр. 0100 H000 0000 aaaa bbbb bbbb iiii iiii Запись старш. или младш. байта i в память прогр по адресу ab
Чтение памяти данных 1010 0000 0000 000a bbbb bbbb oooo oooo Читать данные o по адресу ab
Запись памяти данных 1100 0000 0000 000a bbbb bbbb iiii iiii Запись данных i по адресу ab
Чтение битов блокир. 0101 1000 xxxx xxxx xxxx xxxx xxxx x21x Биты 2 и 1 равны 0 – блокировка 1 — нет блокир.
Запись битов блокир. 1010 1100 111x x21x xxxx xxxx xxxx xxxx Запись битов бло кировки. Установить 1,2=0 для блокировки памяти
Читать код устройства 0011 0000 xxxx xxxx xxxx xxbb oooo oooo Читать код устройства o с адреса b
Запись битов-перемыч 1010 1100 11_176543 xxxx xxxx xxxx xxxx Запись битов-перемычек. Установить 3,4,5,6,7 в «0» чтобы запрограммировать
Чтение битов-перемыч 1010 0000 xxxx xxxx xxxx xxxx xx87 6543
Чтение битов-перемычек.
0 – запрограммир 1 — стерт
/> /> /> /> /> /> /> /> /> /> /> /> />a - старшиебиты адреса; b — младшие биты адреса; o — выход данных
H = '0'-младшийбайт, '1'-старший байт; i — вход данных;
x - неиспольз-ся; 1 — 1-й бит блокировки; 2 — 2-й бит блокировки;
3 - CKSEL0; 4 — CKSEL1; 5 — CKSEL2; 6 — BODEN;7 — BODLEVEL;
8 - SPIEN;
Максимально допустимые параметры
Рабочая температура… -40±С — +105±С
Температура хранения… -65±С — +150±С
Напряжение на любом выводе кроме RESET… -1.0V — +7.0V
Максимальное рабочее напряжение… 6.6V
Постоянный ток через вывод порта… 40.0 mA
Постоянный ток между VCC и GND .......................140.0 mA
ПРИМЕЧАНИЕ: выход параметров запределы указанные в таблице может привести к нарушению работоспособностимикросхемы. Это предельные значения параметров, рабочие параметры микросхемыприведены ниже. Удержание предельных значений на выводах м/сх в течениедлительного времени может привести к потере работоспособности м/сх.
ХАРАКТЕРИСТИКИ ПО ПОСТОЯННОМУ ТОКУ
Ta= -40...+85±C, Vcc=2.7...6.0V (если не указано иначе)
Мин./Тип./Макс.
Входноенапряжение '0' — -0.5/_/0.3Vcc V
Входноенапряжение '1'(кроме XTAL1 и RESET) — 0.7Vcc/_/Vcc+0.5 V
наXTAL1 и RESET — 0.7Vcc/_/Vcc+0.5 V Выходное напряжение '0'(Порты B,C,D)Il=20mA, Vcc=5V — _/_/0.5 V
Il=10mA, Vcc=3V — _/_/0.5 V Выходное напряжение'1'(Порты B,C,D) I0h=10mA, Vcc=5V — Vcc-0.5/_/_ V
I0h=5mA,Vcc=2.7V — Vcc-0.5/_/_ V Подтягивающий резистор сброса — 100/_/500 кОм
Подтягивающийрезистор вывода порта 10/50/100 кОм
Потребляемыйток:
Активныйрежим, 3V, 4MHz — _/3.0/_ mA
холостойход (idle mode), 3V, 4MHz — _/750/_ uA
пониженноепотребление WDT включен, 3V — _/10/_ uA
WDTвыключен, 3V — _/_/1 uA
Напряжениесмещения аналогового компаратора Vcc=5V — _/_/20 mV
Входнойток утечки аналогового компаратора — 1/5/10 nA
Времясрабатывания аналогового компаратора Vcc=2.7V — _/750/_ nS
Vcc=4.0V — _/500/_ nS
ПРИМЕЧАНИЯ:
1. Врабочем состоянии ток через выводы должен ограничиваться следующими условиями:
— Максимальный ток через вывод — 20 mA
— Максимальный ток через все выводы — 80mA
При превышении выходного тока выше указанных пределов,напряжение на выходе может отличаться от приведенного выше. Поглощениевыводами тока больше приведенного не гарантируется.
2. Минимальное напряжение длярежима пониженного потребления — 2V
ПАРАМЕТРЫ ВНЕШНЕГО ТАКТОВОГО СИГНАЛА
Параметр Vcc=2.7...6.0 V Vcc=4.0...6.0 V Ед. min max min max Частота 4 8 MHz Период 250 125 nS Длительность '1' 115 58.3 nS Длительность '0' 115 58.3 nS Длительность фронта 10 4.15 nS
Список регистров.
Адрес регистра
название егистра
Bit7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit
3Fh (5Fh)SREG
I T H S V N Z C 3Eh (5Eh)ЗАРЕЗЕРВИРОВАН 3Dh (5Dh)
SP
SP7 SP6 SP5 SP4 SP3 SP2 SP1 SP0 3Ch (5Ch)ЗАРЕЗЕРВИРОВАН 3Bh (5Bh)
GIMSK
INT1 INT0-
-
-
-
-
-
3Ah (5Ah)GIFR
INTF1 INTF0-
-
-
-
-
-
39h (59h)TIMSK
TOIE1 OCIE1-
-
TICE1-
TOIE0-
38h (58h)TIFR
TOV1 OCF1-
-
ICF1-
TOV0-
37h (57h)ЗАРЕЗЕРВИРОВАН 36h (56h)
ЗАРЕЗЕРВИРОВАН 35h (55h)
MCUCR
-
-
SE SM ISC11 ISC10 ISC01 ISC00 34h (54h)MCUSR
-
-
-
-
WDRF BORF EXTRF PORF 33h (53h)TCCR0
-
-
-
-
-
CS02 CS01 CS00 32h (52h)TCNT
Таймер / счетчик (8 бит)
31h (51h)ЗАРЕЗЕРВИРОВАН 30h (50h)
ЗАРЕЗЕРВИРОВАН 2Fh (4Fh)
TCCR1A
COM11 COM10-
-
-
-
PWM11 PWM10 2Eh (4Eh)TCCR1B
ICNC1 ICES1-
-
CTC1 CS12 CS11 CS10 2Dh (4Dh)TCNT1H
Таймер/счетчик1 старший байт 2Сh (4Сh)TCNT1L
Таймер/счетчик1 младший байт 2Bh (4Bh)OCR1AH
Таймер/счетчик1 регистр сравнения старший байт 2Ah (4Ah)OCR1AL
Таймер/счетчик1 регистр сравнения младший байт -ЗАРЕЗЕРВИРОВАН 27h (47h)
ICR1H
Таймер/счетчик1 регистр захвата старший байт 26h (46h)ICR1L
Таймер/счетчик1 регистр захвата младший байт -ЗАРЕЗЕРВИРОВАН 21h (41h)
WDTCR
-
-
-
WDTOE WDE WDP2 WDP1 WDP0 20h (40h)ЗАРЕЗЕРВИРОВАН 1Fh (3Fh)
ЗАРЕЗЕРВИРОВАН 1Eh (3Eh)
EEAR
Регистр адреса энергонезависимой памяти 1Dh (3Dh)EEDR
Регистр данных энергонезависимой памяти 1Ch (3Ch)EECR
-
-
-
-
EERIE EEMWE EEWE EERE -ЗАРЕЗЕРВИРОВАН 18h (38h)
PORTB
-
-
PORTB5 PORTB4 PORTB3 PORTB2 PORTB1 PORTB0 17h (37h)DDRB
-
-
DDB5 DDB4 DDB3 DDB2 DDB1 DDB0 16h (36h)PINB
-
-
PINB5 PINB4 PINB3 PINB2 PINB1 PINB0 15h (35h)PORTC
-
-
PORTC5 PORTC4 PORTC3 PORTC2 PORTC1 PORTC0 14h (34h)DDRC
-
-
DDC5 DDC4 DDC3 DDC2 DDC1 DDC0 13h (33h)PINC
-
-
PINC5 PINC4 PINC3 PINC2 PINC1 PINC0 12h (32h)PORTD
-
-
PORTD5 PORTD4 PORTD3 PORTD2 PORTD1 PORTD0 11h (31h)DDRD
-
-
DDD5 DDD4 DDD3 DDD2 DDD1 DDD0 10h (30h)PIND
-
-
PIND5 PIND4 PIND3 PIND2 PIND1 PIND0 0Fh (2Fh)SPDR
Регистр данных SPI 0Eh (2Eh)SPSR
SPIF WCOL-
-
-
-
-
-
0Dh (2Dh)SPCR
SPIE SPE DORD MSTR CPOL CPHA SPR1 SPR0 0Ch (2Ch)UDR
Регистр данных UART 0Bh (2Bh)USR
RXC TXC UDRE FE OR-
-
-
0Ah (2Ah)UCR
RXCIE TXCIE UDRIE RXEN TXEN CHR9 RXB8 TXB8 09h (29h)UBRR
Регистр скорости передачи UART 08h (28h)ACSR
ACD AINBG ACO ACI ACIE ACIC ACIS1 ACIS0 07h (27h)ADMUX
-
ADCBG-
-
-
MUX2 MUX1 MUX0 06h (26h)ADCSR
ADEN ADSC ADFR ADIF ADIE ADPS2 ADPS1 ADPS0 05h (25h)ADCH
-
-
-
-
-
- ADC9 ADC8 04h (24h)ADCL
ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADC1 ADC0 03h ( 23h)UBRRH
Регистр скорости передачи UART (старший)
--
ЗАРЕЗЕРВИРОВАН 00h (20h)-
ЗАРЕЗЕРВИРОВАН
Примечание: Для совместимости с другими устройствами,зарезервированные биты при записи необходимо устанавливать в «0».Данные в зарезервированные ячейки памяти записывать нельзя.
Набор команд
Мнемоника Операнды Описание Действие Флаги Цкл Арифметические команды 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 SUBI Rd, K Вычесть константу Rd<Rd-K SBIW Rdl,K Вычесть слово с константой Rdh,l<Rdh,l-K SBC Rd, Rr Вычесть с переносом Rd<Rd-Rr-C SBCI Rd, K Вычесть с переносом Rd<Rd-K-C AND Rd, Rr Логическое И Rd<Rd AND Rr ANDI Rd, K Логическое И Rd<Rd AND K OR Rd, Rr Логическое ИЛИ Rd<Rd OR Rr 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<RdAND(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 или 1 Rd<Rd AND Rd Z,N,V 1 CLR Rd Очистить регистр Rd<Rd XOR Rd Z,N,V 1 SER Rd Установить регистр Rd<$FF None 1 КОМАНДЫ ВЕТВЛЕНИЯ RJMP k Относительный переход PC<PC+k+1 None 2 LJMP Переход по адресу (Z) PC<Z None 2 RCALL k Относительный вызов подпрогрограммы PC<PC+k+1 None 3 ICALL Вызов подпр по адресу (Z) PC<Z None 3 RET Выход из подпрограммы PC<STACK None 4 RETI Выход из прерывания PC<STACK I 4 CPSE Rd,Rr Сравнить, пропуск если Rd=Rr if(Rd=Rr) PC<PC+2 или 3 None 1/2 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 SBRC Rr,b Пропуск если бит в регистре сброшен if(Rr(b)=0) None 1/2 SBRS Rr,b Пропуск если бит в регистре установлен if(Rr(b)=1) None 1/2 SBIC P, b Пропуск если бит в регистре I\O сброшен if(P(b)=0) None 1/2 SBIS P, b Пропуск если бит в регистре I\O установлен if(P(b)=1) None 1/2 BRBS s, k Переход если установл флаг s if(SREG(s)=1) None 1/2 BRBC s, k Переход если сброшен флаг s if(SREG(s)=0) None 1/2 BREQ k Переход если равно Z=1 if(Z=1) None 1/2 BRNE k Переход если неравно if(Z=0) if(Z=0) None 1/2 BRCS k Переход если установл перенос if(C=1) None 1/2 BRCC k Переход если сброшен перенос if(C=0) None 1/2 BRSH k Переход если равно или больше if(C=0) None 1/2 BRLO k Переход если меньше if(C=1) PC<PC+k+1 None 1/2 BRMI k Переход если минус if(N=1) PC<PC+k+1 None 1/2 BRPL k Переход если плюс if(N=0) PC<PC+k+1 None 1/2 BRGE k Переход если больше или равно, со знаком if(N XOR V=0) PC<PC+k+1 None 1/2 BRLT k Переход если меньше нуля, со знаком if(N XOR V=1) PC<PC+k+1 None 1/2 BRHS k Переход если установл флаг H if (H=1) PC<PC+k+1 None 1/2 BRHC k Переход если сброшен флаг H if (H=0) PC<PC+k+1 None 1/2 BRTS k Переход если установл флаг T if (H=1) PC<PC+k+1 None 1/2 BRTC k Переход если сброшен флаг T if (H=0) PC<PC+k+1 None 1/2 BRVS k Переход если установл флаг V if (H=1) PC<PC+k+1 None 1/2 BRVC k Переход если сброшен флаг V if (H=0) PC<PC+k+1 None 1/2 BRIE k Переход если разрешены прерывания if(I=1) PC<PC+k+1 None 1/2 BRID k Переход если запрещены прерывания if(I=1) PC<PC+k+1 None 1/2 КОМАНДЫ ПЕРЕСЫЛКИ MOV Rd,Rr Пересылка между рег. Rd<Rr None 1 LDI Rd,K Загрузить константу Rd<K None 1 LD Rd,X Загрузить регистр непосредственно Rd<(X) None 2 LD Rd,X+ Загрузить регистр непосредст. c постинкрем Rd<(X),X<X+1 None 2 LD Rd,-X Загрузить регистр непоср. с предв.декрем X<X-1,Rd<(X) None 2 LD Rd,Y Загрузить регистр непосредственно Rd<(Y) None 2 LD Rd,Y+ Загрузить регистр непоср. c пост инкрем Rd<(Y),Y<Y+1 None 2 LD Rd,-Y Загрузить регистр непоср. с предв.декрем Y<Y-1,Rd<(Y) None 2 LDD Rd,Y+q Загрузить регистр непоср. со смещением Rd<(Y+q) None 2 LD Rd,Z Загрузить регистр непосредственно Rd<(Z) None 2 LD Rd,Z+ Загрузить регистр непоср. c пост инкрем Rd<(Z),Z<Z+1 None 2 LD Rd,-Z Загрузить регистр непоср. с предв.декрем Z<Z-1,Rd<(Z) None 2 LDD Rd,Z+q Загрузить регистр непоср. со смещением Rd<(Z+q) None 2 LDS Rd,k Загрузить из ОЗУ Rd<(k) None 3 ST X,Rr Записать регистр непосредственно (X)<Rr None 2 ST -X,Rr Записать регистр непоср.c пред.декрем. X<X-1,(X)<Rr ST Y,Rr Записать регистр непосредственно (Y)<Rr ST Y+,Rr Записать регистр непоср.c пост инкр (X)<Rr,X<X+1 ST -Y,Rr Записать регистр непоср.c пред.декрем Y<Y-1,(Y)<Rr None 2 STD Y+q,Rr Запис.рег.непоср.сосмещением (Y+q)<Rr None 2 ST Z,Rr Записать регистр непосредственно (Y)<Rr None 2 ST Z+,Rr Записать регистр непоср.c пост инкр (Y)<Rr,Y<Y+1 None 2 ST -Z,Rr Записать регистр непоср.c пред.декрем Z<Z-1,(Z)<Rr None 2 STD Y+q,Rr Запис.рег.непоср.сосмещением (Y+q)<Rr None 2 STS k,Rr Записать в ОЗУ (k)<Rr None 3 LPM Загр.из памяти программ R0<(Z) None 3 IN Rd, P Ввод из порта Rd<P None 1 OUT P, Rr Вывод в порт P<Rr None 1 PUSH Rr Записать в стек STACK<Rr None 2 POP Rr Прочитать из стека Rr<STACK None 2 КОМАНДЫ РАБОТЫ С БИТАМИ SBI P,b Установить бит в регистре ввода/вывода I/O(P,b)<1 None 2 CBI P,b Сбросить бит в регистре ввода/вывода I/O(P,b)<0 None 2 LSL Rd Логический сдвиг влево Rd(n+1)<Rd(n), Rd(0)<0 Z,C,N,V 1 LSR Rd Логичский сдвиг вправо Rd(n)<Rd(n+1), Rd(7)<0 Z,C,N,V 1 ROL Rd сдвиг влево через C Rd(0)<C,Rd(n+1)<Rd(n), C<Rd(7) Z,C,N,V 1 ROR Rd сдвиг вправо через C Rd(7)<C,Rd(n)<Rd(n+1), C<Rd(0) Z,C,N,V 1 ASR Rd Арифметический сдвиг вправо Rd(n)<Rd(n+1), n=0..6 Z,C,N,V 1 SWAP Rd Обмен тетрад
Rd(3-0)<Rd(7-4)
Rd(7-4)<Rd(3-0)
None 1 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 None 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 Нет операции None 1 SLEEP Останов None 3 WDR Сброс сторожевого таймера None 1Подготовил Матвеев Дмитрий
2003