Рефераты - Афоризмы - Словари
Русские, белорусские и английские сочинения
Русские и белорусские изложения
 

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.  Содержимое  регистрового  файла   и   памяти   ввода/вывода   не
изменяется.  Если  в  режиме  пониженного  потребления   происходит   сброс,
процессор начинает выполнение программы с вектора сброса.
    Если для вывода  из  экономичного  режима  используется  прерывание  по
уровню, низкий уровень должен удерживаться дольше времени отработки  сброса.
Иначе процессор не начнет работу.
                            Режим холостого хода.
    Когда бит SM сброшен (0), команда SLEEP  переводит  процессор  в  режим
холостого  хода  (Idle  mode).  ЦПУ  останавливается,  но  Таймеры/Счетчики,
сторожевой таймер и система прерываний продолжают  работать.  Это  позволяет
процессору  возобновлять  работу  как  от  внешних  прерываний,  так  и   по
переполнению таймеров/счетчиков или по сбросу от сторожевого  таймера.  Если
прерывание от аналогового компаратора не  требуется,  аналоговый  компаратор
может быть  отключен  установкой  бита  ACD  регистра  ACSR.  Это  уменьшает
потребляемую  мощность  в  режиме  холостого  хода.  При  выходе  из  режима
холостого хода процессор запускается без задержки.
Экономичный режим.
    Когда бит SM  установлен  (1),  команда  SLEEP  переводит  процессор  в
экономичный режим (Power Down Mode). В этом режиме  останавливается  внешний
генератор  тактовых   импульсов.   Пользователь   может   разрешить   работу
сторожевого  таймера  в  этом  режиме.  Если  сторожевой  таймер   разрешен,
процессор  выходит  из   экономичного   режима   после   отработки   периода
сторожевого таймера. Если сторожевой таймер запрещен, выход из  экономичного
режима может произойти только по внешнему сбросу, brown-out
сбросу  или внешнему прерыванию по уровню.
    Если для вывода  из  экономичного  режима  используется  прерывание  по
уровню, низкий уровень должен удерживаться на время достаточное для  запуска
процессора. Это увеличивает устойчивость  процессора  к  помехам.  Изменение
уровня дважды проверятся с периодом  генератора  сторожевого  таймера,  если
обе  выборки  сигнала  имеют  необходимый  уровень,  процессор   включается.
Номинальный период сторожевого таймера 1uS при 5В питания и  температуре  25
градусов Цельсия.
    При выходе из экономичного режима, от времени появления условия  выхода
до включения процессора проходит некоторое  время  необходимое  для  запуска
кварцевого  генератора.  Задержка  включения  определяется  теми  же  битами
CKSEL, что и время сброса. Длительность задержки на  включение  приведена  в
таблице 7.
    Если условие включения исчезнет  до  того,  как  процессор  запустится,
например,  низкий  уровень  на  входе  прерывания  продержится  недостаточно
долго, процессор не выйдет из экономичного режима.



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

|CKSEL [2:0] |Время запуска |
|000         |6CK           |
|001         |6CK           |
|010         |16K CK        |
|011         |16K CK        |
|100         |16K CK        |
|101         |1K CK         |
|110         |1K CK         |
|111         |1K CK         |



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

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

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

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


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

                                    TCCR0

|0  |0  |0  |Таймер/счетчик остановлен                        |
|0  |0  |1  |CK                                               |
|0  |1  |0  |CK/8                                             |
|0  |1  |1  |CK/64                                            |
|1  |0  |0  |CK/256                                           |
|1  |0  |1  |CK/1024                                          |
|1  |1  |0  |Внешний вывод T0, нарастающий фронт              |
|1  |1  |1  |Внешний вывод T0, спадающий фронт                |

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



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

                                    TCNT0

|0     |0      |Таймер/счетчик 1 отключен от вывода OC1          |
|0     |1      |Переключение выхода OC1                          |
|1     |0      |Сброс (0) вывода OC1                             |
|1     |1      |Установка (1) вывода OC1                         |

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

|PWM11 |PWM10  |Описание                                         |
|0     |0      |Работа ШИМ запрещена                             |
|0     |1      |8 разрядный ШИМ                                  |
|1     |0      |9 разрядный ШИМ                                  |
|1     |1      |10 разрядный ШИМ                                 |



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

|0  |0  |0  |Таймер/счетчик 1       |
|   |   |   |остановлен             |
|0  |0  |1  |CK                     |
|0  |1  |0  |CK/8                   |
|0  |1  |1  |CK/64                  |
|1  |0  |0  |CK/256                 |
|1  |0  |1  |CK/1024                |
|1  |1  |0  |Спадающий фронт на     |
|   |   |   |выводе T1              |
|1  |1  |1  |Нарастающий фронт на   |
|   |   |   |выводе T1              |

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


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

                                   TCNT1H

|         |7       |6       |5       |4       |3       |2       |1       |0       |
|2Dh(4Dh) |        |        |        |        |        |        |        |        |
|         |MSB     |-       |-       |-       |-       |-       |-       |-       |
|         |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |
|Начальное|0       |0       |0       |0       |0       |0       |0       |0       |
|значение |        |        |        |        |        |        |        |        |

                                   TCNT1L

|         |7       |6       |5       |4       |3       |2       |1       |0       |
|2Ch(4Ch) |        |        |        |        |        |        |        |        |
|         |        |        |        |        |        |        |        |LSB     |
|         |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |
|Начальное|0       |0       |0       |0       |0       |0       |0       |0       |
|значение |        |        |        |        |        |        |        |        |

Это 16-разрядный регистр, содержащий текущее  значение  таймера/счетчика  1.
Чтобы чтение и запись двух байт счетчика происходило синхронно,  для  работы
с ним используется временный регистр (TEMP). Этот вре-
менный регистр также используется при доступе к регистрам OCR1 и ICR1.
Если доступ к регистру с  использованием  TEMP  производится  и  в  основной
программе и в  обработчике  прерывания,  на  время  доступа  к  регистру  из
основной программы прерывания должны быть запрещены.
    - Запись в таймер счетчик  1:  При  записи  старшего  байта  в  TCNT1H,
записываемые данные помещаются в регистр TEMP. Затем,  при  записи  младшего
байта, он вместе с данными из TEMP переписывается в таймер/счетчик 1.  Таким
образом, при записи 16-разрядного значения первым должен  записываться  байт
в TCNT1H.
    - Чтение таймера/счетчика 1: При чтении младшего байта  из  TCNT1L,  он
посылается в процессор, а данные из TCNT1H переписываются  в  регистр  TEMP,
то есть  одновременно  читаются  все  16-разрядов.  При  последующем  чтении
регистра TCNT1H, данные берутся из регистра TEMP. То  есть  при  чтении  16-
разрядного значения счетчика первым должен читаться регистр TCNT1L.
    Таймер/счетчик 1 организован как суммирующий счетчик (в  режиме  ШИМ  -
суммирующий/вычитающий) с возможностью чтения и записи. Если задан  источник
тактовых импульсов для  таймера/счетчика  1,  после  записи  в  него  нового
значения, счет продолжается с следующем за операцией записи
периоде тактовой частоты.

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

                                    OCR1H

|         |7       |6       |5       |4       |3       |2       |1       |0       |
|2Bh(4Bh) |        |        |        |        |        |        |        |        |
|         |MSB     |        |        |        |        |        |        |        |
|         |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |
|Начальное|0       |0       |0       |0       |0       |0       |0       |0       |
|значение |        |        |        |        |        |        |        |        |

                                    OCR1L

|         |7       |6       |5       |4       |3       |2       |1       |0       |
|3Dh(5Dh) |        |        |        |        |        |        |        |        |
|         |        |        |        |        |        |        |        |LSB     |
|         |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |
|Начальное|0       |0       |0       |0       |0       |0       |0       |0       |
|значение |        |        |        |        |        |        |        |        |



Регистр совпадения  16-разрядный регистр, доступный для чтения и записи. В
этом регистре хранятся данные, которые непрерывно сравниваются с текущим
значением таймера/счетчика 1. Действие по совпадению задается регистрами
управления таймером/счетчиком 1 и регистром состояния. Поскольку регистр
OCR1A является 16-разрядным, при записи нового значения в регистр, для того
чтобы оба байта регистра записывались одновременно, используется временный
регистр (TEMP). При записи старшего байта, данные помещаются во временный
регистр, который переписывается в OCR1AH при записи младшего байта в
OCR1AL. Таким образом, для записи в регистр первым должен записываться
старший байт. Регистр TEMP используется при доступе к TCNT1 и ICR1, поэтому
если временный регистр используется в основной программе и в прерываниях,
при доступе к TEMP из основной программы прерывания должны запрещаться.



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

                                    ICR1H

|         |7       |6       |5       |4       |3       |2       |1       |0       |
|25h(45h) |        |        |        |        |        |        |        |        |
|         |MSB     |        |        |        |        |        |        |        |
|         |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |
|Начальное|0       |0       |0       |0       |0       |0       |0       |0       |
|значение |        |        |        |        |        |        |        |        |

                                    ICR1L

|         |7       |6       |5       |4       |3       |2       |1       |0       |
|24h(44h) |        |        |        |        |        |        |        |        |
|         |        |        |        |        |        |        |        |LSB     |
|         |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |
|Начальное|0       |0       |0       |0       |0       |0       |0       |0       |
|значение |        |        |        |        |        |        |        |        |

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

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

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

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

|Разрешение   |Конечное значение   |Частота ШИМ  |
|ШИМ          |таймера             |             |
|8 бит        |00FFh (255)         |Ftc1/510     |
|9 бит        |01FFh (511)         |Ftc1/1022    |
|10 бит       |03FFh (1023)        |Ftc1/2046    |

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

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


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

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

|COM1A1|COM1A0|OCR1A |вывод OC1|
|1     |0     |0000h |низкий   |
|1     |0     |TOP   |высокий  |
|1     |1     |0000h |высокий  |
|1     |1     |TOP   |низкий   |

В режиме ШИМ  флаг  переполнения  таймера  1  (TOV1)  устанавливается  когда
счетчик  изменяет  направление  счета   в   точке   0000h.   Прерывание   по
переполнению  таймера  1  работает  как   при   нормальном   режиме   работы
таймера/счетчика,  т.е.  оно  выполняется,  если  установлен  флаг  TOV1   и
разрешены соответствующие прерывания. То же самое касается флага  совпадения
и прерывания по совпадению.
                              СТОРОЖЕВОЙ ТАЙМЕР
    Сторожевой  таймер  работает  от  отдельного   встроенного   генератора
работающего на частоте 1 MHz (это типовое значение частоты для питания  5В).
Управляя  предварительным  делителем  сторожевого  таймера  можно   задавать
интервал сброса таймера от 16 до 2048 mS. Команда WDR сбрасывает  сторожевой
таймер. Для работы сторожевого таймера можно выбрать одно из  8-ми  значений
частоты, что позволяет в широких пределах изменять время  между  исполнением
команды WDR и сбросом процессора. При отработке периода  работы  сторожевого
таймера, если не поступила команда WDR, AT90S2313  сбрасывается,  выполнение
программы продолжается с вектора сброса.
    Для предотвращения нежелательного отключения сторожевого таймера, для
его запрещения должна выполняться определенная последовательность, которая
описана при рассмотрении регистра WDTCR.

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

                                    WDTCR

|         |7       |6       |5       |4       |3       |2       |1       |0       |
|21h(41h) |        |        |        |        |        |        |        |        |
|         |        |        |        |WDTOE   |WDE     |WDP2    |WDP1    |WDP0    |
|         |R       |R       |R       |R       |R\W     |R\W     |R\W     |R\W     |
|Начальное|0       |0       |0       |0       |0       |0       |0       |0       |
|значение |        |        |        |        |        |        |        |        |

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

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

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

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

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

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


|WDP2 |WDP1 |WDP0 |период      |
|     |     |     |времени     |
|0    |0    |0    |16K циклов  |
|0    |0    |1    |32K циклов  |
|0    |1    |0    |64K циклов  |
|0    |1    |1    |128K циклов |
|1    |0    |0    |256 циклов  |
|1    |0    |1    |512 циклов  |
|1    |1    |0    |1024 циклов |
|1    |1    |1    |2048 циклов |


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

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


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

|         |7       |6       |5       |4       |3       |2       |1       |0       |
|1Eh(3Eh) |        |        |        |        |        |        |        |        |
|         |EEAR7   |EEAR6   |EEAR5   |EEAR4   |EEAR3   |EEAR2   |EEAR1   |EEAR0   |
|         |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |
|Начальное|0       |0       |0       |0       |0       |0       |0       |0       |
|значение |        |        |        |        |        |        |        |        |

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



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

|         |7       |6       |5       |4       |3       |2       |1       |0       |
|1Dh(3Dh) |        |        |        |        |        |        |        |        |
|         |MSB     |        |        |        |        |        |        |LSB     |
|         |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |
|Начальное|0       |0       |0       |0       |0       |0       |0       |0       |
|значение |        |        |        |        |        |        |        |        |

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



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

|         |7       |6       |5       |4       |3       |2       |1       |0       |
|1Ch(3Ch) |        |        |        |        |        |        |        |        |
|         |        |        |        |        |EERIE   |EEMWE   |EEWE    |EERE    |
|         |R       |R       |R       |R       |R       |R\W     |R\W     |R\W     |
|Начальное|0       |0       |0       |0       |0       |0       |0       |0       |
|значение |        |        |        |        |        |        |        |        |

  Биты 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|Ждем обнуления EEWE                                 |
|2|Записываем адрес в EEAR (не обязательно)            |
|3|Записываем данные в EEDR (не обязательно)           |
|4|Устанавливаем в 1 бит EEMWE                         |
|5|Не позже чем через 4 такта после установки EEMWE    |
| |устанавливаем EEWE                                  |

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

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



                       ПОСЛЕДОВАТЕЛЬНЫЙ ИНТЕРФЕЙС SPI

Интерфейс  SPI  позволяет  производить  высокоскоростной  синхронный   обмен
данными между AT90S2333/4433 и периферийными  устройствами  или  несколькими
процессорами. SPI-интерфейс предлагает следующие возможности:

   1. Полностью дуплексная 3-проводная синхронная передача данных;
   2. Работа в режиме ведущего или ведомого;
   3. Передача начиная со старшего или младшего бита;
   4. Четыре программируемые скорости передачи;
   5. Флаг прерывания по окончанию передачи;
   6. Флаг защиты от коллизий при записи
   7. Выход из режима 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

|         |7       |6       |5       |4       |3       |2       |1       |0       |
|0Dh(2Dh) |        |        |        |        |        |        |        |        |
|         |SPIE    |SPE     |DORD    |MSTR    |CPOL    |CPHA    |SPR1    |SPRO0   |
|         |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |
|Начальное|0       |0       |0       |0       |0       |1       |0       |0       |
|значение |        |        |        |        |        |        |        |        |

Бит 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       |
|0   |0   |Fck/4             |1   |0   |Fck/64    |
|0   |1   |Fck/16            |1   |1   |Fck/128   |



                        РЕГИСТР СОСТОЯНИЯ SPI – SPSR


|         |7       |6       |5       |4       |3       |2       |1       |0       |
|0Eh(2Eh) |        |        |        |        |        |        |        |        |
|         |SPIF    |WCOL    |-       |-       |-       |-       |-       |-       |
|         |R       |R       |R       |R       |R       |R       |R       |R       |
|Начальное|0       |0       |0       |0       |0       |1       |0       |0       |
|значение |        |        |        |        |        |        |        |        |

Бит 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

|         |7       |6       |5       |4       |3       |2       |1       |0       |
|0Fh(2Fh) |        |        |        |        |        |        |        |        |
|         |MSB     |        |        |        |        |        |        |LSB     |
|         |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |
|Начальное|0       |0       |0       |0       |0       |0       |0       |0       |
|значение |        |        |        |        |        |        |        |        |

Регистр данных 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

|         |7       |6       |5       |4       |3       |2       |1       |0       |
|0Ch(2Ch) |        |        |        |        |        |        |        |        |
|         |MSB     |        |        |        |        |        |        |LSB     |
|         |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |
|Начальное|0       |0       |0       |0       |0       |1       |0       |0       |
|значение |        |        |        |        |        |        |        |        |

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

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

|         |7       |6       |5       |4       |3       |2       |1       |0       |
|0Bh(2Bh) |        |        |        |        |        |        |        |        |
|         |RXC     |TXC     |UDRE    |FE      |OR      |-       |-       |MPCM    |
|         |R       |R\W     |R       |R\W     |R\W     |R\W     |R\W     |R\W     |
|Начальное|0       |0       |1       |0       |0       |1       |0       |0       |
|значение |        |        |        |        |        |        |        |        |

Бит 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)

|         |7       |6       |5       |4       |3       |2       |1       |0       |
|0Ah(2Ah) |        |        |        |        |        |        |        |        |
|         |RXCIE   |TXCIE   |UDRIE   |RXEN    |TXEN    |CHR9    |RXB8    |TXB8    |
|         |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |R       |W       |
|Начальное|0       |0       |0       |0       |0       |1       |0       |0       |
|значение |        |        |        |        |        |        |        |        |

Бит 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.000|Ош. |Скор.|1.8432|Ош. |Скор.|2.000|Ош.  |
|,    |0    |%   |,    |      |%   |,    |0    |%    |
|бод  |MHz  |    |бод  |MHz   |    |бод  |MHz  |     |
|2400 |25   |0.2 |2400 |47    |0   |2400 |51   |0.2  |
|4800 |12   |0.2 |4800 |23    |0   |4800 |25   |0.2  |
|9600 |6    |7.5 |9600 |11    |0   |9600 |12   |0.2  |
|14400|3    |7.8 |14400|7     |0   |14400|8    |3.7  |
|     |2    |7.8 |     |5     |0   |     |6    |7.5  |
|19200|1    |7.8 |19200|3     |0   |19200|3    |7.8  |
|     |1    |22.9|     |2     |0   |     |2    |7.8  |
|28800|0    |    |28800|1     |0   |28800|1    |7.8  |
|     |0    |7.8 |     |1     |33.0|     |1    |22.9 |
|38400|0    |22.9|38400|0     |    |38400|0    |7.8  |
|     |     |    |     |      |0   |     |     |     |
|57600|     |84.3|57600|      |    |57600|     |     |
|     |     |    |     |      |    |     |     |     |
|76800|     |    |76800|      |    |76800|     |     |
|     |     |    |     |      |    |     |     |     |
|11520|     |    |11520|      |    |11520|     |     |
|0    |     |    |0    |      |    |0    |     |     |
|Скор.|3.276|Ош. |Скор.|3.6864|Ош. |Скор.|4.000|Ош.  |
|,    |8    |%   |,    |      |%   |,    |0    |%    |
|бод  |MHz  |    |бод  |MHz   |    |бод  |MHz  |     |
|2400 |84   |0.4 |2400 |95    |0.0 |2400 |103  |0.2  |
|4800 |42   |0.8 |4800 |47    |0.0 |4800 |51   |0.2  |
|9600 |20   |1.6 |9600 |23    |0.0 |9600 |25   |0.2  |
|14400|13   |1.6 |14400|15    |0.0 |14400|16   |2.1  |
|     |10   |3.1 |     |11    |0.0 |     |12   |0.2  |
|19200|6    |1.6 |19200|7     |0.0 |19200|8    |3.7  |
|     |4    |6.3 |     |5     |0.0 |     |6    |7.5  |
|28800|3    |12.5|28800|3     |0.0 |28800|3    |7.8  |
|     |2    |    |     |2     |0.0 |     |2    |7.8  |
|38400|1    |12.5|38400|1     |0.0 |38400|1    |7.8  |
|     |     |    |     |      |    |     |     |     |
|57600|     |12.5|57600|      |    |57600|     |     |
|     |     |    |     |      |    |     |     |     |
|76800|     |    |76800|      |    |76800|     |     |
|     |     |    |     |      |    |     |     |     |
|11520|     |    |11520|      |    |11520|     |     |
|0    |     |    |0    |      |    |0    |     |     |
|Скор.|7.372|Ош. |Скор.|8.0000|Ош. |Скор.|9.216|Ош.  |
|,    |8    |%   |,    |      |%   |,    |0    |%    |
|бод  |MHz  |    |бод  |MHz   |    |бод  |MHz  |     |
|2400 |191  |0.0 |2400 |207   |0.2 |2400 |239  |0.0  |
|4800 |95   |0.0 |4800 |103   |0.2 |4800 |119  |0.0  |
|9600 |47   |0.0 |9600 |51    |0.2 |9600 |59   |0.0  |
|14400|31   |0.0 |14400|34    |0.8 |14400|39   |0.0  |
|     |23   |0.0 |     |25    |0.2 |     |29   |0.0  |
|19200|15   |0.0 |19200|16    |2.1 |19200|19   |0.0  |
|     |11   |0.0 |     |12    |0.2 |     |14   |0.0  |
|28800|7    |0.0 |28800|8     |3.7 |28800|9    |0.0  |
|     |5    |0.0 |     |6     |7.5 |     |7    |6.7  |
|38400|3    |0.0 |38400|3     |7.8 |38400|4    |0.0  |
|     |     |    |     |      |    |     |     |     |
|57600|     |    |57600|      |    |57600|     |     |
|     |     |    |     |      |    |     |     |     |
|76800|     |    |76800|      |    |76800|     |     |
|     |     |    |     |      |    |     |     |     |
|11520|     |    |11520|      |    |11520|     |     |
|0    |     |    |0    |      |    |0    |     |     |



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

                                   UBRRHI

|         |7       |6       |5       |4       |3       |2       |1       |0       |
|03h(23h) |        |        |        |        |        |        |        |        |
|         |        |        |        |        |MSB     |-       |-       |-       |
|         |R       |R       |R       |R       |R\W     |R\W     |R\W     |R\W     |
|Начальное|0       |0       |0       |0       |0       |0       |0       |0       |
|значение |        |        |        |        |        |        |        |        |

                                    UBRR

|         |7       |6       |5       |4       |3       |2       |1       |0       |
|09h(29h) |        |        |        |        |        |        |        |        |
|         |        |        |        |        |        |        |        |LSB     |
|         |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |
|Начальное|0       |0       |0       |0       |0       |0       |0       |0       |
|значение |        |        |        |        |        |        |        |        |

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



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

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



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

                                    ACSR

|         |7       |6       |5       |4       |3       |2       |1       |0       |
|08h(28h) |        |        |        |        |        |        |        |        |
|         |ACD     |AINBG   |ACO     |ACI     |ACIE    |ACIC    |ACIS1   |ACIS0   |
|         |R\W     |R       |R       |R\W     |R\W     |R\W     |R\W     |R\W     |
|Начальное|0       |0       |0       |0       |0       |1       |0       |0       |
|значение |        |        |        |        |        |        |        |        |


Бит  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

|ACIS|ACIS|Описание                                  |
|1   |0   |                                          |
|0   |0   |Прерывание от компаратора по переключению |
|    |    |выхода                                    |
|0   |1   |Зарезервировано                           |
|1   |0   |Прерывание от компаратора по спадающему   |
|    |    |фронту выхода                             |
|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

|         |7       |6       |5       |4       |3       |2       |1       |0       |
|07h(27h) |        |        |        |        |        |        |        |        |
|         |-       |ADCBG   |-       |-       |-       |MUX2    |MUX1    |MUX0    |
|         |R\W     |R       |R       |R\W     |R\W     |R\W     |R\W     |R\W     |
|Начальное|0       |0       |0       |0       |0       |1       |0       |0       |
|значение |        |        |        |        |        |        |        |        |

Бит 7 - зарезервирован; в  AT90S2333/4433  этот  бит  зарезервирован  и  при
записи должен устанавливаться в 0.

Бит 6 - ADCBG - выбор опорного напряжения АЦП - при установке этого бита  на
вход АЦП подается фиксированное напряжение 1.22+-0.05В, когда  бит  сброшен,
вход АЦП подключается к одному из внешних входов  согласно  установке  битов
MUX2..MUX0.

Биты 5..3 - зарезервированы. В AT90S2333/4433 эти биты зарезервированы и
при записи должны устанавливаться в 0.

Биты 2..0 - MUX2..MUX0  -  выбор  аналогового  входа.  Содержимое  этих  бит
определяет какой из аналоговых входов подключен на вход АЦП.



                 РЕГИСТР УПРАВЛЕНИЯ И СОСТОЯНИЯ АЦП – ADCSR

                                    ADCSR

|         |7       |6       |5       |4       |3       |2       |1       |0       |
|06h(26h) |        |        |        |        |        |        |        |        |
|         |ADEN    |ADSC    |ADFR    |ADIF    |ADIE    |ADPS2   |ADPS1   |ADPS0   |
|         |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |
|Начальное|0       |0       |0       |0       |0       |1       |0       |0       |
|значение |        |        |        |        |        |        |        |        |

Бит 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. Выбор коэффициента деления АЦП

|ADPS|ADPS|ADPS|Коэф.деле|ADPS2|ADPS|ADPS0|Коэф.делени|
|2   |1   |0   |ния      |     |1   |     |я          |
|0   |0   |0   |2        |1    |0   |0    |16         |
|0   |0   |1   |2        |1    |0   |1    |32         |
|0   |1   |0   |4        |1    |1   |0    |64         |
|0   |1   |1   |8        |1    |1   |1    |128        |



                      РЕГИСТР ДАННЫХ АЦП - ADCL И ADCH

                                    ADCH

|         |7       |6       |5       |4       |3       |2       |1       |0       |
|05h(25h) |        |        |        |        |        |        |        |        |
|         |-       |-       |-       |-       |-       |MSB     |        |        |
|         |R       |R       |R       |R       |R       |R       |R       |R       |
|Начальное|0       |0       |0       |0       |0       |0       |0       |0       |
|значение |        |        |        |        |        |        |        |        |

                                    ADCL

|         |7       |6       |5       |4       |3       |2       |1       |0       |
|04h(24h) |        |        |        |        |        |        |        |        |
|         |        |        |        |        |        |        |        |LSB     |
|         |R       |R       |R       |R       |R       |R       |R       |R       |
|Начальное|0       |0       |0       |0       |0       |1       |0       |0       |
|значение |        |        |        |        |        |        |        |        |

                       Сканирование аналоговых каналов

    Поскольку смена аналоговых каналов всегда происходит  после  завершения
преобразования, для переключения каналов преобразователя можно  использовать
режим  непрерывного  преобразования.   Обычно   для   переключения   каналов
используется прерывание по завершению  преобразования.  Однако  пользователь
должен принимать во внимание следующие факторы:
    -  в  режиме   непрерывного   преобразования,   цикл   выборки-хранения
следующего преобразования начинается  через  полтора  тактовых  цикла  после
того как результат текущего преобразования  записывается  в  регистр  данных
АЦП и устанавливается флаг 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 могут поглощать ток до  20  mA  и  непосредственно  управлять
светодиодными индикаторами. Если выводы 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

|         |-       |-       |DDB5    |        |        |        |        |DDB0    |
|         |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |
|Начальное|0       |0       |0       |0       |0       |0       |0       |0       |
|значение |        |        |        |        |        |        |        |        |

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

|         |7       |6       |5       |4       |3       |2       |1       |0       |
|16h(36h) |        |        |        |        |        |        |        |        |
|         |-       |-       |PINB5   |        |        |        |        |PINBO   |
|         |R       |R       |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |
|Начальное|0       |0       |Z       |Z       |Z       |Z       |Z       |Z       |
|значение |        |        |        |        |        |        |        |        |


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

               ПОРТ B, КАК ПОРТ ВВОДА/ВЫВОДА ОБЩЕГО НАЗНАЧЕНИЯ

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

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

|DDBn|PORTB|Вх/Вых|Подт.ре|Комментарий                        |
|    |n    |      |зист   |                                   |
|0   |0    |Вход  |Нет    |                                   |
|0   |1    |Вход  |Да     |PBn источник тока Iil, если извне  |
|    |     |      |       |соединен с землей                  |
|1   |0    |Выход |Нет    |Выход установлен в 0               |
|1   |1    |Выход |Нет    |Выход установлен в 1               |


                          n = 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


|         |7       |6       |5       |4       |3       |2       |1       |0       |
|15h(35h) |        |        |        |        |        |        |        |        |
|         |-       |-       |PORTC5  |        |        |        |        |PORTC0  |
|         |R       |R       |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |
|Начальное|0       |0       |0       |0       |0       |0       |0       |0       |
|значение |        |        |        |        |        |        |        |        |

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

|         |7       |6       |5       |4       |3       |2       |1       |0       |
|14h(34h) |        |        |        |        |        |        |        |        |
|         |-       |-       |DDC5    |        |        |        |        |DDC0    |
|         |R       |R       |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |
|Начальное|0       |0       |0       |0       |0       |0       |0       |0       |
|значение |        |        |        |        |        |        |        |        |

                               ВЫВОДЫ ПОРТА B
                                    PINC

|         |7       |6       |5       |4       |3       |2       |1       |0       |
|13h(33h) |        |        |        |        |        |        |        |        |
|         |-       |-       |PINC5   |        |        |        |        |PINC0   |
|         |R       |R       |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |
|Начальное|0       |0       |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\O|Подтягивающие      |описание                           |
|     |        |ut  |резисторы          |                                   |
|0    |0       |0   |Нет                |Третье состояние                   |
|0    |1       |1   |Да                 |PBn источник тока Iil, если извне  |
|     |        |    |                   |соединен с землей                  |
|1    |0       |0   |Нет                |Выход установлен в 0               |
|1    |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


|         |7       |6       |5       |4       |3       |2       |1       |0       |
|15h(35h) |        |        |        |        |        |        |        |        |
|         |-       |-       |PORTD5  |        |        |        |        |PORTD0  |
|         |R       |R       |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |
|Начальное|0       |0       |0       |0       |0       |0       |0       |0       |
|значение |        |        |        |        |        |        |        |        |

|         |7       |6       |5       |4       |3       |2       |1       |0       |
|14h(34h) |        |        |        |        |        |        |        |        |
|         |-       |-       |DDD5    |        |        |        |        |DDD0    |
|         |R       |R       |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |
|Начальное|0       |0       |0       |0       |0       |0       |0       |0       |
|значение |        |        |        |        |        |        |        |        |

|         |7       |6       |5       |4       |3       |2       |1       |0       |
|13h(33h) |        |        |        |        |        |        |        |        |
|         |-       |-       |PIND5   |        |        |        |        |PIND0   |
|         |R       |R       |R\W     |R\W     |R\W     |R\W     |R\W     |R\W     |
|Начальное|0       |0       |Z       |Z       |Z       |Z       |Z       |Z       |
|значение |        |        |        |        |        |        |        |        |

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

               ПОРТ D, КАК ПОРТ ВВОДА/ВЫВОДА ОБЩЕГО НАЗНАЧЕНИЯ

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

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

|DDDn |PORTDn|In\Ou|Подтягивающие      |Описание                            |
|     |      |t    |резисторы          |                                    |
|0    |0     |Вход |Нет                |Третье состояние                    |
|0    |1     |Вход |Да                 |PDn источник тока Iil, если извне   |
|     |      |     |                   |соединен с землей                   |
|1    |0     |Выход|Нет                |Выход установлен в 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|описание                                              |
|м   |   |   |                                                      |
|1   |1  |1  |защита не установлена                                 |
|2   |0  |1  |дальнейшее программирование флэш памяти и EEPROM      |
|    |   |   |запрещено                                             |
|3   |0  |0  |как режим 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
|XA|XA|Действие при подаче импульса XTAL1                      |
|1 |0 |                                                        |
|0 |0 |Загрузка адреса памяти программ или данных              |
|  |  |(старший/младший байт задается выводом BS               |
|0 |1 |Загрузка данных (старший/младший байт для флэш памяти   |
|  |  |задается выводом BS)                                    |
|1 |0 |Загрузка команды                                        |
|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)                    |
|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 - )
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  |Задерж.между установ. данных и       |67  |    |   |nS|
|       |сигн.упр. и высоким уровнем XTAL1    |    |    |   |  |
|tXHXL  |Ширина импульса XTAL                 |67  |    |   |nS|
|tXLDH  |Удержание данных и сигналов          |67  |    |   |nS|
|       |управления                           |    |    |   |  |
|       |После установки XTAL1 = 1            |    |    |   |  |
|tBVVL  |Удержание BS после установки |0      |67  |    |   |nS|
|       |WR                           |       |    |    |   |  |
|tWLWH  |Ширина импульса WR                   |67  |    |   |nS|
|tWHRL  |Задержка между |1 и       |0 |)    |    |20  |   |nS|
|       |WR             |RDY/BSY   |( |     |    |    |   |  |
|tXLOL  |Задержка между |0 и  |0             |67  |    |   |nS|
|       |XL             |OE   |              |    |    |   |  |
|tOLDV  |Задержка между |0 и установкой      |    |20  |   |nS|
|       |XL             |данных              |    |    |   |  |
|tWLRH  |Задержка между |0 и       |1 |)    |0.5 |0.7 |0.9|mS|
|       |WR             |RDY/BSY   |( |     |    |    |   |  |

 Примечание: если 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    |0101   |xxxx   |xxxx    |Разрешен.послед.                |
|рограммир.      |1100    |0011   |xxxx   |xxxx    |программирования после установки|
|                |        |       |       |        |RESET в '0'                     |
|Стирание        |1010    |100x   |xxxx   |xxxx    |Стирание памяти прогр. и данных |
|микросх.        |1100    |xxxx   |xxxx   |xxxx    |                                |
|Чтение памяти   |0010    |0000   |bbbb   |oooo    |Читать старший или младший байт |
|прогр.          |H000    |aaaa   |bbbb   |oooo    |o по адресу ab                  |
|Запись памяти   |0100    |0000   |bbbb   |iiii    |Запись старш. или младш. байта i|
|прогр.          |H000    |aaaa   |bbbb   |iiii    |в память прогр по адресу ab     |
|Чтение памяти   |1010    |0000   |bbbb   |oooo    |Читать данные o по адресу ab    |
|данных          |0000    |000a   |bbbb   |oooo    |                                |
|Запись памяти   |1100    |0000   |bbbb   |iiii    |Запись данных i по адресу ab    |
|данных          |0000    |000a   |bbbb   |iiii    |                                |
|Чтение битов    |0101    |xxxx   |xxxx   |xxxx    |Биты 2 и 1 равны 0 – блокировка |
|блокир.         |1000    |xxxx   |xxxx   |x21x    |1 - нет блокир.                 |
|Запись битов    |1010    |111x   |xxxx   |xxxx    |Запись битов бло кировки.       |
|блокир.         |1100    |x21x   |xxxx   |xxxx    |Установить 1,2=0 для блокировки |
|                |        |       |       |        |памяти                          |
|Читать код      |0011    |xxxx   |xxxx   |oooo    |Читать код устройства o с адреса|
|устройства      |0000    |xxxx   |xxbb   |oooo    |b                               |
|Запись          |1010    |11_1765|xxxx   |xxxx    |Запись битов-перемычек.         |
|битов-перемыч   |1100    |43     |xxxx   |xxxx    |Установить 3,4,5,6,7 в '0' чтобы|
|                |        |       |       |        |запрограммировать               |
|Чтение          |1010    |xxxx   |xxxx   |xx87    |Чтение битов-перемычек.         |
|битов-перемыч   |0000    |xxxx   |xxxx   |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    |  |
|Частота           |0     |4       |0     |8      |MH|
|                  |      |        |      |       |z |
|Период            |250   |        |125   |       |nS|
|Длительность '1'  |115   |        |58.3  |       |nS|
|Длительность '0'  |115   |        |58.3  |       |nS|
|Длительность      |      |10      |      |4.15   |nS|
|фронта            |      |        |      |       |  |



                              Список регистров.
|36h (56h)   |              |ЗАРЕЗЕРВИРОВАН                                        |
|31h (51h)   |              |ЗАРЕЗЕРВИРОВАН                                        |
|30h (50h)   |              |ЗАРЕЗЕРВИРОВАН                                        |
|2Сh (4Сh)   |TCNT1L        |Таймер/счетчик1 младший байт                          |
|2Bh (4Bh)   |OCR1AH        |Таймер/счетчик1 регистр сравнения старший байт        |
|2Ah (4Ah)   |OCR1AL        |Таймер/счетчик1 регистр сравнения младший байт        |
|-           |              |ЗАРЕЗЕРВИРОВАН                                        |
|27h (47h)   |ICR1H         |Таймер/счетчик1 регистр захвата старший байт          |
|26h (46h)   |ICR1L         |Таймер/счетчик1 регистр захвата младший байт          |
|-           |              |ЗАРЕЗЕРВИРОВАН                                        |
|1Fh (3Fh)   |              |ЗАРЕЗЕРВИРОВАН                                        |
|1Eh (3Eh)   |EEAR          |Регистр адреса энергонезависимой памяти               |
|1Dh (3Dh)   |EEDR          |Регистр данных энергонезависимой памяти               |
|-           |-             |ЗАРЕЗЕРВИРОВАН                                        |
|00h (20h)   |-             |ЗАРЕЗЕРВИРОВАН                                        |

Примечание: Для совместимости с другими устройствами, зарезервированные
биты при записи необходимо устанавливать в '0'. Данные в зарезервированные
ячейки памяти записывать нельзя.

                                Набор команд

|Мнемоник|Операнд|Описание                      |Действие             |Флаги  |Цкл|
|а       |ы      |                              |                     |       |   |
|Арифметические команды                                                             |
|ADD     |Rd, Rr |Сложить два регистра          |Rd
ref.by 2006—2022
contextus@mail.ru