AVR микроконтроллер AT90S2333 фирмы Atmel
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 и определены следующим образом:
| |15 |
|Регистр |0 |
|X | |
| |7 |7 |
| |0 |0 |
| |1Bh (R27) |1Ah (R26) |
| |15 |
|Регистр |0 |
|Y | |
| |7 |7 |
| |0 |0 |
| |1Dh (R29) |1Ch (R28) |
| |15 |
|Регистр |0 |
|Z | |
| |7 |7 |
| |0 |0 |
| |1Fh (R31) |1Eh (R30) |
При различных режимах адресации эти регистры могут использоваться как
фиксированный адрес, для адресации с автоинкрементом или с автодекрементом.
Арифметико-логическое устройство - АЛУ
АЛУ процессора непосредственно подключено к 32 регистрам общего
назначения. За один машинный цикл АЛУ производит операции между регистрами
регистрового файла. Команды АЛУ разделены на три основных категории -
арифметические, логические и битовые.
Загружаемая память программ.
AT90S2333/4433 содержат 2/4 кБ загружаемой флэш памяти для хранения
программ. Поскольку все команды занимают одно 16- или 32-разрядное слово,
флэш память организована как 1/2 Kx16. Флэш-память выдерживает не менее
1000 циклов перезаписи. Программный счетчик имеет ширину 10/11 бит и
позволяет адресоваться к 1024/2048 словам программной флэш-памяти.
Подробно загрузка флэш памяти будет рассмотрена дальше.
EEPROM память данных
AT90S2333/4433 содержат 128/256 байт электрически стираемой
энергонезависимой памяти (EEPROM). EEPROM организована как отдельная
область данных, каждый байт которой может быть прочитан и перезаписан.
EEPROM выдерживает не менее 100000 циклов записи/стирания. Доступ к
энергонезависимой памяти данных рассмотрен ниже и задается регистрами
адреса, данных и управления. Дальше будет рассмотрена загрузка данных в
EEPROM через SPI интерфейс.
Статическое ОЗУ данных
На рисунке приведенном ниже показана организация памяти данных в
AT90S2333/4433.
224 ячейки памяти включают в себя регистровый файл, память ввода/вывода и
статическое ОЗУ данных.
Первые 96 адресов используются для регистрового файла и памяти
ввода/вывода, следующие 128 - для ОЗУ данных.
При обращении к памяти используются пять различных режимов адресации:
прямой, непосредственный со смещением, непосредственный, непосредственный с
предварительным декрементом и непосредственный с постинкрементом. Регисты
R26..R31 регистрового файла используются как указатели для непосредственной
адресации. Прямая адресация имеет доступ ко всей памяти данных.
Непосредственная адресация со смещением используется для доступа к 63
ячейкам базовый адрес которых задается содержимым регистров Y или Z.
Для непосредственной адресации с инкрементом и декрементом адреса
используются адресные регистры X, Y и Z.
При помощи любого из этих режимов производится доступ ко всем 32 регистрам
общего назначения, 64 регистрам ввода/вывода и 128 ячейкам ОЗУ.
Время выполнения команд.
ЦПУ процессора AVR управляется системной частотой генерируемой внешним
резонатором. Внутреннее деление частоты генератора не используется. В
процессоре организован буфер (pipeline) команд, при выборе команды из
памяти программ происходит выполнение предыдущей команды. Подобная
концепция позволяет достичь быстродействия 1MIPS на MHz, уникальных
показателей стоимости, быстродействия и потребления процессора.
|Регистровый файл |Область адресов |
| |данных |
|R0 |00h |
|R1 |01h |
|: |: |
|R30 |1E |
|R31 |1F |
|Регистры | |
|ввода\вывывода | |
|00h |20h |
|01h |21h |
|: |: |
|3Eh |5Eh |
|3Fh |5Fh |
|- |Встроенное ОЗУ |
|- |61h |
|- |: |
|- |DEh |
|- |DFh |
Пространство ввода/вывода AT90S2333/4433
|Адреса|регист|название |функции |
| |ры | | |
|3Fh(5F|SREG |Status REGister |Регистр Состояния |
|h) | | | |
|3Dh(5D|SP |Stack pointer low |Указатель стека |
|h) | | | |
|3Bh(5B|GIMSK |General Interrupt MaSK |Общий регистр маски прерываний |
|h) | |register | |
|3Ah(5A|GIFR |General Interrupt Flag |Общий регистр флагов прерываний |
|h) | |Register | |
|39h(59|TIMSK |Timer/counter Interrupt |Регистр маски прерываний от |
|h) | |mask register |таймера/счетчика |
|38h(58|TIFR |Timer/counter Interrupt |Регистр флага прерывания |
|h) | |Flag register |таймера/счетчика |
|35h(55|MCUCR |MCU general Control |общий регистр управления |
|h) | |Register |микроконтроллером |
|34h(54|MCUSR |MCU Status Register |рег.состояния микроконтрол. |
|h) | | | |
|33h(53|TCCR0 |Timer/Counter 0 Control |Регистр управления таймером |
|h) | |Register |счетчиком 0 |
|32h(52|TCNT0 |Timer/Counter 0 (8-бит) |Таймер/счетчик 0 (8 бит) |
|h) | | | |
|2Fh(4F|TCCR1A|Timer/Counter 1 Control |Рег. A управления таймером |
|h) | |Register A |счетчиком 1 |
|2Eh(4E|TCCR1B|Timer/Counter 1 Control |Рег. B управления таймером |
|h) | |Register B |счетчиком 1 |
|2Dh(4D|TCNT1H|Timer/Counter 1 High byte |Таймер/счетчик 1 старший байт |
|h) | | | |
|2Ch(4C|TCNT1L|Timer/Counter 1 Low byte |Таймер/счетчик 1 младший байт |
|h) | | | |
|2Bh(4B|OCR1H |Output Compare Register 1 |Выход регистра совпаден. 1 старший |
|h) | |high byte |байт |
|2Ah(4A|OCR1L |Output Compare Register 1 |Выход регистра совпаден. 1 младший |
|h) | |low byte |байт |
|27h(47|ICR1H |T/C 1 Input Cupture |Регистр захвата Т\С 1 старший байт |
|h) | |Register High Byte | |
|26h(46|ICR1L |T/C 1 Input Cupture |Регистр захвата Т\С 1 младший байт |
|h) | |Register Low Byte | |
|21h(41|WDTCR |Watchdog Timer Control |Регистр управления сторожевым |
|h) | |Register |таймером |
|1Eh(3E|EEAR |EEPROM Address Register |Регистр адреса энергонезависимой |
|h) | | |памяти |
|1Dh(3D|EEDR |EEPROM Data Register |Регистр данных энергонезависимой |
|h) | | |памяти |
|1Ch(3C|EECR |EEPROM Control Register |Регистр управления |
|h) | | |энергонезависимой памяти |
|18h(38|PORTB |Data Register, Port B |Регистр данных порта B |
|h) | | | |
|17h(37|DDRB |Data Direction Register |Регистр направления данных порта B |
|h) | |Port B | |
|16h(36|PINB |Input pins, Port B |Выводы порта B |
|h) | | | |
|15h(35|PORTС |Data Register, Port С |Регистр данных порта С |
|h) | | | |
|14h(34|DDRС |Data Direction Register |Регистр направления данных порта С |
|h) | |Port С | |
|13h(33|PINС |Input pins, Port С |Выводы порта С |
|h) | | | |
|12h(32|PORTD |Data Register, Port D |Регистр данных порта D |
|h) | | | |
|11h(31|DDRD |Data Direction Register |Регистр направления данных порта D |
|h) | |Port D | |
|10h(30|PIND |Input pins, Port D |Выводы порта D |
|h) | | | |
|0Fh(2F|SPDR |SPI I/O Data Register |Регистр данных порта SPI |
|h) | | | |
|0Eh(2E|SPSR |SPI Status Register |Регистр состоян. порта SPI |
|h) | | | |
|0Dh(2D|SPCR |SPI Control Register |Регистр управл.порта SPI |
|h) | | | |
|0Ch(2C|UDR |UART Data Register |Регистр данных последовательного |
|h) | | |порта |
|0Bh(2B|USR |UART Status Register |Регистр состояния последовательного|
|h) | | |порта |
|0Ah(2A|UCR |UART Control Register |Регистр управления |
|h) | | |последовательного порта |
|09h(29|UBRR |UART Baud Rate Register |Регистр скорости последовательного |
|h) | | |порта |
|08h(28|ACSR |Analog Comparator Control |Регистр управления и состояния |
|h) | |and Status Register |аналогового компарат. |
|07h(27|ADMUX |ADC multiplexer Select |Регистр коммутатора АЦП |
|h) | |register | |
|06h(26|ADCSR |ADC Control and Status |Регистр управления и состояния АЦП |
|h) | |Register | |
|05h(25|ADCH |ADC data register High |Рег данных АЦП (старш.) |
|h) | | | |
|04h(24|ADCL |ADC data register Low |Рег данных АЦП (младш.) |
|h) | | | |
|03h(23|UBRRHI|UART Baud Rate Register |Регистр скорости последовательного |
|h) | |HIgh |порта (старш.) |
Примечание: зарезервированные и неиспользуемые ячейки не показаны
Все устройства ввода/вывода и периферийные устройства процессора
располагаются в пространстве ввода/вывода. Различные ячейки этого
пространства доступны через команды IN и OUT, пересылающие данные между
одним из 32-х регистров общего назначения и пространством ввода/вывода. К
регистрам 00h..1Fh можно осуществлять побитовый доступ командами SBI и CBI.
Значение отдельного бита этих регистров можно проверить командами SBIC и
SBIS. Дополнительную информацию по этому вопросу можно найти в описании
системы команд.
При использовании специальных команд IN, OUT, SBIS и SBIC, должны
использоваться адреса $00..$3F. При доступе к регистру ввода/вывода как к
ячейке ОЗУ, к его адресу необходимо добавить $20. В приведенной выше
таблице адреса регистров в памяти данных приведены в скобках. Для
совместимости с другими устройствами при доступе к зарезервированным битам
в них должен записываться ноль, зарезервированные адреса в пространстве
ввода/вывода не должны записываться
Регистр состояния – SREG 3Fh(5Fh)
Регистр состояния расположен по адресу 3Fh (5Fh) пространства
ввода/вывода и определен следующим образом:
| |SP7 |SP6 |SP5 |SP4 |SP3 |SP2 |SP1 |SP0 |
| |R\W |R\W |R\W |R\W |R\W |R\W |R\W |R\W |
|Начальное|0 |0 |0 |0 |0 |0 |0 |0 |
|значение | | | | | | | | |
Указатель стека указывает на область памяти в которой расположен стек
вызова подпрограмм и прерваний. Область стека в ОЗУ должна быть задана до
того как произойдет любой вызов подпрограммы или будут разрешены
прерывания. Указатель стека уменьшается на 1 при записи данных в стек
командой PUSH и уменьшается на 2 при вызове подпрограммы командой CALL или
обработке прерывания. Указатель стека увеличивается на 1 при выборе данных
из стека командой POP и увеличивается на 2 при выполнении команд возврата
из подпрограммы или обработчика прерывания (RET или RETI).
***Стек процессора работает с предварительным инкрементом и постдекрементом
Сброс и обработка прерываний.
В процессоре предусмотрены 13 источников прерываний. Эти прерывания и
сброс имеют различные векторы в области памяти программ. Каждому из
прерываний присвоен отдельный бит разрешающий данное прерывание при
установке бита в 1, если бит I регистра состояния разрешает общее
обслуживание прерываний.
Самые младшие адреса памяти программ определены как векторы сброса и
прерываний. Полный список векторов прерываний приведен в таблице Этот
список определяет и приоритет различных прерываний. Меньшие адреса
соответствуют более высокому уровню приоритета. Самый высокий уровень у
сброса, следующий приоритет у INT0 - внешнего запроса прерывания 0 и т.д.
Ниже приведена типичная программа обработки сброса и векторов прерываний:
|000h |rjmp RESET |Обработка сброса |
|001h |rjmp EXT_INT0 |Обработка IRQ0 |
|002h |rjmp EXT_INT1 |Обработка IRQ1 |
|003h |rjmp TIM1_CAPT |Обработка захвата таймера 1 |
|004h |rjmp TIM1_COMP |Обработка совпадения таймера 1 |
|005h |rjmp TIM1_OVF |Обработка переполнения таймера 1|
|006h |rjmp TIM0_OVF |Обработка переполнения таймера 0|
|007h |rjmp SPI_STC |Обработка передачи по SPI |
|008h |rjmp UART_RXC |Обработка приема байта |
|009h |rjmp UART_DRE |Обработка освобождения UDR |
|00Ah |rjmp UART_TXC |Обработка передачи байта |
|00Bh |rjmp ADC |Обработка преобразования АЦП |
|00Ch |rjmp EE_RDY |Обработка готовности EEPROM |
|00Dh |rjmp ANA_COMP |Обработка аналогов. компаратора |
|00Eh |Основная |Начало основной программы |
| |программа | |
Сброс и векторы прерываний.
|Номер |Адрес|Источник |Описание прерывания |
|вектор| | | |
|а | | | |
|1 |000h |RESET |Ножка сброса, сторожевой таймер |
| | | |Brown-Out reset |
|2 |001h |INT0 |Внешнее прерывание 0 |
|3 |002h |INT1 |Внешнее прерывание 1 |
|4 |003h |TIMER1 CAPT|Захват таймера/счетчика 1 |
|5 |004h |TIMER1 COMP|Совпаден. таймера/счетчика 1 |
|6 |005h |TIMER1 OVF |Переполнение таймера/счетчика 1 |
|7 |006h |TIMER0 OVF |Переполнение таймера/счетчика 0 |
|8 |007h |SPI, STC |Передача по SPI завершена |
|9 |008h |UART RX |Последоват.порт прием закончен |
|10 |009h |UART UDRE |Посл.порт регистр данных пуст |
|11 |00Ah |UART TX |Посл.порт передача закончена |
|12 |00Bh |ADC |Преобразование АЦП завершено |
|13 |00Ch |RDY |EEPROM готово |
|14 |00Dh |COMP |Аналоговый компаратор |
ИСТОЧНИКИ СБРОСА
AT90S2333/4433 имеют четыре источника сброса.
* Сброс по включению питания. Процессор сбрасывается при подаче питания на
выводы VCC и GND.
* Внешний сброс. Процессор сбрасывается при подаче низкого уровня на вывод
RESET на время более двух периодов тактовой частоты.
* Сброс от сторожевого таймера. Процессор сбрасывается по окончанию времени
отработки сторожевого таймера, если разрешена его работа.
* Brown-Out сброс сброс при падении Vcc ниже некоторого значения.
Во время сброса все регистры ввода/вывода устанавливаются в начальные
значения, программа начинает выполняться с адреса $000, по этому адресу
должна быть записана команда RJMP - относительный переход на программу
обработки сброса. Если в программе не разрешаются прерывания и векторы
прерываний не используются, в первых адресах памяти может быть записана
программа.
Сброс по включению питания
Импульс сброса по включению питания генерируется внутренней схемой. Уровень
срабатывания схемы - 2.2В. Сброс производится когда напряжение питания
превысит уровень срабатывания. Схема сброса по включению питания не дает
процессору запускаться до тех пор, пока напряжение не достигнет безопасного
уровня. При достижении безопасного уровня напряжения включается счетчик
задержки определяющий длительность сброса. Эта длительность задается битами-
перемычками и может устанавливаться в одно из восьми значений приведенных в
таблице 4.
Таблица 3. Хар актеристики сброса.(Vcc=5.0V)
|Тип | |Min |Typ |Max |
|напряжения | | | | |
|Vpower |Напряжение срабатывания сброса по включению |1.7v |2.2v |2.7v |
| |питания | | | |
|Vreset |Напряжение срабатывания сброса по выводу RESET| |0.6Vcc| |
|Vbodlevel |Напряжение срабатывания сброса |BODLEVEL=1 |2.6v |2.7v |2.8v |
| |по Brown-Out | | | | |
| |Напряжение срабатывания сброса |BODLEVEL=0 |3.8v |4.0v |4.2v |
| |по Brown-Out | | | | |
Таблица 4. Установка времени сброса
|CKSEL [2:0] |Время запуска|
|000 |4mS + 6CK |
|001 |6CK |
|010 |64mS + 16K CK|
|011 |4mS + 16K CK |
|100 |16K CK |
|101 |64mS + 1K CK |
|110 |4mS + 1K CK |
|111 |1K CK |
ВНЕШНИЙ СБРОС
Внешний сброс обрабатывается по низкому уровню на выводе RESET. Вывод
должен удерживаться в низком состоянии по крайней мере два периода тактовой
частоты. После достижения напряжения Vrst запускается таймер задержки,
через промежуток времени Tout процессор запускается.
BROWN-OUT
AT90S2333/4433 имеют встроенную схему отслеживания напряжения питания.
Работа этой схемы разрешается и запрещается битом-перемычкой BODEN. Если
бит BODEN запрограммирован, при уменьшении напряжения ниже заданного уровня
срабатывает схема сброса. Время сброса задается как и для сброса по
включению питания (табл.4). Уровень сброса устанавливается битом BODLEVEL
на 2.7В если бит не запрограммирован или на 4В если
бит запрограммирован. Уровень срабатывания имеет гистерезис 50мВ.
Для того, чтобы произошел сброс падение напряжения до уровня срабатывания
должно продержаться не менее 3мкС для уровня срабатывания 4В (7мкС для
2.7В).
СБРОС ПО СТОРОЖЕВОМУ ТАЙМЕРУ
По истечению периода работы сторожевого таймера генерируется импульс
длительностью 1 период тактовой частоты. По заднему фронту этого импульса
запускается таймер, отсчитывающий время сброса
РЕГИСТР СОСТОЯНИЯ ПРОЦЕССОРА - MCUSR
Этот регистр содержит информацию о том, что явилось причиной сброса
процессора.
MCUSR
| |INT1 |INT0 |- |- |- |- |- |- |
| |R\W |R\W |R |R |R |R |R |R |
|Начальное|0 |0 |0 |0 |0 |0 |0 |0 |
|значение | | | | | | | | |
Бит 7 - INT1: Запрос внешнего прерывания 1 разрешен. Когда этот бит
установлен, а также установлен бит I регистра состояния, разрешается
прерывание от внешнего вывода. Биты управления запуском прерывания (ISC11 и
ISC10) в регистре управления микроконтроллером (MCUCR) определяют по какому
событию отрабатывается прерывание - по спадающему или нарастающему фронту
или же по уровню. Активность на выводе приводит к возникновению прерываний
даже если вывод сконфигурирован как выход. При возникновении прерывания
выполняется программа, начинающаяся с адреса 002h в памяти программ. (см.
также "Внешние прерывания").
Бит 6 - INT0: Запрос внешнего прерывания 0 разрешен. Когда этот бит
установлен, а также установлен бит I регистра состояния, разрешается
прерывание от внешнего вывода. Биты управления запуском прерывания (ISC01 и
ISC00) в регистре управления микроконтроллером (MCUCR) определяют по какому
событию отрабатывается прерывание - по спадающему или нарастающему фронту
или же по уровню. Активность на выводе приводит к возникновению прерываний
даже если вывод сконфигурирован как выход. При возникновении прерывания
выполняется программа, начинающаяся с адреса $001 в памяти программ. (см.
также "Внешние прерывания").
Биты 5..0 - зарезервированы. В AT90S2333/4433 эти биты зарезервированы и
всегда читаются как 0.
ОБЩИЙ РЕГИСТР ФЛАГОВ ПРЕРЫВАНИЙ
GIFR
|0 |0 |Запрос на прерывание генерируется по низкому уровню |
| | |напряжения на входе INT1 |
|0 |1 |Запрос по изменению уровня на входе INT1 |
|1 |0 |Запрос на прерывание по спадающему фронту на входе INT1 |
|1 |1 |Запрос на прерывание по нарастающ. фронту на входе INT1 |
ПРИМЕЧАНИЕ: При изменении битов ISC11/ISC10 прерывание INT1 должно быть
запрещено очисткой соответствующего бита в регистре GIMSK. Иначе прерывание
может возникнуть во время изменения битов.
Таблица 6. Управление срабатыванием прерывания 0.
|ISC01 |ISC0|Описание |
|0 |0 |Запрос на прерывание генерируется по низкому уровню |
| | |напряжения на входе INT0 |
|0 |1 |Запрос по изменению уровня на входе INT0 |
|1 |0 |Запрос на прерывание по спадающему фронту на входе INT0 |
|1 |1 |Запрос на прерывание по нарастающ. фронту на входе INT0 |
ПРИМЕЧАНИЕ: При изменении битов ISC01 и ISC00, прерывания по входу INT0
должны быть запрещены сбросом бита разрешения прерывания в регистре GIMSK.
Иначе прерывание может произойти при изменении значения битов.
РЕЖИМЫ ПОНИЖЕННОГО ЭНЕРГОПОТРЕБЛЕНИЯ.
Для запуска режима пониженного энергопотребления должен быть установлен
(1) бит SE регистра MCUCR, и должна быть исполнена команда SLEEP. Если во
время нахождения в режиме пониженного потребления происходит одно из
разрешенных прерываний, процессор начинает работать, исполняет подпрограмму
обработки прерывания и продолжает выполнение программы с команды следующей
за SLEEP. Содержимое регистрового файла и памяти ввода/вывода не
изменяется. Если в режиме пониженного потребления происходит сброс,
процессор начинает выполнение программы с вектора сброса.
Если для вывода из экономичного режима используется прерывание по
уровню, низкий уровень должен удерживаться дольше времени отработки сброса.
Страницы: 1, 2, 3, 4
|