Особенности:• Используется AVR ® RISC-Архитектура
• AVR - Быстродействующая и малопотребляющая RISC Архитектура
- 120 Мощных Команд - большинство выполняется за 1 так ЦПУ- 32 x 8 регистра общего назначения (32 регистра 8-ми разрядных)- Полностью Статическая Операция
- Производительность до 20 МИЛЛИОНОВ КОМАНД В СЕКУНДУ
на 20 МГЦ ЦПУ• Энергонезависимая память данных и программ
- 2 КБ внутрисистемной энергонезависимой ФЛЭШ-памяти программ
- Выносливость ФЛЭШ-памяти 10 000 циклов записи/стирания
- 128-байтовая встроенная программируемая EEPROM память
• Выносливость EEPROM: 100 000 циклов записи/стирания
- 128-байтовая внутренняя SRAMпамять
- Программирование защитной блокировки для ФЛЭШ-прграмм и
EEPROM-данных
• Периферийные Особенности:- Один 8-битный Таймер/Счетчик с Отдельным Предделителем
частоты и Режимом сравнения
- Один 16-битный Таймер/Счетчик с Отдельным Предделителем
частоты и Режимом сравнения
- Четыре ШИМ Канала
- Встроенный в чип Аналоговый Компаратор
- Программируемый Сторожевой Таймер со встроенным
Генератором
- USI - Универсальный Последовательный Интерфейс
- Полно-Дуплексный интерфейс - USART• Дополнительные Особенности Микроконтроллера:- debugWIRE-шина для Отладки На-чипе- Внутрисистемное Программирование через SPI Порт- Внешние и Внутренние Источники Прерывания
- Холостой режим (Low-power Idle отключает только ЦПУ),экономичный режим (Power-down отключает только генератор),и Режим Сна (Standby Modes оставляет включенным только Генератор)- Усовершенствованная схема сброса при включении питания
-Программируемая Схема Защиты от пониженного напряжения
питания Brown-out Detector (BOD)- Внутренний Калиброванный Генератор
• Порты ввода/ вывода и Корпуса:- 18 Программируемых линий ввода - вывода- PDIP с 20 ножками, SOIC с 20 ножками, и MLF с 32 ножками
• Напряжения питания:- 1.8 - 5.5V (ATtiny2313V)- 2.7 - 5.5V (ATtiny2313)• Таблица Производительности:- ATtiny2313V: 0 - 4 МГЦ 1.8 - 5.5V, 0 - 10 МГЦ 2.7 - 5.5V
- ATtiny2313: 0 - 10 МГЦ 2.7 - 5.5V, 0 - 20 МГЦ 4.5 - 5.5V• Типичное Потребление Энергии:- Активный Режим:1 МГЦ, 1.8V: 230 µA
32 kHz, 1.8V: 20 µA (при включенном генераторе)Экономичный режим:<0.1 µA в 1.8V

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

1

Конфигурация Выводов

Рисунок 1 – Цоколевка ATtiny2313 в двух типах корпуса

Краткий обзор
ATtiny2313 – малопотребляющий CMOS -8-битный микроконтроллер, основанный на AVRусовершенствованной RISC-архитектуре. Выполняя мощные команды за один такт ЦПУ, ATtiny2313 достигает
производительности, приближающейся к 1 МИЛЛИОНУ КОМАНД В СЕКУНДУ на 1МГЦ и позволяет
системному проектировщику оптимизировать потребление мощности в компромиссе со скоростью обработки.
Прибор изготовлен, используя технологию Atmel долговременной памяти с высокой плотностью.
Встроенная в чип внутрисистемная программируемая Флэш-память позволяет перепрограммировать память
программ через SPI-(serial peripheral interface)последовательный интерфейс или через обычный программатор
постоянной памяти. Объединяя 8-битный RISC ЦПУ со встроенной Самопрограммируемой Флэш-памятью наодной полупроводниковой Интегральной Схеме контроллер ATtiny2313 является мощным устройством
обеспечивающим высокую гибкостьи дешевое решение для многих внедряемых приложений.
ATtiny2313 поддерживается программными инструментальными средствами разработки, включая: Сикомпиляторы, Макроассемблеры, Программные Отладчик/Симуляторы, Внутрисхемные Эмуляторы и Оценочные
Комплекты.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

2

Рисунок 2 – Блок-Диаграма ATtiny2313 (внутренняя архитектура)г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

3

AVR ядро комбинирует богатый набор инструкций с 32 регистрами общего назначения. Все 32 регистра
непосредственно связаны с Арифметико-Логическим Устройством (ALU), что позволяет двум независимым
регистрам обращаться к одной инструкции и выполнять ее за 1цикл ЦПУ. RISC архитектура более эффективна покоду достигая прироста производительности в десять раз по сравнению с обычными CISC-микроконтроллерами.
ATtiny2313 имеет следующие особенности: 2кБ встроенной программируемой ФЛЭШ-памяти программ,128 байт EEPROM, 128 байт SRAM, 18 общих линий ввода - вывода общего назначения, 32 регистра общего
назначения, однопроводной Интерфейс для Отладки На-чипе, два настраиваемых Таймер/Счетчика с режимами
сравнения, внутренние и внешние прерывания, программируемый последовательный интерфейс -USART,Универсальный Последовательный Интерфейс USI с Датчиком Начального Состояния, программируемый
Сторожевой таймер с внутренним Генератором и три программно выбираемых режима низкого потребления
энергии.
Холостой Режим (Idle mode) останавливает ЦПУ, но позволяет памяти SRAM, Таймерам/Счетчикам иСистеме прерывания продолжать функционировать.
Режим Энергосбережения (Power Down mode) сохраняет содержание регистров, но останавливает
Генератор, запрещает все другие функции контроллера до следующего прерывания или аппаратного сброса.
Режим сна (Standby mode) оставляет включенным только Генератор, пока остальные функции контроллера
выключены, что позволяет осуществлять экономию энергии и одновременно с этим быстро запускать контроллер вработу.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

4

Описание Выводов
VCC«Цифровое» напряжение питания

GND«Земля»Port A (PA2..PA0) Порт А это 3-битный двунаправленный порт ввода/вывода с внутренними

Port B (PB7..PB0)

Port D (PD6..PD0)

RESET

XTAL1

XTAL2

подтягивающими(нагрузочными) резисторами (выбираемыми для каждого вывода).
Выходные буферы Порта А имеют одинаковые характеристики с высокой нагрузочной
способностью. Если выводы Порта А замыкаются на землю и включены нагрузочные
резисторы то выводы являются источниками тока. Сразу после сброса контроллера
выводы Порта А находятся в ВысокоИмпедансном состоянии (третьем состоянии)даже, если генератор не запущен. Порт А также обслуживает функции различных
специальных елементов контроллера ATtiny2313 представленных на стр52.
Порт А это 8-битный двунаправленный порт ввода/вывода с внутренними
подтягивающими(нагрузочными) резисторами (выбираемыми для каждого вывода).
Выходные буферы Порта В имеют одинаковые характеристики с высокой нагрузочной
способностью. Если выводы Порта В замыкаются на землю и включены нагрузочные
резисторы то выводы являются источниками тока. Сразу после сброса контроллера
выводы Порта В находятся в ВысокоИмпедансном состоянии (третьем состоянии)даже, если генератор не запущен. Порт В также обслуживает функции различных
специальных элементов контроллера ATtiny2313 представленных на стр52.
Порт А это 7-битный двунаправленный порт ввода/вывода с внутренними
подтягивающими(нагрузочными) резисторами (выбираемыми для каждого вывода).
Выходные буферы Порта D имеют одинаковые характеристики с высокой нагрузочной
способностью. Если выводы Порта D замыкаются на землю и включены нагрузочные
резисторы то выводы являются источниками тока. Сразу после сброса контроллера
выводы Порта D находятся в ВысокоИмпедансном состоянии (третьем состоянии)даже, если генератор не запущен. Порт D также обслуживает функции различных
специальных элементов контроллера ATtiny2313 представленных на стр52.
Вывод сброса контроллера. Низкий уровень на этом выводе длящийся дольше чемминимальная длительность импульса генерирует сброс, даже если ЦПУ не запущен.
Минимальная длительность импульса приводится в Таблице 15 на странице 33. Более
короткие импульсы не генерируют сброс в большинстве случаев. Ввод Сброса имеет
дополнительные, т.е. альтернативные функции: PA2 и dW.
Этот Вывод является входом Инвертирующего Усилителя и входом для внутренней
схемы вырвбатывающей тактовый сигал. XTAL1 имеет альтернативную функцию PA0.
Этот вывод является выходом Инвертирующего Усилителя Генератора.
XTAL2 имеет альтернативную функцию - PA1.

О примерах программного кодаЭта документация содержит простые примеры кода, которые кратко показывают , как использовать
разные части контроллера. Эти примеры предполагают, что специальные заголовочные файлы будут включены
перед компиляцией проекта. Имейте в виду, что не все производители/распространители С-компиляторов
включают в заголовочные файлы описания битов, а обработчики прерываний могут быть по-разному реализованыв разных С-компиляторах.За более подробной информацией по этому поводу обращайтесь к документации накомпилятор.

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

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

5

Ядро ЦПУ AVRВведение
Здесь в общем виде обсуждается архитектура AVR-ядра. Главная функция ядра ЦПУ -гарантировать
правильное выполнение программ. По этой причине ЦПУ должен быть в состоянии обращаться к памяти,выполнять вычисления, контролировать периферию и обрабатывать прерывания.

Обзор Архитектуры

Рисунок 3 – Блок-Диаграмма AVR-архитектуры
Чтобы максимально улучшить характеристики, в AVR используется гарвардская архитектура - сраздельной памятью и шинами программ и данных. Инструкции в памяти программ выполнены с одноуровневой
конвейерной обработкой данных. Пока одна инструкция выполняется следующая инструкция уже предвыбрана изпамяти программ. Такая концепция позволяет инструкциям выполняться за каждый такт генератора. Память
программ представляет собой встроенную ФЛЭШ-память с возвможносью перепрограммирования.
Регистровый файл быстрого доступа содержит 32 8-битных регистра общего назначения с временем доступа заодин такт. Это позволяет устройстсву АЛУ выполнять операции за один такт системной частоты. В типичной
операции арифметико-логического устройства, два операнда выводятся от Регистрового файла,г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

6

операция выполняется, а результат сохраняется обратно в Регистровый Файл – и все это за один такт.
Шесть из 32 регистров могут использоваться как три 16-разрядных косвенных регистра указателя адресадля Пространства Данных - позволяющих эффективную адресацию. Один из иэтих указателей адреса может бытьиспользован как указатель адреса для просмотра таблиц во ФЛЭШ-памяти программ. Эта функция добавлена 16битным регистрам X,Y и Z, описанным дальше.
АЛУ поддерживает арифметические и логические операции между регистрами и между константами ирегистрами. Операция с одним регистром так же может быть выполнена в АЛУ. После арифметической операции
Регистр Статуса обновляется для отображения информации о результате вычисления.
Процесс выполнения программы обеспечивает Условный и Безусловный переход а также вызов
Инструкций способных прямо адресоваться по всему адресному пространству. Большинство AVR-инструкций
имеют 16-битный формат Слова. Каждый адрес памяти программ содержит 16- или 32-битную инструкцию.
Во время выполнения прерываний и вызовов подпрограмм адрес возврата Счетчика Программ сохраняетсяв Стеке. Стек фактически расположен в пространстве данных ОЗУ и следовательно ограничен только размерами
местной ОЗУ. Все программы Пользователя должны инициализировать(калибровать/определять/устанавливать)SP-Указатель Стека в подпрограмме обработки Сброса контроллера до! вызова подпрограмм и выполнения
прерываний. Указатель Стека доступен для чтения/записи в области ввода/вывода. Данные ОЗУ могут быть легко
доступны через Пять различных режимов адресации поддерживаемых в AVR архитектуре.
Пространство памяти в AVR архитектуре распределено линейно и поделено на различные области
использования.
Гибконастраиваемый Модуль Прерываний имеет регистр управления расположенный в области памяти ииспользуется в комбинации с Флагом Глобального Прерывания, расположенном в Регистре Статуса. Всепрерывания имеют собственный Вектор Прерывания в Таблице Прерываний. Каждое прерывание имеет приоритетв соответствии с таблицей прерываний. Самый первый по счету вектор прерываний в Талице Прерываний,имеющий самый младший адрес, имеет наивысший приоритет.
Область памяти ввода/вывода содержит 64 адреса вывполняющих функцию Регистров Управления дляпериферийных устройств/функций ЦПУ и др. функций ввода/вывода. Область памяти ввода/вывода может бытьадресована непосредственно или как Область Данных размещенная последовательно в Регситровом Файле отадреса 0х20 до 0х5F.

Арифметикологичесое Устройство
Высококачественное Арифметикологическое Устройство (АЛУ) AVR работает непосредственно 32Регистрами Общего Назначения. АЛУ выполняет операции между различными регистрами за время одного! такта.
АЛУ-операции поделены на 3 основные категории: 1-арифметические, 2-логические и 3-побитовые функции.
Реализация архитектуры ,также, обеспечивает возможность умножение со знаковыми и беззнаковыми числами идробным форматом чисел. Смотри "Раздел Инструкций" там более детального описания.

Регистр Статуса
Регистр Статуса содержит информацию о только-что выполненной арифметической инструкции. Этаинформация может быть использована для того чтобы изменить ход программы выполнив условную операцию.
Обратите внимание, что Регистр Статуса обновляется после каждой инструкции АЛУ, как и определено вСправочнике по Набору Команд. Это во многих случаях освобождает от надобности использования
"узкоопределенных" инструкций сравнения , в результате получается эффективный по скорости выполнения икомпактный по объему код программы.
При возникновении прерывания и при переходе к выполнению подпрограммы обработки прерывания
Регистр Статуса должен быть предварительно сохранен куда-либо (чтобы не произошло изменение егосодержимого в подпрограмме обработки прерывания), а при выходе из прерывания должен быть восстановлен
обратно, если, конечно, его содержимое имеет значение.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

7

Регистр Статуса «SREG» AVR определен следующим образом:• Бит №7 - I: Глобальное Разрешение Прерываний
Бит (флаг) "Глобального Разрешения Прерываний" должен быть установлен для того чтобы разрешить
переход к обработке прерываний. Контроль над отдельными прерываниями выполняется в одельных специальных
регистрах. Если Бит №7 очищен -установлен в 0- то все преывания будут запрещены независимо отиндивидуальных настроек каждого из них. Бит №7 очищается аппаратно при наступлении прерывания иустанавливается в 1 командой RETI- для выхода из прерывания, чтобы разрешить последующие прерывания. Бит№7 может так же быть установлен или очищен программно по команде SEI и CLI соответственно, как описано вСправочнике по Набору Команд.
• Бит №6 - T:Бит Загрузки и Восстановления (Буферный Бит)Такие инструкции Буферного Бита как BLD(загрузка бита) и BST(восстановление бита) используют Бит№6 в качестве буфера для хранения бита. Какой-нибудь бит из любого регистра может быть скопирован в Бит №6командой BST и восстановлен оттуда командой BLD.
• Бит №5 - H: Флаг Переноса Половины байта
Флаг Переноса Половины H указывает на то что осуществлен перенос младшей половины байта,используется в некоторых арифметических действиях. Перенос Половины используется в BCD арифметике. См.
“Описание Набора Инструкции” для детальной информации.
• Бит №4 - S: Бит Знака, S=N xor V
S-Бит всегда равен операции "Исключающее ИЛИ" между флагами N и V.
• Бит №3 - V: Флаг Дополнения До ДвухЭтот бит подерживает арифметику с дополнением до двух.
• Бит №2 - N: Отрицательный ФлагУстановка этого флага говорит об отрицательном результате арифметической операции или логической.
• Бит №1 – Z: Флаг НуляЭтот флага говорит, что в результате арифметической операции или логической образовался ноль.
• Бит №0 - С: Флаг Переноса
Установка этого флага говорит о переносе в результате арифметической операции или логической.

Регистровый ФайлРегистровый Файл был оптимизирован специальо для RISC-инструкций AVR, что позволяет достигать
заданных характеристик и гибкости. Следующие схемы ввода/вывода поддерживаются регистровым файлом:- Один 8-битный выходной операнд и один 8-битный результирующий вход- Два 8-битных выходных операнда и один 8-битный результирующий вход- Два 8-битных выходных операнда и один 16-битный результирующий вход- Один 16-битный выходной операнд и один 16-битный результирующий входРисунок 4 показывает структуру 32 Регистров Общего Назначения.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

8

Рисунок 4 - Структура 32 Регистров Общего Назначения
Большинство инструкций регистрового файла имеют прямой доступ ко всем регистрам и большинство изних являются однотактовыми.
Как показано на рисунке 4, каждый регистр обозначен как адрес в памяти данных, отображены ониначиная с первых 32 адресов Пространства Памяти. При том, что они физически не расположены в ОЗУ-памяти,память организована так, что обеспечивается большая гибкость доступа к регистрам, X- и Y- и Z-регистрыуказатели могут указывать на индекс любого регистра в файле памяти.

X- и Y- и Z-регистры
Регистры от R26 до R31 имеют несколько дополнительных функций помимо общих для всех остальных
Регистров Общего Назначения. Эти регистры являются 16-битными указателями адреса для косвенной адресации впространстве памяти данных. Три косвенных адресных регистра X,Y и Z определены так, как описано нарисунке5:Рисунок 5 - Три косвенных адресных регистра X,Y и ZВ различных режимах адресации эти регистры адреса имеют функции как: фиксированное смещение,автоматическое возрастание{инкремент на 1}, и автоматический декремент на1. Смотри Справочник по Набору
Инструкций для более подробной информации.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

9

Указатель Стека (счетчик программ)"Стек" главным образом используется для запоминания(хранения) временных данных, для хранения
локальных переменных и хранения адресов возврата после прерываний и вызовов подпрограмм. Регистр Указатель
Стека всегда указывает на вершину (TOP) Стека. Обратите внимание, что Стек реализован нарастающим отнаивысшего адреса (ячейки) памяти до самого младшего адреса. Это подразумевает, что команда PUSH (положитьв Стек) уменьшает адрес Указателя Стека.
Указатель Стека указывает на участок данных ОЗУ, где и реализуется Стек подпрограмм и прерываний.
Пространство Стека должно быть определено в памяти ОЗУ (обычно это конечный адрес памяти ОЗУ, если подСтек надо разрешить использовать всю память ОЗУ) программно пользователем прежде, чем произойдет любое
выполнение вызова подпрограммы или будут разрешены прерывания. Указатель Стека должен быть установлен наадрес старше, чем 0х60. Указатель Стека уменьшается на единицу, когда данные кладутся в Стек по команде PUSHили уменьшается на два, когда адрес возврата записывается в Стек вызовом подпрограммы или прерыванием.
Указатель Стека увеличивается на единицу, когда данные извлекаются из Стека по команде РОР или увеличиваетсяна два, когда происходит возврат из подпрограммы по команде RET или выход из прерывания по команде RETI.
Указатель Стека AVR реализован как два 8-битных регистра в пространстве ввода/вывода. Число
исрользуемых битов зависит от реализации (количества памяти ОЗУ). Обратите внимание, что пространство
данных (ОЗУ) в некоторых реализациях архитектуры AVR настолько мало, что можно обойтись лишь одним
регистром SPL, который является младшим полубайтом регистра-указателя Стека SP. В этом случае наличие
регстра SPH просто не нужно. На следующей иллюстрации показан Регистр Указателя Стека для ATtiny2313:

Иллюстрация - Регистр Указателя Стека для ATtiny2313

Время выполнения инструкцийВ этой секции в общем описывается время выполнения инструкций. ЦПУ AVR -контроллера тактируетсяот специальной схемы генератора тактовых импульсов расположенной на чипе. Внутреннее деление тактовой
частоты в этом случае не используется.
Рисунок 6 демонстрирует параллельную выборку инструкций и дальнейшее их выполнение, реализованноепо гарвардской архитектуре, а также, демонстрирует концепцию быстрого доступа к Регистровому Файлу. Этаконвейерная концепция архитектуры позволяет достигать производительности до 1 миллиона инструкций на 1МГцсистемной тактовой синхронизации, а также, демонстрирует уникальные показатели по функциональности истоимости прибора, по быстродействию и потреблению мощности:Рисунок 6 – Параллельная выборка инструкций и их дальнейшее выполнение в гарвардской архитектуре AVRРисунок 7 демонстрирует концепцию (понятие) о таймингах Регистрового Файла. АЛУ-операции,используя два регистровых операнда, выполняются в течении одного периода тактовой частоты, а результат
операции запоминается в регистре назначения.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

10

Рисунок 7 – Однотактовая АЛУ-операция

Сброс и Обработка Прерываний
AVR имеет несколько источников прерываний. Каждое из прерываний, и отдельно Вектор Сброса, имеет
собственный программный вектор перехода, расположенный в пространстве памяти. Все прерывания имеют
собственный бит разрешения, в который должная быть записана логическая единица, если какое-то данное
прерывание требуется разрешить. Надо помнить, что даже, если какое-то прерывание настроено и разрешено, но вГлобальный Бит Разрешения Прерываний не записана единица - то прерывание никогда не сработает.
Самые младшие адреса в памяти программ по умолчанию определены как Вектор Сброса и другие
Векторы Прерывания. Полный список векторов прерываний приведен в секции "Прерывания" на странице 43.
Также, этот список определяет уровень приоритета каждого прерывания. Самый младший адрес прерывания
(нулевой адрес) имеет наивысший приоритет. Прерывание по сбросу (RESET) имеет наивысший приоритет,следующее прерывание по списку и с меньшим приоритетом это INT0 - "Внешний запрос на прерывание 0", идалее по списку см. стр.43.
Когда происходит прерывание, Глобальный Бит Разрешения Прерывания очищается и все другие
прерывания запрещаются. Пользователь может программно записать логическую единицу в Глобальный БитРазрешения Прерывания для разрешения остальных настроенных прерываний. В этом случае, любое возникшее
прерывание сможет прервать подпрограмму обработки прерывания возникшего ранее. Глобальный БитРазрешения Прерывания восстанавливается автоматически, когда происходит выполнение инструкции RETI - длявыхода из прерывания.
Существует два основных типа прерывания. Первый тип срабатывает при установке соответствующего
флага прерывания. В этом случае, Счетчик Программ "перепрыгивает" на соответствующий произошедшему
прерыванию вектор (адрес), для того, что бы выполнить подпрограмму обработки прерывания, а затем аппаратно
очищается соответствующий флаг прерывания. Флаг прерывания может быть очищен записью логической
ЕДИНИЦЫ (именно единицы а не нуля) в бит соответствующего регистра, в котором этот флаг прерывания
находится. Если условие возникновения прерывания происходит в то время, когда соответствующий битразрешения этого прерывания очищен (установлен в ноль), флаг о возникновении прерывания все равно будет
установлен (хотя прерывание в программе и не произойдет) и запомнен до того, как это прерывание будет
разрешено, этот флаг может быть очищен программно. Точно так же, если произойдет одно или больше условий
прерываний, в то время, как Глобальный Бит Разрешения Прерываний очищен, все равно соответствующие флаги
(или один флаг) будут установлены и запомнены. А, когда Глобальный Бит Разрешения Прерываний будет
установлен, произойдет обработка прерываний в соответствии с их приоритетом.
Второй тип прерываний срабатывает, когда условие возникновения прерывания присутствует в течении
некоторого времени. Эти прерывания не обязаны иметь свой собственный флаг прерывания. В этом случае, еслиусловие возникновения прерывания исчезнет до того, как это прерывание будет разрешено, тогда это прерывание
никогда не будет выполнено.
Когда AVR-контроллер выходит из прерывания, он всегда возвращается на главную программу (точнее нато место кода, где прервали его выполнение) и выполняет следующую одну инструкцию прежде, чем обслужить
стоящее в очереди следующее прерывание.
Обратите внимание, что содержимое Регистра Статуса автоматически не сохраняется, если происходит
переход к подпрограмме обработки прерывания и не восстанавливается обратно при выходе из подпрограммы
обработки прерывания. Эта работа должна выполняться программой пользователя.
Когда будет использована инструкция CLI для запрещения прерываний, прерывания будут немедленно
запрещены. Ни одно прерывание не будет выполнено после инструкции CLI, даже, если условие прерывания
возникает во время выполнения этой самой инструкции.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

11

Следующий пример покажет, как можно использовать эту инструкцию, чтобы избежать прерываний вовремя выполнения записи в EEPROM:

Когда используется инструкция SEI для разрешения прерываний, то инструкции, следующие после
команды SEI, будут выполняться до наступления какого-либо прерывания, как показано на этом примере:Время Реакции на Прерывания
Время реакции на все разрешенные прерывания в контроллере составляет минимум 4 такта. Спустя 4 такта
происходит переход на вектор возникшего прерывания и дальнейший вызов подпрограммы обработки прерывания.
В течении перилда времени этих 4 тактов происходит сохранение Счетчика Программ в Стеке. Затем происходит
переход вектора программы на метку подпрограммы для обработки прерывания, это занимат 3 такта. Еслипреывание происходит во время выполнения многотактовой инструкции то сначала происходит завершение
выполнения этой инструкции, а потом обработка прерывания. Если прерывание происходит, когда ЦПУ (МЦУ)находится в режиме сна, то время реакции на прерывание увеличивается на 4 такта. Такое увеличение времени
реакции происходит из-зи добавления времени тебуемого на выход из выбранного режима сна.
На выход из подпрограммы обработки прерывания тоже требуется 4 такта. В течении врнмени этих 4тактов Счетчик Программ (двух-байтный) выталкивается -восстанавливается- из Стека, Указатель Стека
увеличивается на 2 и происходит установка бита I в регистре состояния SREG.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

12

Память AVR ATtiny2313
Эта секция описывает разные виды памяти в ATtiny2313. AVR архитектура имеет два главных
пространства памяти, Память Данных и Память Программ. В дополнение кэтому, ATtiny2313 имеет EEPROMпамять (ПЗУ) для хранения данных. Эти три пространства памяти расположены последовательно.

Встроенная программируемая ФЛЭШ-память
ATtiny2313 содержит встроенную ФЛЭШ-память для хранения программы. Так как все AVR-инструкции
являются 16- или 32-битными то ФЛЭШ-память организована как таблица 1К х 16.
ФЛЭШ-память может быть перезаписана мнимум 10 000 раз, имеются в виду циклы записи и стирания.
Счетчик Программ (РС) у ATtiny2313 является 10-битным, так что может адресовать ровно 1К (1 КилоБайт)пространства памяти. Раздел "Программирование Памяти" на стр157 содержит детальное описание какпрограммировать (прошивать) ФЛЭШ-память через SPI-интерфейс.
Таблица констант может быть расположена в пределах пространства всей памяти (смотрите описание
инструкции для Загрузки Памяти Программ- LPM- Load Programm Memory)Временные диаграммы для выборки инструкций и для выполнения инструкций представлены на стр10.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

13

Память данных SRAM (ОЗУ)Рисунок 9 показывает как организована память данных SRAM.
Самые младшие 224 адреса расположения данных в памяти данных это Файл Регистров, память
ввода/вывода, Расширенная память ввода/вывода и внутренняя память данных SRAM. Первые 32 адреса - это иесть Файл Регистров (Регистровый Файл), следующие 64 адреса - это стандартная память ввода/вывода, аследующие 128 адресов это уже внутренняя память данных - ОЗУ (SRAM).
Пять различных режимов адресации памяти данных представляют собой следующее:1-Прямой Доступ,2-Косвенная Адресация со Смещением,3-Косвенная Адресация (Простая),4-Косвенная Адресация с предварительным декрементом (предекремент),5-Косвенная Адресация с последующим инкрементом (постинкремент).
В Регистровом Файле регистры с R26 до R31 являются регистрами косвенной адресации (косвенные
указатели адреса).
Прямая адресация может адресовать полностью все пространство памяти.
Косвенная Адресация со смещением может адресовать 63 адреса используя регистры Y или Z.
Когда используется режим Косвенной Адресации с Предекрементом или Постинкрементом то регистры X
или Y или Z декрементируются или инкрементируются.
32 Регистра Общего Назначения, 64 регистра ввода/вывода и 128 байт внутренней памяти ОЗУ вконтроллере, все это становится доступным путем использования всех пяти режимов адресации.
Регистровый Файл описан на стр8.

Рисунок 9 – Карта Памяти Данных

Время Доступа к Памяти ДанныхЭта секция описывает концепцию времени доступа к Внутренней Памяти Данных. Время доступа квнутренней ОЗУ занимает 2 такта ЦПУ, как показано на Рисунке 10:г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

14

Рисунок 10 – Временные диаграммы доступа к данным в ОЗУ встроенному на кристалл

Память Данных EEPROM (ППЗУ)ATtiny2313 содержит 128 Байт EEPROM (ППЗУ)-памяти. Эта память организована как отдельное
пространство данных, каждый один байт может быть прочитан и записан. EEPROM (ППЗУ) может быть записанаи стерта в сумме как минимум 100 000 раз. Работа ЦПУ с EEPROM объяснена в описании Регистра АдресаEEPROM, Регистра Данных EEPROM и Регистра Управления EEPROM. За подробной информацией попоследовательной загрузке данных в EEPROM обратитесь к стр. 171.

Доступ на чтение/запись EEPROM
Регистр Доступа к EEPROM расположен в пространстве ввода/вывода. Время доступа к записи EEPROM
дано в Таблице 1. Эта самоопределяющая временная функция и позволяет пользователю программно определять,когда же можно будет записывать следующий байт. Если программа пользователя содержит инструкции записи,тогда должны быть предприняты некоторые предосторожности. В источниках питания содержащих фильтры
возможно медленное изменение напряжения Vcc (+питания) вверх или вниз относительно земли. По этой причине
устройство может работать некоторое время с пониженным напряжением питания, меньшим, чем положено, дляданной системной частоты. Смотри "Предотвращение Искажения Данных EEPROM" на стр. 19 для подробной
информации о том, как избежать проблем в этой ситуации. Для того, чтобы избежать неумышленную запись в
EEPROM, должны быть соблюдены определенные процедуры. Обратитесь за более детальной информацией поэтому поводу к описанию Регистра Контроля EEPROM. Когда происходит чтение EEPROM, ЦПУприостанавливается на 4 такта до того, как начать выполнение следующей инструкции. После записи EEPROMЦПУ приостанавливается на 2 такта, прежде, чем начать выполнение следующей инструкции.

Регистр Адреса EEPROM «EEAR»• Бит №7 - Res: Зарезервированный БитЭтот бит зарезервирован в ATtiny2313 и всегда читается как ноль.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

15

• Биты №6.. №0 - EEAR6.. 0: Адреса EEPROM
Регистр адреса - EEAR - определяет адрес байта данных в 128 байтном пространстве EEPROM. Байты
данных EEPROM адресуются линейно от 0 адреса до 127. Начальные значения битов в Регистре EEAR неопределены. Надлежащие значения этого регистра должны быть записаны, до того, как EEPROM будет
использоваться.

Регистр Данных EEPROM «EEDR»• Биты №7.. №0 - EEDR7.. 0: EEPROM ДанныеДля записи в EEPROM, Регистр Данных EEDR должен содержать данные, которые будут записываться в
EEPROM, по адресу, определенному в Регистре Адреса EEAR. Для операции чтения EEPROM, Регистр Данных
EEDR должен содержать данные прочитанные из EEPROM по адресу, определенному в Регистре Адреса EEAR.

Регистр Управления EEPROM «EEСR»• Биты №7.. №6 - Res: Зарезервированные БитыЭти биты зарезервированы в ATtiny2313 и всегда читаются как ноль.
• Биты №5, №4 - EEPM1 и EEPM0: Программирование Битов Режима EEPROM
Установка битов выбора режима EEPROM определяет какое действие выполнит программа, когда в бит
EEPE будет загружена 1. Это позволяет программировать данные в автоматическом режиме (стирание старых
данных и записывание новых данных) или выполнять от отдельно операции Стирания и Записи. Время
программирования данных для различных режимов показано в таблице 1. Пока бит EEPE содержит 1, любая записьв бит EEPMn будет игнорироваться. При сбросе контроллера биты EEPMn будут сброшены в 0b00, если EEPROMв этот момент программировалась.

• Бит №3 - EERIE: Прерывание от EEPROM по Состоянию "готово к записи"В бит EERIE нужно записать 1, чтобы разрешить прерывание (и переход к к вектору EE READY), если также установлен в 1 бит I в Регистре Состояния SREG. Запись в EERIE нуля запрещает прерывание от EEPROM.
Если в EERIE находится единица, то прерывание будет происходить постоянно, когда EEPROM будет готова кзаписи.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

16

• Бит №2 - EEMPE: Мастер Программного Разрешения EEPROM
Бит EEMPE определяет будет ли эффект от записанного бита EEPE. Если в бит EEMPE записать 1 и потом,не позже, через 4 такта, записать 1 в бит EEPE, то начнется программирование байта данных в EEPROM позаданному адресу. Если в EEMPE ноль то установка в 1 EEPE не дает эффекта. Если в EEMPE записать 1программно, то спустя 4 такта этот бит будет очищен в ноль аппаратно.
• Бит №1 - EEPE: Программное Разрешение в EEPROM
Бит EEPE это бит Программного Разрешения Сигнала идущего в EEPROM, программирует разрешениедля сигнала (байта) идущего в EEPROM. Когда EEPE записан 1-ей то EEPROM будет запрограммирована согласно
установкам битов EEPMn. EEMPE бит должен уже содержать единицу еще до того, как единица будет записана вбит EEPE, иначе запись EEPROM не будет осуществлена. Когда отведенное время на доступ к записи истечет, бит
EEPE будет очищен аппаратно. Когда будет установлен бит EEPE, ЦПУ приостановится на два цикла до того, какследующая инструкция будет выполнена.
• Бит №0 - EERE: Разрешение Чтения EEPROM
Бит EERE - это бит Разрешения Чтения Сигнала (байта) из EEPROM. Бит EERE является стробирующим
сигналом для EEPROM. После того, как будет записан корректный адрес в Регистр Адреса - EEAR - тогда можно
будет записывать 1 в бит EERE для вызова чтения из EEPROM. Доступ к EEPROM будет осуществлен за однуинструкцию и требуемые данные будут тут же доступными. Когда EEPROM данные будут прочитаны, ЦПУприостановится на 4 такта прежде, чем начать выполнение следующей инструкции. Пользователь должен
программно опрашивать бит EEPE до того, как начать операцию чтения. Если в данный момент времени операция
записи EEPROM будет активна, то нельзя осуществлять чтение EEPROM и изменение содержимого Регистра
Адреса EEAR.

Автоматическое Программирование Байта
Наиболее простым из всех является режим Автоматического Программирования Байта. Перед тем какосуществить запись в EEPROM пользователь должен сначала записать адрес в Регистр Адреса EEAR и данные вРегистр Данных EEDR. Если биты EEPMn являются нулевыми, то запись 1 в бит EEPE (не позднее, чем в течении 4циклов после записи 1 в EEMPE) приведет к запуску операций стирания и записи. Циклы стирания и записи будут
выполнены как одна операция, полное время такого программирования памяти приведено в Таблице 1 на стр.16.
Бит EEPE остается установленным до того, пока циклы стирания и записи не завершатся. Пока устройство занято
программированием EEPROM, невозможно с EEPROM выполнять какие-либо другие операции.

Раздельное Программирование Байтов
Также, возможно выполнять две разные операции Записи и Стирания. Это может понадобиться вприложениях требующих быстрого доступа к памяти за некоторые ограниченные периоды времени (например, припадающем напряжении). Чтобы воспользоваться преимуществами такого метода, нужно помнить, что ячейка
памяти по тому адресу, куда будет производиться запись данных, должна быть предварительно стерта. Стирание
нужно производить, когда напряжение является достаточно высоким для нормальной работы.

Стирание
Чтобы произвести стирание байта, прежде всего надо записать в Регистр Адреса EEAR адрес стираемого
байта. Если выбран режим "Только Стирание", как показано в Таблице 1 - 0b01 для EEPMn, то запись EEPE (втечении 4 тактов, после записи EEMPE) вызовет операцию стирания. Бит EEPE останется установленным в 1 дозавершения операции стирания. Пока устройство занято стиранием EEPROM, невозможно с EEPROM выполнять
какие-либо другие операции.

Запись
Чтобы произвести запись байта, прежде всего надо записать в Регистр Адреса EEAR адрес записываемого
байта. Если выбран режим "Только Запись", как показано в Таблице 1 - 0b10 для EEPMn, то запись 1 в EEPE (втечении 4 тактов, после записи EEMPE) вызовет операцию записи байта. Бит EEPE останется установленным в 1 дозавершения операции записи. Если ячейка памяти, куда производится запись не была стерта перед записью, тоданные хранимые в ней будут затерты новыми. Пока устройство занято записью EEPROM, невозможно с
EEPROM выполнять какие-либо другие операции.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

17

Калибровка Генератора происходит примерно за то же время ,что и доступ к EEPROM. Убедитесь, чточастота Генератора находится в пределах требуемой в описании "Регистра Калибровки Генератора - OSCCAL" настр. 25.
Следующий пример кода покажет, как на ассемблере и на С производить запись в EEPROM. В примерах
принято, что прерывания были отключены путем очистки бита I в Регистре Состояния SREG, так что прерыванияне сработают во время выполнения функций в примерах:г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

18

Следующий пример кода покажет, как на ассемблере и на С производить чтение из EEPROM. В примерах
принято, что прерывания были отключены путем очистки бита I в Регистре Состояния SREG, так что прерыванияне сработают во время выполнения функций в примерах:Предотвращение Искажения данных EEPROMВ течении периода времени низкого напряжения питания Vcc, EEPROM данные могут быть искажены,потому, что ЦПУ и EEPROM не могут корректно работать в таких условиях. Эта проблема является такой же, как уплат-приложений использующих EEPROM и решения этой проблемы здесь могут быть такими же. Искажение
данных EEPROM при низком напряжении может произойти по двум причинам. Первая: последовательная запись в
EEPROM требует определенного минимального напряжения для корректной работы. Вторая причина: ЦПУ можетсам непосредственно выполнять некорректно операции, если напряжение источника питания слишком низкое.
Искажения данных EEPROM можно легко избежать, следуя следующим проектным рекомендациям:Удерживать выход RESET в низком состоянии в течении времени пока напряжение неудовлетворительное. Этоможет быть сделано разрешив работу Brown-out Detector (BOD) - детектора низкого напряжения. Еслиопределяемый уровень напряжения внутренним BOD-детектором не соответствует заданному уровню, тосработает Схема Защиты (сброса).
Если Сброс Схемой Защиты должен произойти во время операции записи в EEPROM, то будет обеспечено
завершение этой операции, но при условии, что для этого будет достаточно напряжения.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

19

Память Ввода/Вывода (в/в)Определение пространства в/в для ATtiny2313 приведено на стр. 209 в разделе "Резюме Регистра".
Все виды пространств в/в в ATtiny2313 и периферийные устройства расположены в общем пространстве
в/в. Любое место пространства в/в может быть доступно через инструкции LD/LDS/LDD и ST/STS/STD припередачи данных между 32 Регистрами Общего Назначения и самим пространством в/в. Регистры в/в, чьи адреса
располагаются в пределах диапазона 0х00 - 0хF1, побитно доступны через команды SBI и CBI. В этих регистрах
значения каждого бита может быть проверено командами SBIS и SBIC. За подробной информацией обинструкциях обращайтесь к соответствующим разделам. Определенные команды для пространства в/в, такие как
IN и OUT, должны использоваться в диапазоне адресов 0х00-0х3F. Когда Регистры пространства в/в адресуютсякак пространство данных, посредством коаманд LD и ST, то к адресам этих Регистров должно быть прибавлено
значение 0x20.
Зарезервированные адреса памяти пространства в/в никогда не могут быть перезаписаны. Некоторые
флаги (биты) в Регистре Состояния SREG очищаются записью в них именно логической ЕДИНИЦЫ а не нуля.
Обратите внимание, что в отличие от других инструкций контроллера, CBI и SBI инструкции оперируют сопределенными битами и поэтому они могут быть использованы в регистрах для определения отдельного флага.
Команды CBI и SBI работают только в определенном диапазоне адресов: от 0x00 до 0x1F.
Регистры Управления пространством в/в и Периферией объяснены в следующем разделе.

Регистры в/в Общего Назначения
ATtiny2313 содержит три Регистра Ввода/Вывода Общего Назначения. Эти регистры могут бытьиспользованы для запоминания любой информации и особенно они полезны для запоминания Глобальных
Переменных и Флагов Состояния. Регистры Ввода/Вывода Общего Назначения находятся в диапазоне адресов
0x00 - 0x1F и непосредственно побитно доступны через инструкции SBI, CBI, SBIS, и SBIC .

Регистр Ввода/Вывода Общего Назначения 2– GPIOR2 (General Purpose I/O Register)Регистр Ввода/Вывода Общего Назначения 1– GPIOR1 (General Purpose I/O Register)Регистр Ввода/Вывода Общего Назначения 0– GPIOR0 (General Purpose I/O Register)г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

20

Системный Тактовый Генератор и его Настройка
Описание Системного ГенератораНа Рисунке 11 представлена структурная схема Тактового Генератора и его описание. Все устройства
нуждающиеся в Тактовом Генераторе будут неактивны, если последний тоже неактивен. Чтобы уменьшить
потребление мощности, тактовый модуль может быть остановлен в нескольких на выбор режимах сна, описанныхна странице 29 в разделе "Управление Энергопотреблением и Режимы Сна". Тактовый Генератор детально
представлен ниже:Рисунок 11 - Структурная схема Тактового Генератора

Такты ЦПУТакты ЦПУ направлены на те части системы (модули), которые работают синхронно с ядром AVR. Кпримеру, такими модулями могут быть Регистры Общего Назначения, Регистр Статуса и память данных,содержащая Указатель Стека. Остановка тактов ЦПУ запрещает работу ядра и прекращает выполнение общих
операций и вычисления.

Такты пространства в/вТакты пространства в/в используются большинством модулей в/в, такими, как Таймеры/Счетчики иинтерфейс USART. Такты пространства в/в так же используются модулем Внешних Прерываний, но не темивнешними прерываниями, которые используют асинхронную логику, позволяя таким прерываниям срабатывать
даже, если такты пространства в/в остановлены. Также, обратите внимание, что условие начального обнаружения в
USI-модуле является асинхронным, когда такты в/в остановлены; это условие в USI-модуле запускается припереходе в спящий режим.

Такты ППЗУОперации тактового управления ППЗУ определяют интерфейс ППЗУ. Такты ППЗУ одновременно
используются с тактами ЦПУ.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

21

Источник Тактирования
Контроллер имеет следующие настройки источника тактовых импульсов, выбираемые прошивкой Fuseбитов (битов-перемычек), как показано ниже. Сигналы из выбранного источника идут на вход Тактового
Генератора AVR и затем поступают на соответствующие модули.

Таблица 2 Выбор схемы тактированияВ следующих разделах описаны опции каждого способа тактирования. Когда ЦПУ пробуждается ото сна,то начинает стартовать выбранный источник тактирования обеспечивая стабильную частоту еще до начала
выполнения инструкций. Когда ЦПУ стартует после Сброса то это происходит с задержкой, позволяя источнику
тактирования стабилизировать свою работу, еще до начала нормального функционирования контроллера.
Генератор Сторожевого Таймера как раз и используется для подсчета промежутка времени задержки при старте
контроллера. В таблице 3 показаны номера тактовых циклов Генератора Сторожевого Таймера (WDT),используемых при подсчетах времени. Частота Генератора Сторожевого Таймера зависит от приложенного
напряжения, об этом говорится на стр. 179 в разделе "Типичные Характеристики МК ATtiny2313"

Таблица 3 – Количество тактов Генератора Сторожевого Таймера
Типичное Конечное время
(при Vcc=5V)
4,1 мс
65 мсТипичное Конечное время
(при Vcc=3V)
4,3 мс
69 мсНомер Такта
(конечное число)4К (4096)64К (65536)

Источник тактирования по-умолчанию
Контроллер выпускается с такими запрограммированными битами по-умолчанию:CKSEL = “0010”, SUT = “10”, и CKDIV8.
Внутренний RC-генератор по-умолчанию настроен на наибольшее время запуска с предварительным
делением частоты на 8. Установки по-умолчанию гарантируют, что каждый пользователь сможет в своих проектах
настраивать источник тактирования при ВнутриСистемном или Параллельном программировании.

Генератор на Резонаторе
XTAL1 и XTAL2 это вход и, соответственно, выход инвертирующего усилителя, который может бытьсконфигурирован пользователем как внутренний генератор, как показано на Рисунке 12 на стр. 23.Также, можно
использовать Кварцевый резонатор или Керамический.
Емкости С1 и С2 всегда будут эквивалентными, т.е, одинаковыми при использовании резонатора любого
вида. Оптимальное значение емкостей определяется паразитными емкостями и электромагнитными шумами
внешней среды. Несколько начальных рекомендаций по выбору емкостей, при использовании резонаторов, дано вТаблице 4 на стр. 23. Для керамических резонаторов значения емкости определяется опираясь на информацию
производителя резонатора.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

22

Рисунок 12 – Схема подключения Резонатора
Генератор может работать в трех разных режимах, каждый оптимизирован под определенный диапазон
частот. Режим работы выбирается fuse-битами (битами-перемычками) CKSEL3..1, как показано в Таблице 4:Таблица 4 – Режимы работы Кварцевого Генератора

Биты-перемычки CKSEL0, вместе с битами SUT1..0, выбирают время запуска, как указано в Таблице 5:г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

23

Таблица 5 – Время запуска Тактового Генератора с Кварцевым резонатором или Керамическим

Примечание:1.Эта опция используется только тогда, когда устройство не работает на максимальной или близкой к нейчастоте и, когда в приложении не требуется стабильная частота при старте.
2.Эта опция предназначена для использования Керамического резонатора и гарантирует стабильную
частоту при старте. Она, также, может быть использована и с Кварцевым резонатором, но, еслиустройство не работает на максимальной частоте и не требуется стабильность частоты при старте.

Калиброванный Внутренний RC-генератор
Калиброванный Внутренний RC-генератор обеспечивает тактовую частоту 8.0 МГц. Это номинальное
значение частоты при Vcc=3V и 25*С. Если частота 8.0 МГц это слишком высокая частота при заданном
напряжении, как указано в спецификации на устройство, то необходимо перепрограммировать бит-перемычкуCKDIV8 для того, чтобы поделить эту частоту на 8. Контроллер по-умолчанию выпускается с уже установленным
битом CKDIV8. Такая частота может быть выбрана в качестве системной, путем программирования CKSEL-битов,как показано в Таблице 6. В таком случае, контроллер сможет работать без какого-либо внешнего резонатора.
После СБРОСА контроллера, происходит аппаратная загрузка калибрующего байта в Регистр OSCCAL и таким
образом автоматически калибруется RC-генератор. При напряжении питания 3 В и температуре 25* С, такая
калибровка обеспечивает частоту с ошибкой в 10% от номинальной. Если использовать методы калибрации,которые описаны и доступны на html-странице www.atmel.com/avr, то возможно достигнуть ошибки установки
частоты до 2% от номинальной при любом напряжении Vcc и Температуре. Если RC-генератор используется какисточник системной частоты, то для Сторожевого Таймера по-прежнему будет использоваться свой собственный
генератор, а также, и для формирования задержки после сброса контроллера. Для более подробной информации опрограммировании калибрующих значений обратитесь к разделу "Калибрующий Байт" на стр. 159.
Таблица 6 – Режимы внутреннего калиброванного RC-генератораг Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

24

При выбор этого Генератора, время запуска определяется SUT-перемычками, как показано в таблице 7:Регистр OSCCAL для калибровки Генератора

• Биты 6.. 0 - CAL6.. 0: Значения калибрующие Генератор
Значения, записанные по этому адресу, могут настроить Внутренний Генератор и уменьшить нестабильность
частоты. Это делается автоматически при перезагрузке Чипа. Когда в регистре OSSCAL нули, это означает, чтовыбрана самая низкая частота. Запись в этот регистр ненулевых значений, приведет к повышению частоты
Внутреннего Генератора. Запись в Регистр значения 0x7F настраивает Генератор на максимально доступную
частоту. Внутренний Генератор может использоваться при обращении к EEPROM и FLASH памяти. При записиEEPROM или FLASH, ошибка в стабильности Внутреннего Генератора не должна превышать 10%. В противном
случае запись может быть неудачной. Заметьте, что этот Генератор предназначен для настройки на частоту 8 или 4
МГц. Настройка на другие частоты не гарантирована, как показано в Таблице 8.
Избегайте больших отклонений частоты Внутреннего Генератора от номинальной для обеспечения
стабильной работы Чипа. Отклонение от номинальной частоты больше, чем на 2% за время между двумя
тактовыми периодами, может привести к непредсказуемым последствиям. Изменения в регистре OSCCAL недолжны превышать числа 0х20 при каждой калибровке.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

25

Внешний тактовый ГенераторДля тактировать Чип от Внешнего тактового Генератора, нужно воспользоваться выводом XTAL1 так, какпоказано на Рисунке 13. Чтобы Чип смог запуститься от Внешнего Генератора, нужно позаботиться о том, чтобы
Биты-перемычки CKSEL были запрограммирован в нули - "0000".

Рисунок 13. Подключение Внешнего Тактового Генератора
Если выбран этот источник тактирования, то время запуска определяется SUT-битами перемычками, какпоказано в Таблице 10:Таблица10. Время запуска с Внешним тактовым Генератором
SUT1..0`Время запуска при выходе изхолостого режима
PowerSave(idle) и экономичного
PowerDownДобавляемая задержка
после Сброса (Vcc=5V)

00

6CK

14CK

01

6CK

14CK+4.1мСек

10

6CK

14CK+65мСек

11зарезервировано

зарезервировано

Рекомендовано
использовать при:Включенной
BOD-схеме
Быстро
нарастающем Vcc
Медленно нарастающем
Vcc
зарезервировано

Использование Внешнего Генератора должно обеспечивать отсутствие внезапных изменений в тактовой
частоте, чтобы работа Чипа была стабильной. Изменение в частоте более чем на 2% между двумя соседними
тактовыми периодами может привести к непредсказуемым событиям. Невыполнение этих требований, гарантирует,что контроллер будет находиться в состоянии Сброса, пока частота не стабилизируется.
Заметьте, что Системный Тактовый Делитель может быть использован для того, чтобы изменять время
запуска Внутреннего тактового Генератора при стабильной системной частоте.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

26

Внутренний Генератор на 128 кГцВнутренний Генератор на 128 кГц является маломощным устройством, обеспечивающим тактовую частоту
равную 128 кГц. Эта частота является номинальной при Vcc 3V и темперауре 25*С. Этот Генератор может бытьвыбран в качестве системного программированием CKSEL-битов-перемычек таким образом:"0110-0111". Если вкачестве системного Генератора выбран этот, то его время включения определяется установкой SUT-битовперемычек, как показано в Таблице 11:Таблица 11. Время Запуска для Внутреннего Генератора на 128кГц

00Выход из режимов холостого
PowerSave(idle) и экономичного
PowerDown
6СК (тактов)

01

6СК

14СК+4ms

106СК

14СК+4ms

SUT1..011Дополнительная
задержка после Сброса
14СКРекомендовано
использовать
при/с:
БОД-схема
Быстро нарастающее
Напряжение
Медленно нарастающее
напряжение

зарезервировано

Масштабирующий Регистр-делитель CLKPRБитЧтение/Запись
Начальн
ыеЗначения

7
CLKPCE

6
-

5
-

4
-

3
CLKPS3

2
CLKPS2

1
CLKPS10
CLKPS0

Ч/З

Ч

Ч

Ч

Ч/З

Ч/З

Ч/З

Ч/З

0

0

0

0

Смотри
описание
БитовСмотри
описание
БитовСмотри
описание
БитовСмотри
описание
Битов

CLKPR

• Бит 7 - CLKPCE: Деление частоты - разрешено
Бит CLKPCE должен быть записан логической единицей для разрешения изменения CLKPS битов. Бит
CLKPCE только обновляется, когда другие биты в этом регистре CLKPR одновременно записываются в НОЛЬ.
CLKPCE-бит очищается аппаратно после ЧЕТЫРЕХ тактов процессора или после установки бита CLKPS.
Перезапись CLKPS бита в пределах периода ЧЕТЫРЕХ тактов не расширяет этот период аппаратного сброса, битвсе равно будет сброшен после того, как он был записан в первый раз.
• Биты 3..0 - CLKPS3..0: Биты для выбора коэффициента деления тактовой частотыЭти биты определяют коэффициент деления между выбранной системной частотой и внутренним
системным источником тактирования. Этот бит может быть изменен во время работы для того, чтобы настроить
частоту, требуемую приложением. При использовании делителя частоты уменьшается частота синхронизации спериферией. Коэффициенты деления показаны в Таблице 12.
Для того, чтобы не произошло неумышленных изменений частоты, нужно написать процедуру, которая
должна следить за изменениями битов CLKPS:
1. Для начала запишите в бит CLKPCE единицу, а все остальные биты в регистре CLKPR сбросьте в ноль.
2. В течении четырех тактов процессора надо записать нужное значение битов CLKPS, пока не произошло
аппаратного сброса CLKPCE.
Прерывания во время настройки этого генератора должны быть запрещены, убедитесь, что процедура
настройки генератора не была прервана.
Бит-перемычка-CKDIV8 определяет начальное значение для CLKPS битов. Если перемычка CKDIV8 незапрограммирована, тогда CLKPS биты будут сброшены в "0000" нули. Если перемычка CKDIV8запрограммирована, тогда CLKPS биты будут сброшены в "0011" значения, определяя этим коэффициент деления
равный 8 при старте контроллера. Эта особенность должна быть использована в случае, когда выбранный источник
тактирования имеет более высокую частоту, чем требуемая максимальная частота устройства для данного режима.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

27

Обратите внимание, что можно записать любое значение в биты CLKPS независимо от установок битаперемычки-CKDIV8. Необходимо удостовериться, что коэффициент деления частоты был выбран достаточным,если источник тактирования имеет более высокую частоту, чем надо. Контроллер изначально выпускается сзапрограммированным битом-перемычкой CKDIV8.

Таблица 12. Выбор делителя частоты
CLKPS3

CLKPS2

CLKPS1

CLKPS0

0
0
0
0
0
0
0
0
1
-

0
0
0
0
1
1
1
1
0
-

0
0
1
1
0
0
1
1
0
-

0
1
0
1
0
1
0
1
0
-

г Шахты
ЮРГУЭС

Коэффициент
деления
1
2
4
8
16
32
64
128
256
Зарезервировано
Зарезервировано
Зарезервировано
Зарезервировано
Зарезервировано
Зарезервировано
Зарезервировано

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

28

Управление потреблением мощностии РежимыСна
Режим сна позволяет отключить в приложении неиспользуемые модули микроконтроллера, таким образом
сохраняя энергию. Семейство AVR обеспечивает разные режимы сна, позволяющие пользователю адаптировать
потребление мощности к требованиям приложения.
Для включения любого из трех режимов сна надо записать единицу в бит SE в регистре SMCR и затем
выполнить инструкцию SLEEP. Биты SM0 и SM1 в регистре MCUCR определяют, какой из режимов будет
активирован инструкцией SLEEP (режимы: Idle-холостой, Power-down-экономичный, или Standby-сна). Смотрите
Таблицу 13. Если в то время, пока контроллер спит, происходит РАЗРЕШЕННОЕ прерывание, тогда контроллер
выходит из режима сна и выполняет какую-то работу.
Когда контроллер просыпается, он приостанавливается на четыре такта, время которых добавляется квремени его загрузки, выполняется вызов подпрограммы обрабатывающей прерывание и после этого продолжается
выполнение инструкций, следующих за инструкцией SLEEP, собственно, которая и ввела контроллер в режим сна.
Содержание Регистрового Файла и памяти SRAM остается нетронутым, когда устройство выходит из режима сна.
Если произойдет Сброс во время сна, после этого контроллер стартует и выполняет программу с Вектора Сброса.
Рисунок 11 на странице 21 показывает различные тактируемые модули, а,также, их расположение. Этотрисунок может оказаться полезным при выборе нужного режима сна.

MCUCR – Регистр управления МК(микроконтроллером)Регистр Управления Режимом Сна содержит управляющие биты для регулирования потребляемой
мощности.
БитЧтение/Запись
Начальн
ыеЗначения

7
PUD

6
SM1

5
SE

4
SM0

3
ISC11

2
ISC10

1
ISC01

0
ISC00

Ч/З

Ч/З

Ч/З

Ч/З

Ч/З

Ч/З

Ч/З

Ч/З

0

0

0

0

0

0

0

0

MCUCR

• Биты 6, 4 - SM1..0: Режимы СнаЭти биты выбирают один из четырех доступных РежимовСна, как показано в Таблице 13.
Таблица 13 – Режимы Сна
SM1
SM0Режимы Сна00Холостой-Idle
01Экономичный-PwerDown
1
1Экономичный-PowerDown
1
0Режим Сна-StandbyПримечание 1: Режим Сна (именно Standby) рекомендуется использовать только при использовании
внешнего резонатора для Генератора.

ХолостойРежим-IdleКогда биты SM1..0 записаны в нули "00", инструкция SLEEP вводит МК в ХолостойРежим Сна, при этомостанавливается ЦПУ, но при этом разрешена и продолжается работа таких модулей, как: UART, Аналоговый
Компаратор, АЦП, USI-интерфейс, Таймеры/Счетчики, СторожевойТаймер и СистемаПрерываний.
ХолостойРежим позволяет МК пробуждаться от внешних прерываний, это происходит так же, какпробуждение от внутренних прерываний, к примеру при Переполнении Таймера/Счетчика или при окончании
передачи данных через UART. Если прерывание от АналоговогоКомпаратора не требуется, то его можно
отключить установкой ACD-бита в Регистре Управления Аналоговым Компаратором - ACSR. Это уменьшит
потребляемую мощность в ХолостомРежиме.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

29

Режим СохраненияЭнергии (Экономичный)Когда биты SM1..0 записаны в 01 или 11, инструкция SLEEP переводит МК в режим Сохранения нергии. Вэтом режиме внешний генратор останавливается, в то время, как внешние прерывания, такие, как Определение
Начала Передачи Данных по интерфейсу USI и СторожевойТаймер, продолжают работать (если, конечно ОНИразрешены). Вывести МК из этого режима могут только следующие прерывания: ВнешнийСброс, Сброс отСторожевогоТаймера, Сброс BOD-схемой, Прерывание от USI-интерфейса при определении условия начала
передачи данных, изменением внешнего уровня сигнала на выводе INT0 или прерывание на другом выводе,служащим источником прерывания, определенном пользователем. Этот РежимСна основан на том, что происходит
остановка всех тактовых генераторов, позволяя работать только модулям не требующим тактовой частоты.
Обратите внимание, что, если в качестве ВнешнегоПрерывания для вывода МК изРежимаСохраненияЭнергии-PowerDown, использутся изменение уровня сигнала на каком-то из выводов тозаданный уровень сигнала должен присутствовать некоторое минимальное время. Обратитесь к разделу "Внешние
Прерывания" на стр. 58 за уточнением этой информации.
При выходе из РежимаСохраненияЭнергии происходит еще нкоторая временная задержка до того, как МКполностью проснется. Это позволяет ТактовомуГенератору перезапуститься и стабилизировать свою работу после
того, как он был остановлен. Период пробуждения МК определяется теми же самыми битами-Перемычками,которые определяют Время Дополнительной Задержки ПослеСброса, это описано ранее в раздееле "Источник
Тактирования" на стр. 22 и в табл.5 на стр.24.
РежимСна-StandByЕсли биты SM1..0 имеют значения "10" и выбран внешний тактовый генератор на кристалле/резонаторе,то инструкция SLEEP переводит МК в РежимСна (StandBy). Этот режим идентичен режиму СохраненияЭнергииPowerDown (или еще по-другому - ЭкономииЭнергии) за тем исключением, что в этом режиме-StandByТактовыйГенератор остается в рабочем состоянии. Из этого РежимаСна МК выходит за ШЕСТЬ тактовых циклов.

ТактыI/OРазрешено

INT0,INT1 или
PCINT0..PCIN
T7Условие старта
USI

SPM/EEPROM

Другие I/OХолостой –IdleЭкономииPowerDownСна –StandBy (1)Примечания:ТактыFLASHТактыCPUРежимы СнаТаблица 14 – Активные Области тактирования и Источники Пробуждения
Активные Области Тактирования
Генераторы
Источники пробуждения

X

X

X

X

X

X

X

X(2)

X

X(2)

X

1. Рекомендовано при использовании внешнего кристалла или резонатора.
2. Для INT0 - только прерывание по уровню.

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

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

30

Аналоговый Компаратор (АК)При входе МК в ХолостойРежим-Idle, АналоговыйКомпаратор должен быть отключен, если он неиспользуется. В других режимах сна АК отключается автоматически. Однако, если АК настроен на использование
Внутреннего Источника Опорного Напряжения в качестве входного, тогда АК будет сам отключаться во всехрежимах сна. В других случаях Внутренний Источник Опорного Напряжения будет активен независимо от какоголибо режима сна. Обратитесь к разделу "Аналоговый Компаратор" на странице 148 за более детальной информациеоб АК.

BOD-детектор (Brown-out Detector)(BOD-детектор или схема защиты (слежения) от пониженного напряжения питания)Если BOD-детектор не нужен в приложении то этот модуль необходимо отключить. Если BOD-детектор
включен перемычками-BODLEVEL, тогда он будет работать во всех режимах сна и, следовательно, всегда
потреблять энергию. Обратитесь к разделу "BOD-детектор" на странице 34 для более детальной информации.

Внутренний Источник Опорного Напряжения
(ВИОН)
Внутренний Источник Опорного Напряжения должен быть разрешен, когда используется BOD-детекторили Аналоговый Компаратор. Если эти модули отключены, как рекомендовано в предыдущих разделах,ВИОН должен быть тоже отключен и тогда он не будет потреблять энергию. Когда ВИОН снова надо включить,пользователь должен сначала позволить ему нормально запуститься, прежде чем ВИОН можно будет использовать.
Если ВИОН не выключался на период сна МК то ВИОН может быть использован без промедления. Обратитесь кразделу "Внутренний Источник Опорного Напряжения" на странице 37 за более детальной информацией.

Сторожевой Таймер (СТ)Если СторожевойТаймер не используется в приложении, тогда этот модуль лучше отключить. Если этогоне сделать, ОН будет работать в любом режиме сна и, следовательно, будет всегда потреблять энергию. В самом
экономичном режиме сна СТ внесет значительный вклад в потреблении тока. Обратитесь к разделу "Прерывания"на странице 41 за более детальной информацией о том, как настраивать СторожевойТаймер.

Выводы Портов вода/выводаПри входе в различные режимы сна, все выводы портов в/в будут сконфигурированы на минимальное
потребление энергии. Очень важно перед этим убедиться, что никакие выводы не должны управлять резистивными
нагрузками. В режиме сна, когда отключается ТактовыйГенератор, все буферы портов в/в тоже отключаются. Этослужит гарантией того, что порты в/в не потребляют тока, когда это не требуется. В некоторых случаях, привыходе из различных режимов сна, порты в/в нуждаются в настройке и только после этого ОНИ будут работать
исправно. Обратитесь к разделу "Разрешение Цифрового Ввода и Режимы Сна" на странице 49 за более детальной
информацией о том, к каким выводам относится вышесказанное. Необходимо помнить, что, если входные буферы
портов в/в включены и входной сигал на каком-либо выводе изменяется или является аналоговым сигналом
достигающим уровня Vcc/2 то входные буферы будут потреблять чрезмерную мощность.
Для выводов, настроенных на работу с аналоговыми сигналами, цифровой входной буфер отключатся. Прианалоговых сигналах, достигающих уровня Vcc/2 на выводе порта в/в, возможно значительное потребление тока,даже в активном режиме вывода. Цифровой входной буфер может быть отключен соответствующими битами,записываемыми в регистр DIDR "Digital Input Disable Register - DIDR”, о чем рассказано на странице 149.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

31

Контроль за Системой и Перезагрузка
После перезагрузки все регистры в/в устанавливаются в их начальное значение, затем, старт и выполнение
программы с ВектораСброса ResetVector. Инструкция, расположенная возле ВектораСброса, может совершить
безусловный переход (RJMP) на подпрограмму, обрабатывающую прерывание по Сбросу. Если в программе непредусмотрено использование прерываний, тогда ВекторПрерывания не используется и код бесконечного
программного цикла располагается на месте ВектораПрерывания. На Рисунке14 показана Логическая Схема
Сброса. В Таблице15 определены электрические параметры Схемы Сброса.

Рисунок 14 Логическая Схема Сброса МКПорты в/в МК немедленно сбрасываются в их значения по-умолчанию, когда активируется Схема Сброса.
Она не требует тактовой синхронизации для запуска. После того, как Схема Сброса выключается, включается
Счетчик Задержки, призванный отдалить время Внутренней Перезагрузки. Это позволяет Тактовому Генератору
стабилизировать свою работу перед тем, как начать выполнение программы. Период задержки у Счетчика
Задержки определяется пользователем через установку битов-перемычек SUT и CKSEL. Выбор периода задержки
описан на странице 22.
Источники Сброса:ATtiny2313 имеет 4 источника сброса
- Сброс по включению. МК постоянно перезагружается, когда уровень Vcc у источника напряжения нижепорогового напряжения VPOT, разрешающего включение МК.
- Внешний Сброс. МК перезагружается, когда на выводе /RESET низкий уровень напряжения присутствует
дольше, чем определенный минимум длительности импульса.
- Сброс от Сторожевого Таймера. МК перезагружается, когда период у СТ истекает, при этом работа Стдолжна
быть разрешена, а прерывания от СТ должны быть запрещены.
- Сброс от BOD-схемы. МК перезагружается, когда значение Vcc ниже установленного порогового напряжения
VBOT, при этом работа BOD-детектора должна быть разрешена.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

32

Таблица 15 – Условия Сброса МКПеременная

VPOT

VRST

tRST

Условия
работы

Параметры
Граница
напряжениядля Сброса поВключению
(нарастающее)Граница
напряжениядля Сброса поВключению
(спадающее)(2)Граница
значения
напряжения навыводе Сброса
Минимальная
длительность
импульса
низкого
уровня на/RESETМинимальное
значение (1)Нормальное
Значение (1)Максимальное
Значение (1)Единицы
измерения

ТА=-40 –
58*С

1,2

Вольт

ТА=-40 –
58*С

1,1

Вольт

Vcc=1,8 –5,50,1 Vcc

Vcc=1,8 –5,50,9 Vcc

Вольт

2,5

мкСек

Примечание:1. Эти значения являются только рекомендованными/предварительными. Действительные значения
представлены в TBD.
2. Схема Сброса по Включению не будет работать, если значение источника напряжения будет ниже VPOT(в режиме спадающего напряжения).

Схема Сброса по Включению - "Power-on Reset"(POR-схема)POR-схема, вырабатывающая импульсы Сброса, расположена на кристалле МК. Уровни напряжения, прикоторых она работает, описаны в Таблице 15. POR-схема активируется всякий раз, когда значения источника Vcc
ниже положенного уровня. POR-схема может быть использована как для сброса МК, так и для контроля источника
Vcc. POR-схема гарантирует сброс системы. После достижения порога нормального напряжения, установленного
POR-схемой, включается Счетчик Задержки, который определяет, как долго МК будет находиться в состоянии
Сброса после того, как Vcc достигло приемлемого уровня. RESET-сигнал будет вырабатываться каждый раз, безвсякой задержки, когда уровень Vcc упадет ниже определенного уровня.

Рисунок 15 – Загрузка МК, RESET привязан к Vcc

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

33

Рисунок 16 – Временная диаграмма Периода Включения МКВнешний Сброс (ВС)ВС возникает при наличии логического нуля на выводе RESET. Если на этом выводе присутствует
низкоуровневый сигнал дольше, чем положено (смотри Таблицу 15), будет сгенерирован Сброс МК, даже, еслиТактовый Генератор не запущен. Сброс не гарантирован, если импульс высокого уровня отсутствует меньше, чемустановлено в Таблице15. Когда сигнал нарастает и достигает номинала VRST, тогда Счетчик Задержки, поистечению своего периода работы tTOUT, позволит включить МК.

Рисунок 17 – Внешний Сброс во время Работы МК

BOD-детектор (Схема Слежения за Питанием)ATtiny2313 имеет встроенный BOD-детектор, это схема, которая следит за состоянием уровня Vcc вреальном времени работы МК, постоянно сравнивая текущее значение Vcc с установленным фиксированным
значением. Уровень установленного фиксированного значения сравнения определяется установкой битовперемычек "BODLEVEL". Уровень фиксированного значения сравнения имеет свой гистерезис, что позволяет
работать BOD-схеме в целом диапазоне значений, гарантируя отсутствие реакции схемы на всплески напряжения.
Гистерезис рассчитывается так: VBOT+ = VBOT + VHYST/2 и VBOT- = VBOT - VHYST/2.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

34

Таблица 16 – Установка BODLEVEL-перемычек (1)Нормальное
Максимальное
Биты-перемычки
Минимальное
напряжение VBOTнапряжение VBOTBODLEVEL 2..0напряжение VBOT111
BOD-схема отключена
110
1,8
101
2,7
100
4,3
011
010
Зарезервировано
001
000

Единицы
измерения
Вольт
Вольт
Вольт
Вольт

Примечание:1. Значение VBOT может быть ниже определенного минимума для некоторых устройств. МК, те, укоторых актуален этот случай, тестируются во время производства. Это гарантирует, что Сброс BODсхемой выполняется до того, как Vcc упадет до уровня напряжения, при котором корректное
выполнение контроллером задач не гарантируется. Тестирование производится с использованием
уровней, устанавливаемых через биты-перемычки BODLEVEL.

Таблица 17 – Характеристики BOD-детектора
Переменная
VHYST

tBOD

Параметры
Гистерезис
BOD-схемы
Минимальная
длительность
импульса, накоторый
реагирует BODсхема.

Минимал.

Нормал.

Максимал.

Единици
измерения

-

50

-

мВ

-

2

-

нСек

Когда работа BOD-схемы разрешена и Vcc уменьшается до значения ниже порога VBOTIN -Рисунок 18- ,немедленно генерируется сброс от BOD-схемы . Когда Vcc увеличивается до уровня выше порога VBOT+ -Рисунок
18- , Счетчик Задержки разрешит МК включиться по истечению периода положенной задержки tTOUT .BOD-схема
определит напряжение Vcc как не удовлетворительное, если уровень Vcc будет ниже положенного уровня втечении периода времени большего, чем tBOD, как показано в Таблице 15.

Рисунок 18 – Сброс BOD-схемой во время работы МКг Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

35

Сброс от Сторожевого Таймера «WDT»Когда время Сторожевого Таймера истекает, он генерирует короткий импульс Сброса, длительностью водин период Тактовой Частоты Системного Генератора. По спадающему фронту этого импульса Сброса начинает
свою работу Таймер Задержки, который считает время tTOUT . За более подробной информаций о работе
Сторожевого Таймера обращайтесь к странице 43.

Рисунок 19 – Сброс от Сторожевого Таймера во время работы МКРегистр Статуса МК "MCUSR"Регистр Статуса МК предоставляет информацию о том, кто выполнил Сброс.
БитЧтение/Запись
Начальные
значения

7

6

5

4

3

2

1

0

-

-

-

-

WDRF

BORF

EXTRF

PORF

Ч

Ч

Ч

Ч

Ч/З

Ч/З

Ч/З

Ч/З

0

Смотри
описание
битовСмотри
описание
битовСмотри
описание
битовСмотри
описание
битовСмотри
описание
битов

0

0

MCUSR

• Bit 3 - WDRF: Watchdog Reset Flag: Флаг сброса от Сторожевого ТаймераБит устанавливается в 1 после сброса от WDT. Бит устанавливается в 0 после выключения питания МКили записью в него логического нуля.
• Bit 2 - BORF: Brown-out Reset Flag: Флаг Сброса от BOD-схемыБит устанавливается в 1 после сброса от BOD-схемы . Бит устанавливается в 0 после выключения питанияМК или записью в него логического нуля.
• Bit 1 - EXTRF: External Reset Flag: Флаг сброса от Внешнего ИсточникаБит устанавливается в 1 после сброса от Внешнего Источника. Бит устанавливается в 0 после выключения
питания МК или записью в него логического нуля.
• Bit 0 - PORF: Power-on Reset Flag: Флаг Сброса по Включению ПитанияБит устанавливается в 1 после сброса по Включению Питания. Бит устанавливается в ноль ТОЛЬКО
записью в него логического нуля.
Чтобы использовать RESET-флаги для идентификации источника Сброса, пользователь должен прочитать,а затем очистить MCUCR-регистр и сделать это надо настолько быстро, как только возможно. Если MCUCRрегистр успевает очищаться до выполнения каких-либо Сбросов то Источник Сброса может быть пойман/вычисленпо установленному флагу.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

36

Встроенный Источник Опорного Напряжения
(ИОН)АTtiny2313 имеет встроенный ИОН. ИОН активно используется BOD-схемой и может быть использован вкачестве сигнала, подаваемого на вход Аналогового Компаратора.

Сигнал Включения ИОНа и Время Включения ИОНаИОН имеет некоторое время запуска, которое может повлиять на приложения, где он будет
использоваться. Время запуска приведено в Таблице 18. В целях энергосбережения, ИОН не всегда находится вовключенном состоянии.
ИОН включается в следующих ситуациях:1. Когда разрешена работа BOD-схемы (путем программирования BODLEVEL-перемычек [2..0])
2. Когда ИОН подключен ко входу Аналогового Компаратора (установкой битов ACBG в Регистре ACSR).
Таким образом, когда BOD-схема отключена, после установки бита ACBG пользователь должен всегда
позволить ИОНу нормально запуститься, прежде, чем использовать Аналоговый Компаратор. Для снижения
энергопотребления в Экономичном Режиме Сна -PowerDown- пользователь может исключить ДВА режима работы,описанных выше, чтобы гарантировать, что ИОН будет выключен до входа в PowerDown-режим.
Таблица 18 – Характеристики Встроенного ИОНа (1)Условия
Минимальное
Переменная
Параметры
работы
значение (1)Диапазон
изменения
Vcc=2.7 В
1
VBGОпорного
25*СНапряжения
Время Запуска
Vcc=2.7 В
tBG
ИОНа
25*С
Ток,
Vcc=2.7 В
IBGпотребляемый
25*С
ИОНом

Нормальное
Значение (1)Максимальное
Значение (1)Единицы
измерения

1.1

1.2

Вольт

40

70

мкСек

15

-

мкА

Примечание:1. Эти значения являются только рекомендованными/предварительными. Действительные значения
представлены в TBD.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

37

Сторожевой Таймер “WDT”
ATtiny2313 имеет на борту Усовершенствованный Сторожевой Таймер (WDT).
Его главными особенностями являются:1. Тактирование от отдельного Встроенного на кристалл Генератора.
2. Три режима работы:2.1 Режим Прерывания
2.2. Режим Сброса Системы
2.3 Режим Прерывания и Сброса Системы
3. Выбираемый Период Отсчета от 16 мСек до 8 Сек
4 Возможность аппаратного включения WDT навсегда – для надежности.

Рисунок 20 – Структура Сторожевого Таймера WDT
Сторожевой Таймер -WDT- , это таймер, считающий такты от отдельного встроенного на кристалл
генератора на 128 кГц. Сторожевой Таймер генерирует Прерывание или Системный Сброс, когда счетчик
достигает заданного значения. В нормальном режиме система, использующая WDT, должна обеспечивать сброс
С.Таймера до того, как его счетчик досчитает до заданного значения. Если система не сбросит С.Таймер, онсгенерирует Прерывание или Сброс Системы.
В Режиме Прерывания WDT генерирует сигнал прерывания, когда счетчик заполняется полностью.
Такое прерывание может быть использовано в качестве пробуждающего сигнала для выхода из режимов сна или вкачестве обычного системного таймера. С.Таймер можно использовать для ограничения времени работы
контроллера, генерируя сигнал прерывания, если контроллер долго не отвечает и не сбрасывает счетчик WDT.
В Режиме Сброса Системы WDT генерирует сигнал Сброса Системы, когда счетчик заполняется
полностью. Обычно этот режим используют для предотвращения зависания системы, в случае выхода кода из подконтроля.
Третий режим, это Режим Прерывания и Сброса Системы, который комбинирует два других режима,первый - генерирует Прерывание, а затем переключается в Режим Сброса Системы. Этот Третий режим может
обеспечить безопасную перезагрузку, позволив сохранить критически важные данные перед тем, как перезагрузить
систему.
Сторожевой Таймер может быть включен навсегда, прошиванием перемычки WDTON, в этом случае WDT
будет работать в режиме Сброса Системы. При прошивании «плавкой» перемычки WDTON, автоматически
выбирается режим Системного Сброса, соответствующий бит WDE получает значение 1 и блокируется, битРежима Прерывания WDIE получает значение 0 и тоже блокируется.
Далее, чтобы гарантировать безопасное выполнение программы, изменения в настройках WDT должны
быть выполнены в определенной последовательности.
Последовательные шаги очищения бита WDE и смены периода подсчета WDTтакие:1. В том же режиме запишите логическую единицу в биты WDCE и WDE. Логическая единица должна
быть записана в бит WDE независимо от предыдущего значения этого бита.
2. В течении следующих четырех тактов Системного Генератора запишите бит WDE единицей и выберите
записью единицы желаемый бит-делитель WDP, но при этом бит WDCE должен быть очищен. Это должно бытьсделано в одном режиме.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

38

Следующий пример кода показывает как на Ассемблере и С-функции включать WDT. Эти примеры
предполагают, что прерывания отключены глобально, так что прерывания не произойдут в течении выполнения
этих функций.

Примечание: 1. Кодовые примеры предполагают, что нужные заголовочные файлы уже включены впрограмму. Примечание: Если работа WDT была разрешена случайно, тогда устройство будет перезагружено,после чего WDT останется во включенном состоянии. Если код программы не предусматривает подпрограммуг Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

39

обработки WDT , это может привести к зацикливанию на внутреннем сбросе МК от WDT по заполнению счетчика
WDT. Чтобы избежать эту ситуацию, программный код должен постоянно очищать флаг WDRF и бит управления
WDE в Подпрограмме Инициализации (начальной настройке МК при включении), даже, если WDT неиспользуется. Следующий пример кода на Ассемблере и языке С показывает, как изменять время заполнения
таймера WDT.

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

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

40

Регистр Управления Сторожевым Таймером
(WDTCSR)
7

6

5

4

3

2

1

0

WDIF

WDIE

WDP3

WDCE

WDE

WDP2

WDP1

WDP0

Ч/З

Ч/З

Ч/З

Ч/З

Ч/З

Ч/З

Ч/З

Ч/З

0

0

0

0

X

0

0

0

Бит
Чтение/Запись
Начальные
значенияWDTCSR• Bit 7 - WDIF: Флаг Прерывания от WDT
Этот бит устанавливается в единицу, когда происходит переполнение таймера WDT, при условии, что
WDT настроен на работу в Режиме Прерывания. Бит WDIF очищается аппаратно, когда выполняется переход насоответствующий вектор прерывания. Также, этот бит можно очистить, записав в него логическую единицу. Еслибит I в регистре SREG установлен, то есть, разрешены прерывания, тогда установка бита WDIE вызывает
прерывание от WDT.
• Bit 6 - WDIE: разрешение Прерывания от WDT
Если записать в этот бит логическую единицу, то при условии, что разрешены прерывания, будет
разрешено генерировать прерывание от WDT. Теперь, в дополнение к этим установкам, если еще очистить бит
WDE в ноль, тогда Сторожевой Таймер будет работать в Режиме Прерывания, и будет вызываться
соответствующее прерывание при переполнении таймера.
Если бит WDE установлен в 1, тогда WDT работает в Третьем Режиме, совмещая Режим Прерывания иРежим Сброса Системы. Первое переполнение таймера WDT приводит к установке бита WDIF. Затем, припереходе на соответствующий вектор прерывания, биты WDIE и WDIF автоматически аппаратно очищаются
(WDT переключается в Режим Сброса Системы). Сброс этих битов полезен, так как позволяет защититься отдействий WDT во время обработки вызванного прерывания. Для того, чтобы WDT и далее оставался в Третьем
режиме, бит WDIE должен устанавливаться после каждого прерывания. Однако, его установка не должна
выполняться в подпрограмме, обрабатывающей прерывание, т.к. это может поставить под угрозу систему в целом.
Ведь, если прерывание не было вызвано до следующего переполнения таймера WDT, то бит WDIE не установилсяи произойдет Сброс Системы.
Таблица 19 – Настройка Сторожевого Таймера
WDTON

WDE

WDIE

Режим

0
0
0

0
0
1

0
1
0

0

1

1

1

X

X

Остановлен
Режим Прерывания
Режим Сброса Системы
Третий режим – Режим
Прерывания и Режим Сброса
Системы
Режим Сброса Системы

Действие при переполнении
таймера WDT
НетВызов Прерывания
СбросСначала Прерывание, а затем
переход в Режим Сброса
Системы
Сброс Системы

• Bit 4 - WDCE: Бит разрешения настройки WDT
Этот бит используется для изменения бита WDE и выбора бита предделителя. Для того, чтобы очистить
бит WDE бит и/или сменить бит предделителя, нужно сначала установить бит WDCE.
Если в WDCE записана лог. единица, то она будет очищена аппаратно, спустя четыре тактовых цикла.
• Bit 3 - WDE: Разрешить WDT сбрасывать систему
Бит WDE игнорируется флагом WDRF в регистре MCUCR. Это означает, что бит разрешения прерывания
WDE устанавливается всегда, когда устанавливается флаг прерывания WDRF. Для того, чтобы очистить бит WDE,нужно сначала очистить флаг WDRF. Этим гарантируется постоянный сброс системы, пока присутствует условие
краха системы и безопасная загрузка системы после исчезновения угрозы.
• Bit 5, 2..0 - WDP3..0: Биты Предделителя WDT 3, 2, 1 и 0Биты WDP3..0 определяют выбор Предделителя (Коэффициента деления), во время работы WDT. Какие
бывают Предделители и соответствующие им периоды переполнения приведены в Таблице 20 на странице 42.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

41

Таблица 20 – Выбор Предделителя (Коэффициента деления) WDTКоличество тактов
WDP3
WDP2
WDP1
WDP0
таймера WDT

Типичное время
для Vcc=5.0 В

0

0

0

0

2 К (2048) тактов

16 мСек

0

0

0

1

4 К (4096) тактов

32 мСек

0

0

1

0

8 К (8192) тактов

64 мСек

0

0

1

1

16 К (16384) тактов

0.125 Сек

0

1

0

0

32 К (32768) тактов

0.25 Сек

0

1

0

1

64 К (65536) тактов

0.5 Сек

0

1

1

0

128 К (131072) тактов

1.0 Сек

0

1

1

1

256 К (262144) тактов

2.0 Сек

1

0

0

0

512 К (524288) тактов

4.0 Сек

1

0

0

1

1024 К (1048576) тактов

8.0 Сек

1

0

1

0

1

0

1

1

1

1

0

0

1

1

0

1

1

1

1

0

1

1

1

1

Зарезервировано

Примечание переводчика: секунда может обозначаться как буква «с» или сокращенно «Сек».

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

42

Прерывания
Этот раздел описывает специфику обработки прерываний, выполненную в ATtiny2313. За общей
информацией о прерываниях в AVR обратитесь к разделу "Сброс и Обработка Прерываний", страница 11.

Векторы Прерывания в ATtiny2313
Таблица 21 – Векторы Прерывания
НомерАдрес вВектора
Программе

Источник
Gрерывания

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

1

0x0000RESET

20x0001INT0

30x0002INT1

40x0003

TIMER1 CAPT

50x0004

TIMER1 COMPA

60x0005

TIMER1 OVFПрерывание на внешнем выводе“RESET”, Сброс по включению
питания, Сброс от BOD- схемы,Сброс от WDT.
Запрос от Внешнего Прерывания навыводе INT0Запрос от Внешнего Прерывания навыводе INT1
Таймер/Счетчик1 в режиме Захвата
Таймер/Счетчик1 в Режиме Сравненияна равенство TCNT1 и OCR1AПереполнение Таймера/Счетчика 1

70x0006

TIMER0 OVF

Переполнение Таймера/Счетчика 080x0007

USART0, RXЧтение через USART0 завершено

90x0008USART0, UDREРегистр Данных UART 0 пуст10

0x0009UART0, TX

110x000АANALOG COMP

120x000В

PCINT

130x000CTIMER1 COMPB

140x000DTIMER0 COMPA

150x000ETIMER0 COMPB

16

0x00F

USI START

170x0010USI OVERFLOW

180x0011

EE READY

190x0012WDT OVERFLOW

Передача через USART0 завершено
Прерывание от Аналогового
Компаратора
Прерывание на выводах PCINT7..0Таймер/Счетчик1 в Режиме Сравненияна равенство TCNT1 и OCR1В
Таймер/Счетчик 0 в Режиме Сравненияна равенство TCNT0 и OCR0A
Таймер/Счетчик0 в Режиме Сравненияна равенство TCNT0 и OCR0ВУсловие Старта(Начала) интерфейса
USIПереполнение USIПамять EEPROM готова к записи(т.е.
выполнены условия для начала записи)Переполнение Таймера в WDT

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

43

Наиболее и общие программные установки для адреса Сброса и Векторов Прерывания в ATtiny2313,
пример на Ассемблере:НомерСтроки
Адрес в(в тексте
командаИмя Метки
Описание Прерывания
Программе
программыон непишется)1
0x0000rjmp
RESET;Прерывание на внешнем выводе;“RESET”, Сброс по включению
;питания, Сброс от BOD- схемы,;Сброс от WDT.
20x0001
rjmp
INT0;Запрос от Внешнего Прерывания на;выводе INT030x0002rjmp
INT1;Запрос от Внешнего Прерывания на;выводе INT1
40x0003rjmp
TIMER1_CAPT;Таймер/Счетчик1 в режиме Захвата
50x0004

rjmp

TIMER1_COMPA

60x0005rjmp

TIMER1_OVF;Таймер/Счетчик1 в Режиме Сравненияна равенство TCNT1 и OCR1A;Переполнение Таймера/Счетчика1

7

0x0006

rjmp

TIMER0_OVF;Переполнение Таймера/Счетчика08

0x0007

rjmp

USART0_RX;Чтение через USART0 завершено

90x0008rjmp

USART0_UDRE;Регистр Данных UART0 пуст10

0x0009rjmp

UART0_TX;Передача через USART0 завершена

11

0x000Аrjmp

ANALOG_COMP

120x000В

rjmp

PCINT

;Прерывание от Аналогового
;Компаратора
;Прерывание на выводах PCINT

130x000C

rjmp

TIMER1_COMPB

140x000D

rjmp

TIMER0_COMPA

150x000E

rjmp

TIMER0_COMPB

16

0x00F

rjmp

USI_START

170x0010rjmp

USI_OVERFLOW

180x0011

rjmp

EE_READY

190x0012

rjmp

WDT_OVERFLOW;Память EEPROM готова к записи(т.е.
;выполнены условия для начала
;записи);Переполнение Таймера в WDTRESET:

ldi r16,low(RAMEND);начало Главной программы

0x0014out SPL,r16

0x0015sei;Установить Указатель Стека
;Программ на Верхний Адрес в SRAM
;Установить Глобальный Бит;Разрешения Прерываний

;Таймер/Счетчик1 в Режиме Сравненияна равенство TCNT1 и OCR1B;Таймер/Счетчик0 в Режиме Сравненияна равенство TCNT0 и OCR0A;Таймер/Счетчик0 в Режиме Сравненияна соответствие B;Условие Старта(Начала) интерфейса
;USI;Переполнение USI; Дальнейший текст в программе
0x00130x0016и такдалее…

………….

…………

…………………….

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

44

I/O-Порты (Порты ввода/вывода)Вступление
Все AVR-порты могут работать с функциями Чтения-Модификации-Записи значений на их выводах, еслиони используются как Общие Цифровые I/O-порты. Это значит, что направление ввода/вывода информации может
быть изменено на каждом отдельном выводе, без риска неумышленного изменения направления ввода/вывода удругого вывода порта, также, имеется возможность проверки наличия какого-либо логического уровня на каждом
отдельном выводе путем применения SBI- и CBI-инструкций. Та же самая ситуация и при установке какого-либологического уровня на отдельном выводе (если он конфигурируется как Выход) или при подключении/отключении
Подтягивающих Резисторов (если вывод настраивается как Вход). Все токовые буферы выводов имеют
идентичные характеристики и могут поглощать или обеспечивать в нагрузке относительно большой ток. Драйверы
выводов являются достаточно сильными, чтобы обеспечить управление светодиодными индикаторами. Все выводы
портов имеют индивидуально подключаемые подтягивающие резисторы, которые, в свою очередь, ужеподключены к источнику Vcc. Все I/O-выводы имеют защитные диоды, подключенные к Vcc и GND, это показанона Рисунке 21. Обратитесь к разделу "Электрические Характеристики" на странице 176 для ознакомления с полным
списком параметров.

Рисунок 21 – Схема I/O-портовВсе Регистры и Биты в этом разделе имеют только общее описание. Строчная буква "х" представляет
собой номер (точнее Имя порта: А,В,С и т.д.), а строчная буква "n" представляет собой номер Бита Порта. Однако,при определении Регистров и Выводов, в тексте программы должны быть использованы их настоящие имена.
Например, "PORTB3" это Бит 3 в порте В (PortB); здесь используется общий вид: "PORTxn". О физическом
расположении Регистров ввода/вывода и их Битов рассказано в разделе "Описание Регистров I/O-портов" настранице 57.
Для каждого I/O-порта имеется три адресуемой области памяти, которая представляет собой :1. Регистр
Данных - "PORTx"; 2. Регистр для настройки Направления Данных - "DDRx"; 3. Бит-"PINx"; Бит-"PINx"
разрешается только читать, а вот Регистр Данных - "PORTx" и Регистр для настройки Направления Данных "DDRx" может быть и прочитан и записан. Однако, запись логической единицы в Бит-"PINx" дает в результате
переключение соответствующего бита в Регистре Данных "PORTx". Плюс ко всему, имеется возможность
отключения всех Подтягивающих Резисторов на всех выводах всех портов только лишь одной установкой битаPUD в регистре MCUCR.
Как использовать I/O-порты для Общего Цифрового Ввода/Вывода описано в разделе "I/O-порты дляОбщего Цифрового Ввода/Вывода" на странице 46. Большинство выводов портов совмещают альтернативные
функции, обеспечивая работу периферийных устройств МК. О том, как каждая альтернативная функция
взаимодействует со своим выводом, написано в разделе "Альтернативные Функции Портов" на странице 50.
Обратитесь к разделам, описывающим конкретные модули МК, для получения полной информации обальтернативных функциях.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

45

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

I/O-порты для Общего Цифрового Ввода/ВыводаЭти параллельные порты являются двунаправленными. На Рисунке 22 приведена функциональная схема
одного I/O-вывода, который здесь назван обобщающим именем Pxn.

PxnРисунок 22 – Вывод для Общего Цифрового Ввода/Вывода
Примечание: 1. Обозначения WRx, WPx, WDx, RRx, RPx, и RDx являются общими для вех выводов впределах одного порта, а clkI/O, SLEEP, и PUD являются общими для всех портов.

Конфигурирование Выводов
Каждый порт имеет три вида битов, каждый бит относится к своему регистру; виды битов: DDxn, PORTxn,
и PINxn биты. Как рассказано в разделе "Описание Регистров I/O-портов" на странице 57, DDxn биты относятся крегистру DDRx, биты PORTxn относятся к регистру PORTx, а биты PINxn относятся к регистру PINx.
Биты DDxn регистра DDRx определяют направление передачи данных через выводы порта. Если DDxn битзаписан единицей, тогда вывод Pxn сконфигурирован как Выход. А, если DDxn бит записан нулем, тогда вывод Pxnсконфигурирован как Вход.
Если в биты PORTxn записать логическую единицу, когда выводы сконфигурированы как Входы, то квыводам подключатся подтягивающие резисторы. Для отключения этих резисторов, в биты PORTxn надо записать
логические нули или же сконфигурировать выводы как Выходы. Выводы любого порта будут находиться в третьем
состоянии, если произойдет сброс МК или же, если не будет работать Тактовый Генератор .
Если же в биты PORTXn записать логическую единицу, когда выводы сконфигурированы как Выходы, тона выводах будет установлен высокий логический уровень. А, если в биты PORTxn записать логические нули,когда выводы сконфигурированы как Выходы, то на каждом выводе будет низкий логический уровень.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

46

Настройка Выводов
Запись логической единицы в бит PINxn меняет значение в регистре PORTxn, в зависимости от битов
DDRxn. Обратите внимание, что инструкция SBI может устанавливать единицу только в один бит определенного
порта.

Переключение между состоянием Ввода и Вывода
Возможны такие состояния:№1. "Третье" или "Z-состояние", когда ({DDxn, PORTxn} = 0b00), выводы являются Входами и имеют
большое входное сопротивление;№2. Выводы являются Выходами. На Выходах установлены высокие логические уровни, когда ({DDxn,
PORTxn} = 0b11);№3. Состояние, когда выводы являются Входами и к ним подключаются подтягивающие резисторы, такая
установка битов: {DDxn, PORTxn} = 0b01) ;№4. Состояние, когда выводы являются Выходами и на них установлены низкие логические уровни, в этомслучае биты настраиваются так: ({DDxn, PORTxn} = 0b10);Обычно состояние, когда выводы являются Входами и к ним подключаются подтягивающие резисторы чаще всего
приемлемо в большинстве приложений, т.к. к выводам часто подключают внешние сопротивления с большими
номиналами и притягивают их к Vcc. Если, все-таки, этот случай не подходит, то подтягивающие резисторы
можно отключить установкой PUD-бита в Регистре MCUCR.
При переходе из Третьего состояния №1 в состояние №2, надо использовать состояние №3 или №4 вкачестве промежуточного.
При переключении между состояниями №3 и №4 возникают одни и те же проблемы. Тут пользователь
должен использовать остальные состояния (какое-нибудь одно) №1 или №2 в качестве промежуточных.
В Таблице 22 показаны биты для настройки портов и значений на них.
Таблица 22 – Конфигурация выводов параллельных портов
PUD-бит
ПортPull-up-резисторы
DDxn PORTxn
Комментарий(в регистре
I/O(подтягивающие)MCUCR)«Третье Состояние»
0
0
X
Вход
Нет
(Z-состояние)Pxn-вывод будет источником тока, если его
0
1
0
Вход
Да
нагрузка подключена на землю
«Третье Состояние»
0
1
1
Вход
Нет
(Z-состояние)На Выходе низкий логический уровень
1
0
X
Выход
Нет
(вывод является нагрузкой)На Выходе высокий логический уровень
1
1
X
Выход
Нет
(вывод является источником тока)Чтение Значений на Выводах
Независимо от настроек регистров DDxn, выводы портов могут быть прочитаны через биты PINx. Какпоказано на Рисунке 22, вывод PINxn вместе с Фиксатором образуют Синхронизатор. Это помогает избежать
нестабильности, если уровень сигнала на выводе изменяется рядом с фронтом импульса тактовой частоты, однако,это, также, вносит дополнительную задержку. На Рисунке 23 показаны Временные Диаграммы процесса
синхронизации при чтении значения на внешнем выводе. Максимальная и Минимальная задержка обозначены как
tpd,max и tpd,min соответственно.

Рисунок 23 - Временные Диаграммы процесса синхронизации при чтении значения на внешнем выводег Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

47

Здесь(на Рисунке 23) рассматривается тактовый период, начинающийся после первого заднего фронта
тактовой частоты (первая пунктирная вертикальная линия). Фиксатор не работает, если уровень тактового
импульса является низким, когда тактовый уровень становится высоким, Фиксатор становится "прозрачным" ипропускает сигнал с вывода, этот процесс показан в заштрихованной области на Рисунке 23. Значение сигнала навыводе является недоступным вблизи заднего фронта тактового импульса. Значение на выводе читается в бит
PINxn только, когда уровень тактового импульса начинает нарастать (по переднему фронту). Как показано
стрелками, обозначающими временную задержку, уровень сигнала на выводе, который надо прочитать, может
быть задержан от 0,5 до 1,5 периода тактовой частоты, и только потом значение сигнала на выводе будет доступнодля бита PINxn, время задержки зависит от того, как скоро появится передний фронт тактового импульса.
При чтении программой пользователя значения на выводе МК необходимо использовать (вставлять) nopинструкции в текст программы так, как это показано на Рисунке 24. Инструкция "out" устанавливает сигнал
Фиксатора на передний фронт тактовой частоты. В этом случае время задержки tpd через Синхронизатор будет
равно одному периоду тактовой частоты.

Рисунок 24 – Синхронизация при чтении программой значения на выводе МКг Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

48

Следующие примеры кода показывают, как настроить порт В следующим образом:выводы РВ0 и РВ1 – это Выходы с высоким уровнем сигнала на них;выводы РВ2 и РВ3 – это Выходы с низким уровнем сигнала на них;выводы РВ4 и РВ5 – это Входы в Третьем высокоимпедансном состоянии (Z-состоянии);выводы РВ6 и РВ7 – это Входы с подключенными подтягивающими к Vcc резисторами;Примечание: 1.
В ассемблерном коде Временные Регистры используются для минимизации времени настройки выводов
0, 1, 6 и 7, пока биты направления ввода/вывода не установлены должным образом; выводы 2 и 3определяются как Выходы с низким уровнем сигнала на них, а выводы 0 и 1 определяются как Выходы свысоким уровнем сигнала на них.

Разрешение Цифрового Ввода и Режимы СнаКак показано на Рисунке 22, входной цифровой сигнал может быть закорочен на GND прямо перед входом
Триггера Шмитта. Сигнал, обозначенный на рисунке как SLEEP, посылается SLEEP-контроллером при входе МКв Режим Экономии Энергии или Режим Сна для того, чтобы можно было избежать большого потребления энергиина определенных выводах, если сигнал на них присутствует, но не используется или, если уровень аналогового
сигнала достигает амплитуды Vcc/2.
Режим Сна не влияет и не отключает те выводы, которые используются для Внешних Прерываний. Есливыводы не настроены на прием Внешних Прерываний, то для этих выводов Режим Сна (SLEEP-режим) можно
применить всегда. SLEEP-режим, так же не влияет на те выводы, которые настроены на выполнение
альтернативных функций, что описано в разделе "Альтернативные Функции Портов" на странице 50.
Если на выводе, настроенном на прием внешнего прерывания (настраивать можно в режим "Прерываниепо нарастающему фронту", "Прерывание по спадающему фронту" или "Прерывание при смене уровня"),присутствует лог. единица, в то время, когда Внешние Прерывания запрещены, то при выходе извышеупомянутого SLEEP-режима будет установлен Флаг (бит) соответствующего Внешнего Прерывания, так как,изменение сигнала на этом выводе фиксируется в SLEEP-режиме и при выходе из НЕГО воспроизводится заново.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

49

Альтернативные Функции Портов
Большинство выводов портов выполняют альтернативные функции помимо основной функции
ввода/вывода цифровой информации. На Рисунке 25 показано, как Сигналы Управления, упрощенно показанные наРисунке 22, могут быть проигнорированы Альтернативными Функциями. Игнорирование Сигналов Управления
нельзя устанавливать на все выводы порта, однако Рисунок 25 является общим описанием, применимым ко всемвыводам портов микроконтроллеров семейства AVR.

Сигнал
PUOExn:Сигнал
PUOVxn:Сигнал
DDOExn:Сигнал
DDOVxn:СигналPVOExn:СигналPVOVxn:Сигнал
DIEOExn:Сигнал
DIEOVxn:СигналSLEEP:

Для Pxn – Разрешено Игнорирование настроек
Подтягивающих Резисторов
Для Pxn – Сигнал, включающий Игнорирование
Подтягивающих Резисторов
Для Pxn – Разрешено Игнорирование настроек Направления
в/в Данных
Для Pxn – Сигнал, включающий Игнорирование настроек
Направления в/в Данных
Для Pxn – Разрешено Игнорирование выходного Значенияна Выводе порта
Для Pxn – Сигнал, включающий Игнорирование выходного
Значения на Выводе порта
Для Pxn – Разрешено Игнорирование того, что Вывод
настроен как цифровой входДля Pxn – Сигнал, включающий Игнорирование того, чтоВывод настроен как цифровой входСигнал WDx:Запрет на все Подтягивающие
Резисторы
Запись в DDRxСигнал RDx:Чтение из DDRx

Для Pxn – Сигнал Управления Режимом Сна

DIxn:Сигнал
PTOExn:Для Pxn – Разрешение Инвертирования значения на выводе

AIOxn:

Бит PUD:Сигнал RRx:Чтение Регистра PORTx

Сигнал WRx:Запись в Регистр PORTx

Сигнал RPx:Чтение Вывода PINx

Сигнал WPx:Запись в Вывод PINx

clkI/O:Такты для системы в/вВывод Порта выполняет
Альтернативную функцию
Цифрового ввода
Вывод Порта выполняет
Альтернативную функцию
Аналогового ввода/вывода

Рисунок 25 – Альтернативные Функции Портов(1)Примечание переводчика к Рисунку 25:
1. Pxn: P – это Вывод; x – Имя Порта; n – номер Вывода;2. DATABUS – Шина Данных;Примечание: 1. Обозначения WRx, WPx, WDx, RRx, RPx, и RDx являются общими для вех выводов впределах одного порта, а clkI/O, SLEEP, и PUD являются общими для всех портов.
Все остальные сигналы являются уникальными для каждого вывода.
В Таблицу 23 сведены и описаны все Сигналы Игнорирования. Индексация Портов и Выводов, показаннаяна Рисунке 25, не используется в Таблице 23. Все Сигналы Игнорирования вырабатываются внутри каждого
модуля, имеющего Альтернативную Функцию.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

50

Таблица 23 – Общее описание Игнорирующих Сигналов для Альтернативных Функций
Название Сигнала
Полное Имя Сигнала
Описание Сигнала
Если этот Сигнал установлен, тогда Подтягивающие
Pull-up Override Enable Резисторы под контролем сигнала PUOV. Если PUOE
Разрешено Игнорирование
отсутствует,то подтягивающие резисторы могут бытьPUOE
настроек Подтягивающих
включены, естественно, если загружены
Резисторов
соответствующие биты в соответствующие регистры:DDxn, PORTxn и PUD)Если PUOE сигнал установлен, тогда Подтягивающие
Pull-up Override Value - Сигнал,Резисторы разрешены/запрещены, если PUOV
PUOVвключающий Игнорирование
присутствует/отсутствует, независимо от настроек
Подтягивающих Резисторов
DDxn, PORTxn и PUD бита.
Если этот Сигнал присутствует, то функционирование
Data Direction Override Enable - Драйвера Выхода (вывода) находится под контролем
Разрешено Игнорирование
DDOE
сигнала DDOV. Если DDOE отсутствует, то работа
настроек Направления в/вДрайвера Выхода может быть разрешена установкой
Данных
соответствующего бита в Регистре DDxn.
Data Direction Override Value Если сигнал DDOE присутствует, то Драйвер Выхода
Сигнал, включающий
включен/выключен, если DDOVDDOVИгнорирование настроек
присутствует/отсутствует независимо от настроек
Направления в/в Данных
DDxn Регистра.
Если этот сигнал присутствует, и Драйвер Выхода
Port Value Override Enable включен, то значение в порте контролируется
Разрешено Игнорирование
PVOE
сигналом PVOV. Если PVOE очищен, а Драйвер
выходного Значения на Выводе Выхода по-прежнему включен, то значение на выводе
портапорта будет зависеть от битов PORTxn.
Port Value Override Value –Если присутствует сигнал PVOE, то значение наСигнал, включающий
PVOVвыводе порта равно значению PVOV независимо отИгнорирование выходного
настроек битов PORTxn.
Значения на Выводе порта
Port Toggle Override Enable –Если присутствует сигнал PTOE, то бит в PORTxn
PTOEРазрешение Инвертирования
инвертируется.
значения на выводе
Если этот сигнал установлен, то Разрешение
Digital Input Enable OverrideЦифрового Ввода контролируется сигналом DIEOV.
Enable – Разрешено
Если DIEOE отсутствует, то Разрешение Цифрового
DIEOEИгнорирование того, чтоВводаинформации определяется тем, в каком режиме
Вывод настроен как цифровой
находится
МК – в Нормальном или каком-нибудь
входрежиме сна.
Digital Input Enable OverrideЕсли сигнал DIEOE присутствует, то Цифровой ВводValue – Сигнал, включающий
разрешен/запрещен, если сигнал DIEOVDIEOVИгнорирование того, чтоприсутствует/отсутствует
независимо от того, в каком
Вывод настроен как цифровой
режиме работает МК – в режиме сна или Нормальном.
входЭта функция Цифрового Ввода является
альтернативной функцией. Как показано на Рисунке
25, этот сигнал подается на выход Триггера Шмитта
перед Синхронизатором. Если Цифровой ВводDI
Digital Input – Цифровой Вводиспользуется в качестве источника тактирования, томодуль, имеющий Альтернативную Функцию, будет
использовать этот источник для собственной
синхронизации.
Функция AIO так же является Альтернативной.
Сигнал
подводится/снимается непосредственно с
AIOАналоговый ввод/вывод
вывода, этот вывод может использоваться какдвунаправленный вывод.
Следующие подразделы кратко описывают Альтернативные Функции для каждого порта и описывают
соответствие между Игнорирующими Сигналами и Альтернативными Функциями. Обратитесь к разделам,описывающим Альтернативные Функции, за более детальной информацией.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

51

MCUCR – Регистр Управления МК
7

6

5

4

3

2

1

0

PUD

SM1

SE

SM0

ISC11

ISC10

ISC01

ISC00

Бит

MCUCR

Чтение/
Ч/З
Ч/З
Ч/З
Ч/З
Ч/З
Ч/З
Ч/З
Ч/З
Запись
Начальные
0
0
0
0
X
0
0
0
значения
• Bit 7 – PUD: Подтягивающие Резисторы Запрещены
Если этот бит записан лог. единицей, то Подтягивающие Резисторы I/O портов запрещены, даже, еслиРегистры DDxn и PORTxn настроены и разрешают ИХ включить ({DDxn, PORTxn} = 0b01). Обратитесь кразделу «Конфигурирование Выводов» на странице 46 за более подробной информацией об этом.

Альтернативные Функции выводов Порта А«PORTA»Альтернативные Функции выводов ПортаА «PORTA»показаны в Таблице 24Таблица 24 – Альтернативные Функции выводов ПортаА «PORTA»
Выводы ПортаА
Альтернативные ФункцииРА2
RESET, dW
РА1
XTAL2
РА0
XTAL1

Альтернативные Функции выводов ПортаВ
«PORTВ»Альтернативные Функции выводов Порта В «PORTA»показаны в Таблице 25Таблица 25 – Альтернативные Функции выводов Порта В «PORTВ»Выводы ПортаВ
Альтернативные Функции
РВ7
USCK/SCL/PCINT7
РВ6
DO/PCINT6
РВ5
DI/SDA/PCINT5
РВ4
OC1B/PCINT4
РВ3
OC1A/PCINT3
РВ2
OC0A/PCINT2
РВ1
AIN1/PCINT1
РВ0
AIN0/PCINT0Альтернативные Выводы сконфигурированы так, как показано далее:• USCK/SCL/PCINT7 – Порт В, Бит 7Альтернативная Функция USCK: В трехпроводном режиме вывод является синхронизирующим дляУниверсального Последовательного Интерфейса (USI).
Альтернативная Функция SCL:В двухпроводном режиме: вывод является синхронизирующим длядвухпроводного режима интерфейса USI.
Альтернативная Функция PCINT7: Вывод, устанавливается в качестве источника прерывания. Вывод
РВ7 может служить источником Внешнего Прерывания.
• DO/PCINT6 – Порт В, Бит 6Альтернативная Функция DO: В трехпроводном режиме: это вывод Выходных Данных из интерфейса
USI. В трехпроводном режиме Выходные Данные игнорируют значение на выводе PORTB6 и передаютсяв порт, если бит направления данных DDB6 установлен в 1. Однако, бит PORTB6 все еще контролирует
настройку Подтягивающих Резисторов, если вывод является Входом, а в бит PORTB6 загружена 1.
Альтернативная Функция PCINT6: Вывод, устанавливается в качестве источника прерывания. Вывод
РВ6 может служить источником Внешнего Прерывания.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

52

• DI/SDA/PCINT5 – Порт В, Бит 5Альтернативная Функция DI: В трехпроводном режиме вывод является Входом для Данных USIинтерфейса. В этом режиме нормальные функции порта не игнорируются, поэтому вывод должен бытьсконфигурирован как Вход.
Альтернативная Функция SDA: В двухпроводном режиме вывод используется для работы с данными
USI-интерфейса.
Альтернативная Функция PCINT5: Вывод, устанавливается в качестве источника прерывания. Вывод
РВ5 может служить источником Внешнего Прерывания.
• OC1B/PCINT4 – Порт В, Бит 4Альтернативная Функция OC1B: Этот ножка служит для вывода данных при работе в Режиме
Совпадения В: Ножка РВ4 может служить внешним выходом для Таймера/Счетчика 1, работающего вРежиме Совпадения В. Для того, чтобы воспользоваться этой функцией, этот вывод МК нужно настроитькак Выход (загрузив в DDB6 число 1.
Альтернативная Функция PCINT4: Вывод, устанавливается в качестве источника прерывания. Вывод
РВ4 может служить источником Внешнего Прерывания.
• OC1A/PCINT3 – Порт В, Бит 3Альтернативная Функция OC1А: Этот ножка служит для вывода данных при работе в Режиме
Совпадения В: Ножка РВ3 может служить внешним выходом для Таймера/Счетчика 1, работающего вРежиме Совпадения А. Для того, чтобы воспользоваться этой функцией, этот вывод МК нужно настроитькак Выход (загрузив в DDB3 число 1).
Эта ножка, также, используется как выход, если Таймер/Счетчик 1 работает в режиме ШИМ.
Альтернативная Функция PCINT3: Вывод, устанавливается в качестве источника прерывания. Вывод
РВ3 может служить источником Внешнего Прерывания.
• OC0A/PCINT2 – Порт В, Бит 2Альтернативная Функция OC0А: Этот ножка служит для вывода данных при работе в Режиме
Совпадения В: Ножка РВ2 может служить внешним выходом для Таймера/Счетчика 0, работающего вРежиме Совпадения А. Для того, чтобы воспользоваться этой функцией, этот вывод МК нужно настроитькак Выход (загрузив в DDB2 число 1).
Эта ножка, также, используется как выход, если Таймер/Счетчик 0 работает в режиме ШИМ.
Альтернативная Функция PCINT2: Вывод, устанавливается в качестве источника прерывания. Вывод
РВ2 может служить источником Внешнего Прерывания.
• AIN1/PCINT1 – Порт В, Бит 1Альтернативная Функция AIN1: Выполняя эту функцию, эта ножка является Инвертирующим Входом
Аналогового Компаратора. Чтобы избежать вмешательства в работу Аналогового Компаратора Функцией
Цифрового ввода, необходимо настроить этот вывод как вход с отключенным подтягивающим
резистором.
Альтернативная Функция PCINT1: Вывод, устанавливается в качестве источника прерывания. Вывод
РВ1 может служить источником Внешнего Прерывания.
• AIN0/PCINT0 – Порт В, Бит 0Альтернативная Функция AIN0: Выполняя эту функцию, эта ножка является НеИнвертирующим
Входом Аналогового Компаратора. Чтобы избежать вмешательства в работу Аналогового Компаратора
Функцией Цифрового ввода, необходимо настроить этот вывод как вход с отключенным подтягивающим
резистором.
Альтернативная Функция PCINT0: Вывод, устанавливается в качестве источника прерывания. Вывод
РВ0 может служить источником Внешнего Прерывания.
В Таблицах 26 и 27 показано, какая существует связь между Альтернативными Функциями Порта В иИгнорирующими Сигналами, которые показаны на Рисунке 25 (страница 50). Сигналы SPI MSTR INPUT и SPISLAVE OUTPUT составляют один MISO-сигнал в то время, как сигнал MOSI делится на сигнал SPI MSTROUTPUT и сигнал SPI SLAVE INPUT.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

53

Таблица 26 – Игнорирующие Сигналы для Альтернативных Функций выводов PB7…PB4Имя
PB7/USCK/SCL/
PB6/DO/PB5/SDA/DI/СигналаPCINT7PCINT6
PCINT5

PB4/OC1B/
PCINT4

PUOE

0

0

0

0

PUOV

0

0

0

0

DDOE

USI_TWO_WIRE

0

USI_TWO_WIRE

0

DDOV

(USI_SCL_HOLD+PORTB7 .DDB7)

0( SDA + PORTB5 ).
.
DDRB5)0PVOE(USI_TWO_WIRE.DDRB7)

USI_TREE_WIRE(USI_TWO_WIRE.DDRB5)

OC1B_PVOE

PVOV

0

DO

0

OC1B_PVOVPTOEUSI_PTOE

0

0

0

DIEOE

(PCINT7.PCIE+USISIE)(PCINT6.PCIE)(PCINT5.PCIE)+USISIE(PCINT4.PCIE)

DIEOV

1

1

1

1

DI

PCINT7 INPUTUSCK INPUTSCL INPUTAIO-PCINT6 INPUT-

PCINT5 INPUTSDA INPUTDI INPUTPCINT4 INPUT--USI_TWO_WIRE – двухпроводной режим USI;USI_TREE_WIRE – трехпроводной режим USI;HOLD – удержание;Таблица 27 – Игнорирующие Сигналы для Альтернативных Функций выводов PB3…PB0
Имя
PB3/OC1A/PB2/OC0A/
PB1/AIN1/СигналаPCINT3
PCINT2
PCINT1

PB0/AIN0/
PCINT0

PUOE

0

0

0

0

PUOV

0

0

0

0

DDOE

0

0

0

0

DDOV

0

0

0

0

PVOE

OC1A_PVOE

OC0A_PVOE

0

0

PVOV

OC1A_PVOV

OC0A_PVOV

0

0

PTOE

0

0

0

0

DIEOE

(PCINT3 PCIE)(PCINT2 PCIE)(PCINT1 PCIE)(PCINT0 PCIE)

DIEOV

1

1

1

1

DI

PCINT7 INPUT

PCINT6 INPUT

PCINT5 INPUT

PCINT4 INPUT

AIO

-

-

AIN1

AIN0

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

54

Альтернативные Функции Порта DАльтернативные Функции выводов Порта D «PORTD»показаны в Таблице 28Таблица 28 – Альтернативные Функции выводов Порта DВыводы Порта D
PD6
PD5
PD4
PD3
PD2
PD1
PD0

Альтернативные ФункцииICP
OC0B/T1
T0
INT1
INT0/XCK/CKOUT
TXDRXD• ICP – Порт D, Бит 6Альтернативная Функция ICP: Эта ножка является Входом для Захвата Таймером/Счетчиком1.
• OC0B/T1 – Порт D, Бит 5Альтернативная Функция OC0B: Этот ножка служит для вывода данных при работе в Режиме
Совпадения В: Ножка РВ2 может служить внешним выходом для Таймера/Счетчика 0, работающего вРежиме Совпадения B. Для того, чтобы воспользоваться этой функцией, этот вывод МК нужно настроитькак Выход (загрузив в DDB5 бит 1).
Эта ножка, также, используется как выход, если Таймер/Счетчик 0 работает в режиме ШИМ.
Альтернативная Функция T1: Внешний Тактовый Вход Таймера/Счетчика1 включается загрузкой «1» вбиты CS02 и CS01в Регистр Управления Таймером/Счетчиком1 – «TCCR1»• T0 – Порт D, Бит 4Альтернативная Функция T0: Внешний Тактовый Вход Таймера/Счетчика0 включается загрузкой «1» вбиты CS02 и CS01в Регистр Управления Таймером/Счетчиком0 – «TCCR0»• INT1 – Порт D, Бит 3Альтернативная Функция INT1 Источник Внешнего Прерывания 1. Вывод PD3 может служить какИсточник Внешнего Прерывания МК.
• INT0/XCK/CKOUT – Порт D, Бит 2Альтернативная Функция INT0: Источник Внешнего Прерывания 0. Вывод PD2 может служить какИсточник Внешнего Прерывания МК.
Альтернативная Функция XCK: Синхронный Вывод, используется для синхронизации интерфейса
USART, используется только в Синхронном Режиме.
Альтернативная Функция CKOUT: Ножка используется для вывода Тактовой Частоты МК.
• TXD – Порт D, Бит 1Альтернативная Функция TXD: Ножка используется для передачи данных через интерфейс UART.
• RXD – Порт D, Бит 0Альтернативная Функция RXD: Ножка используется для приема данных через интерфейс UART.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

55

В Таблицах 29 и 30 показано, какая существует связь между Альтернативными Функциями Порта D иИгнорирующими Сигналами, которые показаны на Рисунке 25 (страница 50).
Таблица 29 - Игнорирующие Сигналы для Альтернативных Функций выводов PD7…PD4
Название Сигнала
PD6/ICP
PD5/OC1B/T1
PD4/T0
PUOE
0
0
0
PUOV
0
0
0
DDOE
0
0
0
DDOV
0
0
0
PVOE
0
OC1B_PVOE0PVOV0OC1B_PVOV
0
PTOE
0
0
0
DIEOE
ICP разрешен
T1 разрешен
T0 разрешен
DIEOV
1
1
1
DI
ICP – входT1 – вход
T0 – вход
AIO
AIN1

Таблица 30 - Игнорирующие Сигналы для Альтернативных Функций выводов PD3…PD0Название Сигнала
PD3/INT1
PD2/INT0B/XCK/CKOUT
PD1/TXDPUOE
00
TXD_OE
0
0
0
PUOV
DDOE
DDOV
PVOE
PVOV
PTOE

0
0

DIEOE

INT1 разрешен

DIEOV

1
INT1 настроенкак Вход-DI
AIO

г Шахты
ЮРГУЭС

0
0
0
0
0

XCK_PVOEXCKO_PVOV0
INT0 разрешен /XCK разрешен как Вход1
INT0 как Вход/XCK как Вход-TXD_OE1
TXD_OETXD_PVOV0

PD0/RXDRXD_OEPORD0 . PUD
RXD_EN
0
0
0
0

0

0

0

0

0

RXD как Вход--iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

56

Описание Регистров для I/O-портов
Регистр Порт А – «PORTA»
БитЧтение/Запись
Начальные
значения

7

6

5

4

3

2

1

0

-

-

-

-

-

PORTA2PORTA1PORTA0

Ч

Ч

Ч

Ч

Ч

Ч/З

Ч/З

Ч/З

0

0

0

0

0

0

0

0

Регистр устанавливающий
данных Порта А – «DDRA»БитЧтение/Запись
Начальные
значения

направление

7

6

5

4

3

2

1

0

-

-

-

-

-

DDA2

DDA1

DDA0

Ч

Ч

Ч

Ч

Ч

Ч/З

Ч/З

Ч/З

0

0

0

0

0

0

0

0

PORTA

в/в

DDRA

Адрес чтения данных с выводов
Порта А – «PINA»
БитЧтение/Запись
Начальные
значения

7

6

5

4

3

2

1

0

-

-

-

-

-

PINA2

PINA1

PINA0

Ч

Ч

Ч

Ч

Ч

Ч/З

Ч/З

Ч/З

неопр.

неопр.

неопр.

неопр.

неопр.

неопр.

неопр.

неопр.

PINA

Регистр Данных Порта B – «PORTB»БитЧтение/Запись
Начальные
значения

7

6

5

4

3

2

1

0

PORTB7PORTB6PORTB5PORTB4PORTB3PORTB2PORTB1PORTB0

Ч/З

Ч/З

Ч/З

Ч/З

Ч/З

Ч/З

Ч/З

Ч/З

0

0

0

0

0

0

0

0

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

PORTB

Лист

57

Регистр устанавливающий
данных Порта B – «DDRB»
7

6

5

4

3

2

1

0

DDB7

DDB6

DDB5

DDB4

DDB3

DDB2

DDB1

DDB0

Ч/З

Ч/З

Ч/З

Ч/З

Ч/З

Ч/З

Ч/З

Ч/З

0

0

0

0

0

0

0

0

Бит
Чтение/Запись
Начальные
значения

направление

в/в
DDRB

Адрес чтения данных с выводов
Порта B – «PINB»
7

6

5

4

3

2

1

0

PINB7

PINB6

PINB5

PINB4

PINB3

PINB2

PINB1

PINB0

Ч/З

Ч/З

Ч/З

Ч/З

Ч/З

Ч/З

Ч/З

Ч/З

неопр.

неопр.

неопр.

неопр.

неопр.

неопр.

неопр.

неопр.

БитЧтение/Запись
Начальные
значения

PINB

Регистр Данных Порта D – «PORTD»БитЧтение/Запись
Начальные
значения

7

6

5

4

3

2

1

0

---

PORTD6

PORTD5PORTD4PORTD3PORTD2PORTD1PORTD0

Ч

Ч/З

Ч/З

Ч/З

Ч/З

Ч/З

Ч/З

Ч/З

0

0

0

0

0

0

0

0

Регистр устанавливающий
данных Порта D – «DDRD»БитЧтение/Запись
Начальные
значения

направление

7

6

5

4

3

2

1

0

---

DDD6

DDD5

DDD4

DDD3

DDD2

DDD1

DDD0

Ч

Ч/З

Ч/З

Ч/З

Ч/З

Ч/З

Ч/З

Ч/З

0

0

0

0

0

0

0

0

PORTD

в/в
DDRD

Адрес чтения данных с выводов
Порта D – «PIND»
БитЧтение/Запись
Начальные
значения

7

6

5

4

3

2

1

0

---

PIND6

PIND5

PIND4

PIND3

PIND2

PIND1

PIND0

Ч

Ч/З

Ч/З

Ч/З

Ч/З

Ч/З

Ч/З

Ч/З

неопр.

неопр.

неопр.

неопр.

неопр.

неопр.

неопр.

неопр.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

PIND

Лист

58

Внешние Прерывания
Внешние прерывания вызываются выводами INT0 и INT1 или любым из выводов PCINT7..0. Заметьте, что,если прерывание РАЗРЕШЕНО, то ОНО будет вызвано даже, если соответствующий вывод настроен как Выход.
Это обеспечивает возможность вызывать прерывание программным способом. Регистр Управления "PCMSK"определяет, какой из выводов PCINT7..0 может вызывать прерывание. Выводы PCINT7..0 работают независимо отТактового Генератора МК, т.е. их работа с ним не синхронизируется, а это значит прерывание на этих выводах
может быть использовано для пробуждения из разных режимов сна, кроме Холостого-«Idle».
Прерывания на выводах INT0 и INT1 могут быть вызваны Спадающим фронтом сигнала, Нарастающим
фронтом или Сменой Уровня Сигнала на ножке. Эти настройки отражены в спецификации на "Регистр Управления
Внешними Прерываниями А" - "EICRA". Если на выводах INT0 и INT1 разрешены прерывания и, если прерывания
должны срабатывать по Уровню Сигнала, то Прерывания будут вызываться так долго, пока на выводах будет
удерживаться Низкий Уровень Сигнала (лог. 0). Обратите внимание, что распознавание Спадающего Фронта иНарастающего фронта сигнала на выводах прерывания INT0 и INT1 требует наличия Синхронизации "Модуля в/в"с Тактовым (Системным) Генератором МК, что показано на странице 21 в разделе "Описание Системного
Генератора". Прерывания по Низкому Уровню на выводах INT0 и INT1 вызываются Асинхронно, а это значит
прерывание на этих выводах может быть использовано для пробуждения из разных режимов сна, кроме Холостого«Idle». Тактирование I/O-модуля приостанавливается во всех режимах сна, кроме Холостого-Idle.
Обратите внимание, что, если Прерывание по Уровню используется для пробуждения МК из Режима
Экономии Энергии - "Power Down" - то этот Уровень должен удерживаться на выводе, пока МК не закончит
пробуждение, только после этого будет произведен переход на Вектор Прерывания. Если Уровень Сигнала
Прерывания исчезнет до того, как фиксированное Время Запуска МК истечет, то МК все равно выйдет из режима
сна, но Прерывание по соответствующему Вектору вызвано не будет. Время Запуска МК определяется Битами
Перемычками SUT- и CKSEL-битами, как описано в разделе "Системный Тактовый Генератор и его Настройка" настранице 21.

MCUCR – Регистр управления МК(микроконтроллером)Биты Управления Считыванием Прерываний
Прерываниями А» - "EICRA".
Бит №Чтение/Запись
Начальные
Значения

находятся в «Регистре Управления Внешними

7
PUD

6
SM1

5
SE

4
SM0

3
ISC11

2
ISC10

1
ISC01

0
ISC00

Ч/З

Ч/З

Ч/З

Ч/З

Ч/З

Ч/З

Ч/З

Ч/З

0

0

0

0

0

0

0

0

MCUCR

• Бит №3, №2 - ISC11, ISC10: для настройки прерывания INT1
Прерывание INT1 будет вызвано на внешнем выводе INT1, если Флаг I в Регистре SREG исоответствующая Маска Прерывания будут установлены. Выбор Прерывания по Уровню или по Фронтуна внешнем выводе выбирается в соответствии с Таблицей 31. Выборка значения на выводе INT1
происходит до определения фронта. Если время нарастания/спадания фронта длится больше, чем Тактовый
Период МК, то Прерывание будет вызвано. Более короткие импульсы вызов Прерывания не гарантируют.
Если выбрано Прерывание по Низкому Уровню на выводе, то этот Уровень должен удерживаться навыводе, пока не завершится выполнение текущей инструкции МК для того, чтобы вызов прерывания
произошел.
Таблица 31 – Режимы считывания сигнала Прерывания INT1
ISC11
ISC10
Описание
00Прерывание на INT1 вызывается по: Низкому Уровню
01Прерывание на INT1 вызывается по: Изменению Логического Уровня на выводе
10Прерывание на INT1 вызывается по: Спадающему Фронту
11Прерывание на INT1 вызывается по: Нарастающему Фронту
• Бит №1, №0 - ISC01, ISC00: для настройки прерывания INT0Прерывание INT1 будет вызвано на внешнем выводе INT0, если Флаг I в Регистре SREG исоответствующая Маска Прерывания будут установлены. Выбор Прерывания по Уровню или по Фронтуна внешнем выводе выбирается в соответствии с Таблицей 32.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

59

Выборка значения на выводе INT0 происходит до определения фронта. Если время нарастания/спадания
фронта длится больше, чем Тактовый Период МК, то Прерывание будет вызвано. Более короткие
импульсы вызов Прерывания не гарантируют. Если выбрано Прерывание по Низкому Уровню на выводе,то этот Уровень должен удерживаться на выводе, пока не завершится выполнение текущей инструкцииМК для того, чтобы вызов прерывания произошел.
Таблица 32 – Режимы считывания сигнала Прерывания INT0
ISC11
ISC10
Описание
00Прерывание на INT0 вызывается по: Низкому Уровню
01Прерывание на INT0 вызывается по: Изменению Логического Уровня на выводе
10Прерывание на INT0 вызывается по: Спадающему Фронту
11Прерывание на INT0 вызывается по: Нарастающему Фронту

Регистр Макси Прерываний – «GIMSK»Бит №Чтение/Запись
Начальные
Значения

7
INT1

6
INT0

5
PCIE

4
---

3
---

2
---

1
---

0
---

Ч/З

Ч/З

Ч/З

Ч

Ч

Ч

Ч

Ч

0

0

0

0

0

0

0

0

GIMSK

• Бит №7 - INT1: Внешний Запрос на прерывание INT1 Разрешен
Вызов Прерывания на выводе INT1 разрешен, если бит INT1 и бит I в Регистре SREG установлены в лог.1.
Биты ISC11 и ISC10 в Регистре MCUCR определяют, в каком режиме будет считываться Сигнал
Прерывания на выводе INT1 (Таблица 31). Сигналы на выводе INT1 будут вызывать Прерывания, даже,если вывод INT1 настроен как Выход. После вызова Прерывания, будет совершен переход насоответствующий Вектор Прерывания.
• Бит №6 – INT0: Внешний Запрос на прерывание INT0 Разрешен
Вызов Прерывания на выводе INT0 разрешен, если бит INT0 и бит I в Регистре SREG установлены в лог.1.
Биты ISC01 и ISC00 в Регистре MCUCR определяют, в каком режиме будет считываться Сигнал
Прерывания на выводе INT0 (Таблица 32). Сигналы на выводе INT0 будут вызывать Прерывания, даже,если вывод INT0 настроен как Выход. После вызова Прерывания, будет совершен переход насоответствующий Вектор Прерывания.
• Бит №5 - PCIE: Настройка Вывода в качестве источника Прерывания Разрешена
Прерывания на выводах PCINT7..0 разрешено, если PCIE бит установлен (в 1), и I-бит в Регистре
Состояния (SREG) установлен (в 1). Любое изменение на любом из выводов PCINT7..0 сгенерирует
прерывание, после чего произойдет переход на соответствующий для этих выводов Вектор Прерывания.
Выводы PCINT7..0 настраиваются на прерывание индивидуально битами в Регистре PCMSK.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

60

Регистр Флагов Внешних Прерываний – «EIFR»Бит №Чтение/Запись
Начальные
Значения

7
INTF1

6
INTF0

5
PCIF

4
---

3
---

2
---

1
---

0
---

Ч/З

Ч/З

Ч/З

Ч

Ч

Ч

Ч

Ч

0

0

0

0

0

0

0

0

EIFR

• Бит №7 - INTF1: Внешний Флаг Прерывания INT1
Когда происходит вызов прерывания на выводе INT1, то соответствующий флаг INTF1 устанавливается в
1. Если в бит I Регистра SREG и в бит INT1 Регистра GIMSK загружена 1, то при установке этого флагаМК перейдет к Соответствующему Вектору Прерывания. Этот флаг очищается аппаратно после выхода изподпрограммы обработки прерывания. Этот Флаг, также, может быть очищен записью в него лог.1 . ЭтотФлаг постоянно очищен, если вывод INT1 работает в Режиме Прерывания по Уровню.
• Бит №6 – INTF0: Внешний Флаг Прерывания INT0Когда происходит вызов прерывания на выводе INT0, то соответствующий флаг INTF0 устанавливается в
1. Если в бит I Регистра SREG и в бит INT0 Регистра GIMSK загружена 1, то при установке этого флагаМК перейдет к Соответствующему Вектору Прерывания. Этот флаг очищается аппаратно после выхода изподпрограммы обработки прерывания. Этот Флаг, также, может быть очищен записью в него лог.1 . ЭтотФлаг постоянно очищен, если вывод INT0 работает в Режиме Прерывания по Уровню.
• Бит 5 - PCIF: Флаг Прерывания на выводах PCINT7..0При смене Логического Уровня на любом из выводов PCINT7..0 происходит вызов Прерывания, при этомустанавливается соответствующий Флаг Прерывания PCIF. Если в бит I Регистра SREG и в бит PCIEРегистра GIMSK загружена 1, то при установке этого флага МК перейдет к Соответствующему Вектору
Прерывания. Этот флаг очищается аппаратно после выхода из подпрограммы обработки прерывания. ЭтотФлаг, также, может быть очищен записью в него лог.1.

Регистр Маски Прерываний выводов PCINT7..0«PCMSK»Бит №Чтение/Запись
Начальные
Значения

7
PCINT7

6
PCINT6

5
PCINT5

4
PCINT4

3
PCINT3

2
PCINT2

1
PCINT10
PCINT0

Ч/З

Ч/З

Ч/З

Ч/З

Ч/З

Ч/З

Ч/З

Ч/З

0

0

0

0

0

0

0

0

PCMSK

Биты №7.. №0 - PCINT7..0: Маскирующие биты выводов PCINT7..0Каждый бит из PCINT7..0 отвечает за свой вывод. Установка какого-нибудь бита из PCINT7..0 разрешает
соответствующему I/O-выводу работать в качестве источника Прерывания, при условии, что установлен
бит PCIE в GIMSK. Если какого-нибудь бит из PCINT7..0 очищен (ноль), то соответствующий I/O-выводне будет работать в качестве источника Прерывания.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

61

8-битный Таймер/Счетчик 0 с ШИМТаймер/Счетчик 0 - это 8-битный Т/С0 (Таймер/Счетчик 0) общего назначения, с двумя "Независимыми
Модулями Сравнения" и "ШИМ". Все это позволяет достичь точного выполнения программ (Режим Управления) иосуществлять Тоновую Генерацию.
Главными особенностями этого Таймера являются:• Два Независимых Модуля Сравнения
• Дважды Буферизированные Регистры Сравнения
• Очищающий Таймер по Совпадению (Авто Перезагрузка)• Свободный от Дрожания ШИМ с Фазовой Коррекцией
• Настраиваемый Период ШИМ• ЧастотныйГенератор
• Три независимых источника Прерывания (TOV0, OCF0A, и OCF0B)

ОбзорУпрощенная блок-диаграмма 8-битного Таймера/Счетчика показана на рисунке 26. За информацией одействительном размещении выводов обратитесь к разделу "Конфигурация Выводов" на странице 2. ДоступныеЦПУ Регистры в/в, выделены на Рисунке 26 полужирным шрифтом/линиями. Специфические Регистры Модуля
Т/С0 перечислены в разделе "Описание Регистров 8-битного Таймера/Счетчика 0" на странице 72.

Рисунок 26 - Упрощенная блок-диаграмма 8-битного Таймера/Счетчика 0г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

62

Регистры Т/С0Регистр TCNT0 Таймера/Счетчика0 (Т/С0) и Регистры Сравнения OCR0A и OCR0B являются 8-битными.
Флаги Прерываний Таймеров/Счетчиков находятся в Регистре TIFR. Также, все сигналы Прерывания
Таймеров/Счетчиков имеют индивидуальные маскирующие биты в Регистре TIMSK. TIFR и TIMSK на рисунке 26
не показаны.
Таймер/Счетчик может быть тактирован от внутреннего источника через Делитель Частоты (рисунок 26)
или через внешний Вывод Т0. Тактовый Модуль (рисунок 26) определяет каким источником будет пользоваться
Т/С0 для инкрементирования на единицу (или декрементирования на единицу) своего значения (числа). T/C0находится в неактивном состоянии, если не выбран ни один источник тактов. Выход из Тактового Модуля
обозначен как clkTn .
Дважды буферизированные Регистры Сравнения OCR0A и OCR0B постоянно сравниваются со значением
Таймера/Счетчика0. Результат этого сравнения может быть использован Частотным Генератором длягенерирования ШИМ или для изменения частоты на ножках-Выходах OC0A и OC0B.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

63

За деталями обращайтесь к разделу "Модуль Сравнения" на странице 63. Режим Сравнения так жеустанавливает Флаг Сравнения OCF0A или OCF0B, который может быть использован для вызова прерывания присовпадении сравниваемых значений.

Определения
Многие Регистры и Биты в этом разделе описаны в общей форме. Маленькая буква "n" в названии
"Timer/Counter n" обозначает номер Таймера/Счетчика, в данном случае используется Таймер/Счетчик 0.
Маленькая буква "x" соответствует букве Регистра Сравнения, например, "OCR0x" означает Регистр Сравнения
OCR0B или OCR0А. Однако, при использовании конкретных регистров и битов должно использоваться ихнастоящее имя, например, Регистр "TCNT0", который используется Таймером/Счетчиком 0 для, собственно,подсчета тактовых импульсов.
Определения, данные в Таблице 33, используются во всем документе.
Таблица 33 - Определения
BOTTOMСчетчик достигает значения BOTTOM, когда его регистр TCNT0 принимает значение 0х00.
Счетчик достигает значения MAX, когда его регистр TCNT0 принимает значение 0хFF (255 вдесятичной с.сч.)Счетчик достигает значения TOP, когда его регистр TCNT0 принимает значение, эквивалентное
наивысшему допустимому значению. Значение TOP может быть установлено как 0xFF (MAX)или быть записано в Регистр Сравнения OCR0A.

MAX
TOP

Источники Тактирования Таймера/Счетчика 0
Т/С0 может быть тактирован как внутренним источником, так и внешним. Источник тактирования
выбирается Тактовым Модулем (рисунок 26-27), который, в свою очередь, настраивается битами CS02:0, которые
находятся в Регистре Управления TCCR0B. За детальной информацией об Источниках Тактирования и о Делителе
Частоты (Предделителе) обращайтесь к разделу "Делитель Частоты Таймера/Счетчика 0 и Таймера/Счетчика 1" настранице 79.

Счетный Модуль
Главной частью 8-битного Таймера/Счетчика 0 является программируемый двунаправленный Счетный
Модуль.
На рисунке 27 показана блок-диаграмма Счетного Модуля.
счетный импульс
очистка
Направление счета

Управляющий
Логический
Модуль

Шина Данных

максимал.
значение
TOP

такты

минимал.
значение
BOTTOM

TOVn - флагпереполнения
(вызов прерывания )Тактовый модуль

тактовый
вывод (Вход)Детектор
фронтаОт Делителя
Частоты

Таймер/Счетчик0Вывод-OCnА.
вызовпрерывания

Выход дляСчетныйрезультата
Модуль
сравнения

Частотный

Рисунок 27 - Блок-диаграмма Счетного Модуля
Описание Сигналов на Рисунках 26-27:• «Счетный Импульс» – выполняет Инкрементирование (+1) или Декрементирование (-1) числа в TCNT0.
• «Направления Счета» - сигнал для выбора Инкрементирования или Декрементирования.
• «Очистка» - сигнал, сбрасывающий все биты TCNT0 в нули (очистка TCNT0).
• «clkTn» - сигнал, тактирующий Т/Сn, далее будет использоваться обозначение clkT0 .
• «TOP» - на рисунке это сигнал, сообщающий о том, что TCNT0 достиг максимального значения.
• «BOTTOM» - на рисунке это сигнал, сообщающий о том, что TCNT0 достиг минимального значения
(нуля).

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

64

В зависимости от режима работы, каждый тактовый импульс "Очищает" счетчик, "Инкрементирует" или"Декрементирует" его значение. Тактовые импульсы clkT0 могут быть получены как от внешнего, так и отвнутреннего источника, это определяется битами CS02:0. Если Источник Тактов не выбран (биты установлены как
CS02:0 = 0), то Т/С остановлен. Однако Регистр TCNT0 может быть прочитан Процессором независимо от того,запущен счетчик или нет. Операция записи Процессором значений в счетчик имеет приоритет над операциями
"Очистки" счетчика, "Инкрементирования" или "Декрементирования".
Последовательность Счета T/C определяется установкой WGM01- и WGM00-битов расположенный вРегистре Управления Таймера/Счетчика (TCCR0A) и WGM02-битом, расположенном в Регистре Управления
Таймера/Счетчика B (TCCR0B). От этих битов, также, зависит, будет ли Т/С0 вести себя как Счетчик или же Онбудет работать в режиме Генератора Частоты. За подробной информацией о Расширенном режиме "Счетчика" ирежиме "Генератора Частоты" обращайтесь к разделу "Режимы Работы" на странице 93.
Флаг Переполнения Таймера/Счетчика (TOV0) устанавливается согласно режиму работы, выбранному
битами WGM01:0. Флаг TOV0 может быть использован для того, чтобы вызвать прерывание работы ЦПУ.

Модуль Сравнения
8-битный цифровой компаратор постоянно сравнивает Регистр TCNT0 с Регистрами Сравнения OCR0A и
OCR0B. В случае равенства значения, находящегося в Регистре TCNT0, с каким-нибудь Регистром - OCR0A или
OCR0B, компаратор выдает Сигнал о Соответствии (Равенстве) этих регистров. Сигнал о Равенстве Регистров
следующим тактом таймера устанавливает соответствующий ему Флаг Равенства (сигнализирующий бит) OCF0A
или OCF0B. Если установлен Флаг Равенства и Прерывание по Совпадению значений Регистров разрешено, тобудет вызвано Прерывание. Флаг Равенства очищается автоматически после выхода из Подпрограммы Обработки
Прерывания. Флаг Равенства может, также, быть очищен, если выполнить команду записи в него логической
единицы. Генератор Частоты использует Сигнал Равенства в соответствии со своим Режимом Работы иустановками битов WGM02:0 и COM0x1:0. TOP или BOTTOM значения используются Генератором Частоты вособых случаях для обработки Критических Значений в некоторых Режимах Работы (обратитесь к разделу
"Режимы Работы" на странице 93).
На рисунке 28 показана блок-диаграмма Модуля Сравнения.

Рисунок 28 - Блок-диаграмма Модуля Сравненияг Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

65

При использовании любого режима ШИМ (Широтно-Импульсной Модуляции) Регистры Сравнения
OCR0x будут Дважды Буферизированными. Для Нормального Режима и Режима Очищения Таймера поСовпадению возможность использовать Двойную Буферизацию Регистров Сравнения недоступна. Двойная
Буферизация синхронизирует обновление Регистров OCR0x со значениями TOP или BOTTOM!. Такая
синхронизация предотвращает появление импульсов ШИМ нечетной длительности и несимметричных импульсов
ШИМ, что, в свою очередь, позволяет добиться импульсов ШИМ свободных от дрожания (в общем, - избавиться отсбоев).
Работа с Регистром OCR0x может показаться сложной задачей, но это не так. Если Двойная Буферизация
Разрешена, то ЦПУ обращается к Буферизированному Регистру OCR0x, а, если Двойная Буферизация Недоступна,то ЦПУ обращается к Регистру OCR0x напрямую.

Форсированный Режим Сравнения
Если Генератор Частоты работает в режимах non-ШИМ (это Режимы, не являющиеся ШИМ-режимами), тоСравнение Регистров может быт форсировано, для этого надо записать единицу в бит FOC0x. При совпадении
Сравниваемых значений флаг OCF0x устанавливаться не будет, также, не будет происходить Перезагрузка/Сброс
таймера, но будет происходить обновление значения на выводе OC0x (настройка битов COM0x1:0 определяет, чтобудет происходить на выводе OC0x, очищение или переключение бита).

Блокирование Режима Сравнения при Записи
Регистра TCNT0Любая операция записи в Регистр TCNT0 будет блокировать Режим Сравнения на время одного тактового
импульса Таймера clkT0 даже, если Т/С0 остановлен. Это позволяет загружать в Регистр Сравнения OCR0x такое жезначение, как и в Регистре Счетчика TCNT0 и после этого, если Т/С0 включен, Прерывание по Совпадению
вызывано не будет.

Использование Модуля СравненияТак как запись в TCNT0 в любом режиме работы блокирует Режим Сравнения на один следующий
тактовый цикл Т/С0, то мы рискуем совершить ошибку при изменении значения в TCNT0, когда Регистр TCNT0используется Модулем Сравнения, независимо от того, запущен Т/С0 или - нет. Если значение, записываемое в
TCNT0 будет эквивалентно значению в Регистре OCR0x, то на следующем после записи тактовом цикле Таймера
Режим Сравнения Будет пропущен, что в результате приведет к некорректной работе Генератора Частоты. Точнотак же, нельзя записывать в TCNT0 значение, равное BOTTOM, если T/C0 вычисляет Декремент.
Установка значения в вывод OC0x должна быть выполнена до настройки вывода в качестве Выхода, путем
настройки Регистра DDR. Самый простой способ установить значение OC0x - это использовать в Нормальном
Режиме стробирующий бит FOC0x. Регистр OC0x сохраняет свои значения даже при смене режима работы
Генератора Частоты. Помните, что биты COM0x1:0 не являются буферизированными так же, как Сравниваемые
Значения Регистров Сравнения. Изменение битов COM0x1:0 дают немедленный эффект.

Режим Сравнения
Биты Режима Сравнения COM0x1:0 имеют две функции. Генератор Частоты использует биты COM0x1:0
для определения состояния на выводе OC0x при следующем Совпадении значений Регистров Сравнения. Также,биты COM0x1:0 управляют источником значений на Выходе OC0x. На Рисунке 29 показана упрощенная блоксхема работы битов . I/O-регистры, I/O-биты и I/O-выводы на рисунке подписаны жирными буквами. На Рисунке
29 показана
только часть общих I/O-Регистров Управления (DDR и PORT), на работу которых влияют, битыCOM0x1:0. При обращении к состоянию OC0x, идет обращение к Регистру OC0x, а не к Выводу OC0x. Еслипроизойдет Сброс Системы, то Регистр OC0x тоже будет сброшен в "0".

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

66

Рисунок 29 – Часть общих I/O-Регистров Управления (DDR и PORT), на работу которых влияют, биты COM0x1:0Стандартная функция ввода/вывода будет проигнорирована Режимом Сравнения Генератора Частоты, еслихоть один бит из COM0x1:0 битов будет установлен. Однако, направление в/в данных через Ножку OC0x все ещеконтролируется Регистром DDR. Бит в Регистре DDR (DDR_OC0x), настраивающий вывод OC0x как Выход,должен быть установлен до того, как Ножка OC0x будет использована в качестве Выхода. Функция Игнорирования
других функций не зависит от того, в каком режиме работает Генератор Частоты.
Схема Модуля Сравнения позволяет инициализировать Регистр OC0x до того, как вывод OC0x будет
использован в качестве Выхода. Обратите внимание, что настройка битов COM0x1:0 остается неизменной, чтообеспечивает устойчивую работу во всех режимах. Обратитесь к разделу "Описание 8-битного Таймера/Счетчика
0" на странице 72 за подробной информацией.

Модуль Сравнения и Генератор Частоты
Генератор Частоты в различных Режимах Работы (Normal, СТС, PWM(ШИМ)) использует биты COM0x1:0
по-разному. Для всех Режимов такая установка битов COM0x1:0=0 (подробнее: COM0x1=0 и COM0x0=0) говорито том, что Генератор Частоты не пользуется Регистром OC0x. То, как работает Режим Сравнения в Режиме
Таймера non-ШИМ (не ШИМ), можно посмотреть на Рисунке 28, страница 63. Режим Быстрый-ШИМ (fast-PWM)
описан в Таблице 26 на странице 54, а Фазовая Коррекция ШИМ описана в Таблице 27 на странице 54.
///Режимы Работы
Режим работы, т.е поведение Таймера/Счетчика и Модуля Сравнения, определяется комбинацией битов
WGM2:0 и COMx1:0. Биты COMx1:0 никак не влияют на вычисление Инкремента или Декремента
Таймера/Счетчика, в отличии от битов WGM2:0. Биты COMx1:0 влияют на Генерирование импульсов ШИМ, иопределяют - будут ли они Инверсными или - нет (Инверсный ШИМ или НЕИнверсный ШИМ). Для Режима nonШИМ биты COMx1:0 определяют, будет ли в Режиме Сравнения бит на Выходе: 1-Установлен; 2-Очищен; 3Переключен (обращайтесь к разделу "Модуль Сравнения" на странице 64).
За подробной информацией от Таймингах (Временных Задержках), обратитесь к Рисункам: 33, 34, 35 и 36
в разделе "Временные Диаграммы Таймера/Счетчика" на странице 70.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

67

Режим NormalНормальный Режим ("Normal") работы является наиболее простым из всех (биты устанавливаются
так:WGM02:0 = 0). В Этом Режиме направление счета всегда является Инкрементирующим, а Очищение счетчикане выполняется. Счетчик просто переполняется, когда достигает максимального 8-битного значения (TOP=0xFF), азатем перезапускается заново со значения (0х00. В Normal Режиме Флаг Переполнения Т/С0 -TOV0- будет
устанавливаться на том же цикле, на котором будет происходить обнуление Регистра TCNT0. В этом случае ФлагTOV0 ведет себя так, как будто он является девятым битом Регистра TCNT0 (хотя, это и не так), за исключением
того, что этот Флаг устанавливается, а не сбрасывается. Однако, в комбинации с Прерыванием по Переполнению,которое автоматически очищает Флаг TOV0, Разрешение (диапазон) счетчика Т/С0 может быть Увеличено
программно. Новое значение в Режиме Normal может быть записано в TCNT0 в любое время.
Модуль Сравнения может быть использован для вызова прерывания в нужное время. Не рекомендуется
использовать Режим Сравнения для того, чтобы Генерировать какую-то частоту, так как это займет значительное
время у ЦПУ.

СТС-режим (Очищение Таймера при Совпадении
Регистров Совпадения)Аббревиатура "СТС" расшифровывается как "Clear Timer on Compare", что по-русски означает
"Очищение Таймера при Совпадении значений Регистров Совпадения". В СТС-режиме (когда биты установлены
так:WGM02:0 = 2) Регистр OCR0A используется для того, чтобы управлять/настраивать Разрешение Счетчика. В
СТС-режиме значение Регистра Счетчика TCNT0 сбрасывается в нули, если значение TCNT0 соответствует
значению, записанному в Регистр Сравнения OCR0A. Для Счетчика значение Регистра OCR0A будет являться
TOP-значением, соответственно, таким образом можно настраивать Разрешение Т/С0. Такой Режим предоставляет
много возможностей для управления Генерированием частоты, используя Модуль Сравнения.
Временные диаграммы для СТС-режима показаны на Рисунке 30. Значение Счетчика в Регистре TCNT0увеличивается до тех пор, пока число в TCNT0 не станет равным числу в Регистре OCR0A, после этого Счетчик
TCNT0 будет очищен.

Рисунок 30 - Временные диаграммы для СТС-режима
Прерывание может Вызываться каждый раз, когда Регистр TCNT0 будет достигать значения TOP и будет
устанавливаться Флаг OCF0A. Если Прерывания разрешены, то Подпрограмма Обработки Прерывания может бытьиспользована для того, чтобы обновлять TOP-значение. Однако, следует помнить, что, если значение TOP близко кзначению BOTTOM, то записывать его в Регистр следует очень осторожно, так как СТС-режим не работает сДважды Буферизированными Регистрами, поэтому нужно учитывать частоту тактирования Т/С0. Если в Регистр
Сравнения OCR0A записать значение меньшее, чем значение уже присутствующее в Регистре Счетчика TCNT0, тоТаймер/Счетчик 0 пропустит Сравнение Значений этих Регистров. В этом случае Т/С0 должен будет досчитать домаксимального значения 8-битного Регистра TCNT0 (0xFF), а за тем, начать счет с нуля (0x00) и считать до техпор, пока значение в Регистре TCNT0 не станет равным значению в OCR0A.
Для Генерирования Частоты в СТС-режиме, следует вывод OC0A настроить на Режим Переключения
своего логического уровня каждый раз, когда будут равны Регистры TCNT0 и OCR0A, это делается путем
установки соответствующих битов: (COM0A1:0 = 1). Значение на выводе OC0A не будет изменяться, если этотвывод будет настроен как Выход. Максимальная частота, вырабатываемая таким образом, может достигатьг Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

68

значения в Два раза меньшего, чем Тактовая (Системная) Частота МК: fOC0 = fclk_I/O/2, при условии, что в Регистр
OCR0A загружены нули (0x00). Частота Генератора в СТС-режиме определяется следующим Уравнением:f OCnx =[f clkI / O ]2 ⋅ N ⋅ (1 + OCRnx )Переменная N представляет собой коэффициент деления Тактовой Частоты МК, которая, в последствии,является Тактовой Частотой Т/С0, эта переменная может принимать значения такого ряда: (N=1, N=8, N=64, N=256
или N=1024). Как и в Нормальном Режиме (Normal) работы Т/С0, в Этом Режиме (СТС-режиме) Флаг TOV0устанавливается на том же самом Тактовом Цикле, на котором происходит переключение Значения Регистра
TCNT0 с максимального значения (MAX) на начальное нулевое значение (0x00).

Режим Быстрой ШИМ-модуляции (FastPWM или
FPWM-режим)Режим Быстрой ШИМ-модуляции, или FPWM-режим (WGM02:0 = 3 или 7), позволяет Генерировать
высокочастотный сигнал с ШИМ. FPWM-режим _ использует Однонаправленный Cчет. Т.е. Счетчик считает от
BOTTOM-значения до TOP-значения, затем Счетчик начинает считать заново от BOTTOM до TOP и т.д.. Значение
TOP равно числу 0xFF, когда биты WGM2:0 = 3 или же TOP может быть равно числу, записанному в Регистр
OCR0A, когда биты WGM2:0 = 7. Если используется НеИнвертирующий Режим Сравнения, то значение на выводе
OC0x очищается (устанавливается ноль) при совпадении Регистров TCNT0 и OCR0x, а при достижении Регистром
TCNT0 значения BOTTOM, на выводе OC0x обратно устанавливается единица. А, если используется
Инвертирующий Режим Сравнения, то значение на выводе OC0x устанавливается (выгружается единица) присовпадении Регистров TCNT0 и OCR0x, а при достижении Регистром TCNT0 значения BOTTOM, на выводе OC0xобратно устанавливается ноль. Модуль PWM в FPWM-режиме, используя Однонаправленный Счет, позволяет
Генерировать удвоенную частоту, такую же, какую может Генерировать ШИМ с Фазовой Коррекцией, используя
Двунаправленный Счет. Способность Генерировать такую высокую частоту делает FPWM-режим отлично
приспособленным для использования в приложениях Регулирования Мощности, _ в ЦАП-приложениях и др..
Использование в приложениях ВЧ-сигналов дает возможность применять радиоэлементы для поверхностного
монтажа (катушки, конденсаторы и др.), что, в свою очередь, ведет к уменьшению стоимости проекта.
В FPWM-режиме Счетчик увеличивается до тех пор, пока Регистр TCNT0 не сравняется со значением
TOP. Когда значение в TCNT0 достигнет значения TOP, произойдет очистка Регистра Счетчика TCNT0 сразу же наего следующем Тактовом Цикле. Временные Диаграммы для FPWM-режима показаны на Рисунке 29.
Нарастающие значения Регистра TCNT0 на Рисунке 29 показаны как гистограмма (пилообразные импульсы), чтоиллюстрирует Однонаправленный Счет (импульс нарастает - значение в TCNT0 увеличивается). На Рисунке 29,также, показаны Инвертирующий и НеИнвертирующий режимы ШИМ. Короткие горизонтальные линии (Рисунок
29) на TCNT0-значениях представляют собой случай совпадения значений регистров OCR0x и TCNT0.

Рисунок 31 - Временные Диаграммы для FPWM-режима
Флаг Переполнения Таймера/Счетчика "TOV0" устанавливается каждый раз, когда Счетчик достигает
значения TOP. Если прерывания разрешены, то можно использовать подпрограмму обработки прерываний дляг Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

69

того, чтобы обновлять (изменять) сравниваемые значения в Регистрах Сравнения. В FWPM-режиме Модуль
Сравнения позволяет Генерировать ВЧ ШИМ-сигнал и выводить его на Вывод OC0x. Если настроить биты COM0x
так: COM0x1:0 = 2, то это приведет ко включению НеИнвертирующего Режима ШИМ. Если настроить битыCOM0x так: COM0x1:0 = 3, то это приведет ко включению Инвертирующего Режима ШИМ: если настроить битыCOM0x так: COM0A1:0 = 1, то это позволит задействовать Вывод AC0A и переключать значение на нем в Режиме
Сравнения, при том условии, что установлен бит WGM02. Эта Опция не доступна для использования Выводом
OC0B (Смотрите Таблицу 54). Значение на этом Выводе (в этом случае) будет изменяться, если этот Вывод
настроен как Выход. Принцип Генерирования ШИМ Частоты состоит в том, что в Режиме Сравнения на Выводе
OC0x постоянно изменяется логический уровень сигнала, т.е. происходит установка в "1" (или очистка в "0"); илинаоборот - очистка в "0" (или установка в "1") одновременно на том же Тактовом Цикле, когда Счетчик сбрасывает
свое значение с TOP до BOTTOM.
Частота ШИМ, "снимаемая" с вывода OCnx, может быть рассчитана по Формуле:f OCnx PWM =[f clkI / O ]N ⋅ 256

Переменная N представляет собой коэффициент деления Тактовой Частоты МК, которая, в последствии,является Тактовой Частотой Т/С, эта переменная может принимать значения такого ряда: (N=1, N=8, N=64, N=256
или N=1024).
Критические Значения для Регистра OCR0A представляют собой особый случай при Генерировании
ШИМ-частоты. Если значение Регистра OCR0A эквивалентно значению BOTTOM, то на Выходе будет
происходить выброс импульса на каждом следующем Тактовом Цикле Таймера после достижения числа MAX:
MAX+1; Загрузка в OCR0A числа, равного значению MAX, в результате дает постоянный логический уровень наВыходе - высокий или низкий (последнее зависит от полярности Выхода, которая зависит от установки битов
COM0A1:0).
ШИМ-частота в FPWM-режиме с Рабочим Циклом 50% (когда длительность импульса равна половине
периода цикла) может быть получена переключением логического уровня на Выводе OC0x используя Режим
Сравнения (COM0x1:0 = 1). Максимальная частота, вырабатываемая таким образом, может достигать значения вДва раза меньшего, чем Тактовая (Системная) Частота МК: fOC0 = fclk_I/O/2, при условии, что в Регистр OCR0A
загружены нули (0x00). Этот способ Генерирования Частоты подобен СТС-режиму, в котором используется
переключение вывода OC0A, за исключением того, что в FPWM-режиме Двойная Буферизация Модуля
Сравнения Разрешена, а в СТС-режиме - Запрещена.

ШИМ с Фазовой Коррекцией (PCPWM-режим)PCPWM-режим (WGM02:0 = 1 или 5) позволяет воспользоваться высоким Разрешением Генератора
Частоты и обеспечивает ШИМ-сигнал правильный по фазе. PCPWM-режим основан на Двунаправленном Счете.
При Двунаправленном Счете Счетчик циклически считает от значения BOTTOM до TOP,а затем, обратно отзначения TOP до BOTTOM. Значение TOP будет равно 0xFF, если WGM2:0 = 1, а, если установлены биты WGM2:0= 5, то значение TOP будет равно числу, загруженному в OCR0A. При использовании НеИнвертирующего Режима
Сравнения и Инкрементированного Счета, значение на Выводе OC0x будет Очищаться в "0" при совпадении
Регистров TCNT0 и OCR0x и наоборот, при том же Режиме Сравнения, значение на Выводе OC0x будет
Устанавливаться в "1" при совпадении TCNT0 и OCR0x при Декрементированном Счете. При использовании
Инвертирующего Режима Сравнения все работает наоборот. Двунаправленный Режим Счета имеет более низкую
максимальную частоту генерирования, чем Однонаправленный. Однако, из-за своей симметричности
Двунаправленный Режим Счета предпочтительно использовать для приложений, управляющих двигателями.
В PCPWM-режиме Счетчик увеличивается (Инкрементируется) до тех пор, пока Регистр TCNT0 недостигнет значения TOP. При достижении значения TOP Счетчик меняет направление Счета. Естественно, что
TCNT0 равен TOP только на время одного Тактового Цикла. Временные диаграммы для PCPWM-режима показанына Рисунке 32. Увеличивающееся и уменьшающееся значения Регистра TCNT0 показаны на Рисунке 32 какгистограммы (кривые), они иллюстрируют Двунаправленный Режим Счета. На Рисунке 32, также, показаны
временные диаграммы значений на Выходах OCn для Инвертирующих и НеИнвертирующих Режимов Сравнения.
Короткие горизонтальные линии на гистограммах представляют собой время совпадения между Регистрами
OCR0x и TCNT0.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

70

Рисунок 32 - Временные диаграммы значений на Выходах OCn для Инвертирующихи НеИнвертирующих Режимов Сравнения (PCPWM-режим)Флаг Переполнения (TOV0) Таймера/Счетчика устанавливается каждый раз, когда Счетчик достигает
значения BOTTOM. Этот Флаг можно использовать для того, чтобы вызывать прерывания.
В PCPWM-режиме Модуль Сравнения позволяет Генерировать ШИМ-частоту и, затем, выводить ее наВывод OC0x. Если настроить биты так: COM0x1:0 = 2, то Модуль Сравнения будет работать в НеИнвертирующем
Режиме. Инвертирующий Режим включается, если настроить биты так: COM0x1:0 = 3, загрузка "единицы" в бит
COM0A0 позволяет переключать значение на Выводе OC0A каждый раз, когда Регистры Сравнения равны между
собой, при условии, что установлен бит WGM02. Вывод OC0B настраивается по-другому. Значение на Выводе
OC0x будет видимо, если этот Вывод настроен как Выход. ШИМ-частота генерируется на Выводе OC0x путем
очищения в "0" (или установки в "1" для Инвертирующего Режима) логического уровня на этом Выводе, когда
Регистры Сравнения OCR0x и TCNT0 (точнее OCR0x - это Регистр Сравнения, а TCNT0 - это Регистр Счетчика,значение которого сравнивается со значением OCR0x) становятся равны между собой при Инкрементированном
Счете; и путем установки в "1" (или очищением в "0" для Инвертирующего Режима), когда Регистры Сравнения
OCR0x и TCNT0 становятся равны между собой при Декрементированном Счете. Генерируемая Частота в
PCPWM-режиме может быть рассчитана по следующей Формуле:f OCnx PCPWM =[f clkI / O ]N ⋅ 510Переменная N представляет собой коэффициент деления Тактовой Частоты МК, которая, в последствии,является Тактовой Частотой Т/С, эта переменная может принимать значения такого ряда: (N=1, N=8, N=64, N=256
или N=1024).
Критические Значения (т.е., создающие риск ошибки в работе) для Регистра OCR0A представляют собой
особый случай при Генерировании ШИМ-частоты в PCPWM-режиме. Если OCR0A эквивалентен значению
BOTTOM, то на Выводе всегда будет низкий уровень сигнала, а, если OCR0A=TOP, то на Выводе всегда будет
высокий уровень сигнала - это справедливо для НеИнвертирующего Режима Сравнения. Для Инвертирующего
Режима все будет наоборот.
В самом начале 2-го периода, Рисунок 32, значение на Выводе OCn меняет свое значение с Высокого
Уровня на Низкий даже, если Регистры Сравнения не равны. Это гарантирует генерирование симметричных
импульсов в Двунаправленном Режиме Счета. Это второй случай, когда происходит смена логического уровня безСравнения Регистров Сравнения.
• Регистр OCR0A может иметь значения не равные MAX, как показано на Рисунке 32. ЕслиOCR0A=_TOP(MAX)_, то значение на Выводе OCn будет таким же, какое получается в результате
равенства Регистров Сравнения при Декрементированном Счете, а это "1" - при НеИнвертирующем
Режиме и "0"- при Инвертирующем Режиме.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

71

Симметрия Импульсов ШИМ-частоты гарантирована, если значение на Выводе OCn, при TCNTn=MAX,соответствует значению, получающемуся в результате равенства Регистров Сравнения приИнкрементирующем Счете.
• Таймер начинает считать с числа на единицу большего, чем то, которое загружено в OCR0A (т.е.
OCR0A+1) и поэтому, пропускает Сравнение на один период (даже, если TCNT0 и OCR0A равны) и,следовательно, не происходит ошибочного изменения сигнала на выводе OCn (что показано на Рисунке 32– период 1 там пропущен).

Временные Диаграммы Таймера/Счетчика
Т/Сn является Синхронным Модулем, а Тактовые Импульсы clkTO, как показано на следующем рисунке,являются Синхронизирующими. На Рисунке, также, видно, что происходит после установки Флага Прерывания.
Рисунок 33 иллюстрирует, как Данные Счетчика изменяются во времени. На Рисунке видно, что Счетчик считаетдо Значения MAX, это относится ко всем ШИМ-режимам, кроме PCPWM-режима..

Рисунок 33 - Временные Диаграммы Таймера/Счетчика (Предделитель не используется)Рисунок 34 показывает те же процессы, что на Рисунке 33, но с использованием Предделителя (fclkI/O/8)

Рисунок 34 Временные Диаграммы Таймера/Счетчика при использовании Предделителя (fclkI/O/8)
Рисунок 35 иллюстрирует установку Флагов Сравнения OCF0B и OCF0A (в Режиме Сравнения Регистров
Сравнения) во всех ШИМ-режимах, за исключением СТС-режима и ШИМ-режима, где Регистр Сравнения OCR0A
является TOP-значением.

Рисунок 35 - Временные Диаграммы Таймера/Счетчика с Установкой Флагов OCF0x сиспользованием Предделителя (fclkI/O/8)

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

72

Рисунок 36 показывает установку Флага OCF0A и очищение TCNT0 в СТС-режиме и FPWM-режиме, где
OCR0A является TOP-значением.

Рисунок 36 - Временные Диаграммы Таймера/Счетчика с Очисткой Таймера в Режиме
Сравнения с использованием Предделителя (fclkI/O/8)

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

73

Описание Регистров 8-битного Таймера/Счетчика 0Регистр Управления А Таймера/Счетчика 0 – «TCCR0A»
Бит №Чтение/Запись
Начальные
Значения

7
COM0A1

6
COM0A2

5
COM0B1

4
COM0B0

3
---

2
---

1
WGM01

0
WGM00

Ч/З

Ч/З

Ч/З

Ч/З

Ч

Ч

Ч/З

Ч/З

0

0

0

0

0

0

0

0

TCCR0A• Биты 7:6 - COM0A1:0:Включен Режим Сравнения АЭти биты управляют Выводом OC0A. Если из битов COM0A1:0 установлен хотя бы один (или два бита),то Вывод OC0A будет игнорировать Нормальные Функции Порта в/в. Однако, обратите внимание, что бит,соответствующий в Регистре DDR этому Выводу, должен быть установлен так, чтобы был включен
Драйвер Вывода.
Если Альтернативная Функция OC0A «подключается» к своему одноименному Выводу, то Функция,включаемая битами COM0A1:0, становится зависимой от настроек битов WGM02:0. В Таблице 34 показано, какую
функцию несут биты COM0A1:0 при установленных WGM02:0 битах в Нормальном Режиме (Normal-режим) или
СТС-режиме (в non-PWM режимах - не являющимися ШИМ-режимами Таймера/Счетчика).
Таблица 34 – Режим Сравнения в non-PWM (non-ШИМ) Режимах Таймера
COM0A1
COMA0Описание
00Нормальная работа порта в/в, Функция (Вывод) OC0A отключена
Переключение (инвертирование) значения на Выводе OC0A в Режиме
01Совпадения Регистров Сравнения
Очищение (в «0») значения на Выводе OC0A в Режиме Совпадения
10Регистров Сравнения
Установка (в «1») значения на Выводе OC0A в Режиме Совпадения
11Регистров Сравнения

Таблица 35 – Режим Сравнения Регистров в FPWM-режиме Таймера
COM0A1
COMA0Описание
00Нормальная работа порта в/в, Функция (Вывод) OC0A отключена
WGM02 = 0: Вывод OC0A отключен (Ножка PB2 не является Выводом
OC0A, но является Выводом PB2, выполняющим обычные функции порта).
0
1
WGM02 = 1: Переключение (инвертирование) значения на Выводе OC0A в
Режиме Совпадения Регистров Сравнения.
Очищение (в «0») значения на Выводе OC0A в Режиме Совпадения
10Регистров Сравнения, Установка происходит при достижении TCNT0значения TOP.
Установка (в «1») значения на Выводе OC0A в Режиме Совпадения
11Регистров Сравнения, Установка происходит при достижении TCNT0значения TOP.

Примечание:1. Особый Случай представляет собой случай, когда Регистр OCR0A равен значению TOP приустановленном бите COM0A1. В этом Случае Режим Сравнения игнорируется (не работает), а на Выводе OC0A
присутствует постоянный логический уровень - высокий или низкий (последнее зависит от полярности Выхода,которая зависит от установки битов COM0A1:0). Обращайтесь к Разделу Режим «Режим Быстрой ШИМмодуляции» на странице 67 (см. предпоследний абзац).

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

74

Таблица 36 демонстрирует работу битов COM0A 1:0, когда через биты WGM0 2:0 включен режим Фазовой
Коррекции ШИМ – PCPWM.
Таблица 36 – Режим Сравнения Регистров при включенном режиме
Фазовой Коррекции ШИМ – PCPWM.(1).
COM0A1
COMA0Описание
00Нормальная работа порта, OC0A отключен.
WGM02 = 0: Нормальная работа порта, OC0A отключен.
0
1
WGM02 = 1: Переключение уровня на OC0A при совпадении регистров вРежиме Сравнения.
OC0A очищается по Совпадению Регистров при инкрементном счете. И
1
0
OC0A устанавливается в 1 по Совпадению Регистров при декрементном
счете Таймера.
11Примечание:1. Особый случай бывает, когда Регистр OCR0A эквивалентен значению TOP и установлен бит COM0A1.
В этом случае Режим Сравнения Игнорируется. Подробнее об этом написано в разделе «ШИМ с Фазовой
Коррекцией (PCPWM-режим)» на стр. 68.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

75

USART – Универсальный Синхронный и Асинхронный
Последовательный Приемник и Передатчик
Полнодуплексный режим работы (Независимые Регистры для Передатчика и Приемника споследовательной загрузкой данных);2. Асинхронный и Синхронный режим работы;3. Master- или Slave-тактирование при Синхронном режиме работы;4. Генератор Битрейта (Бодрейта) с высоким разрешением для настройки скорости передачи данных;5. Поддерживаемый размер Кадра: 5- , 6- , 7- , 8- или 9-битный Кадр и 1 или 2 Стоповых Бита;6. Генератор Равенства Четных и Нечетных битов, аппаратная проверка на равенство (чет-нечет);7. Детектор переполнения Данных;8. Детектор ошибки Кадра;9. Фильтр Шума, определяющий истинность (ложность) Стартового Бита и Цифровой Низкочастотный
Фильтр;10. Три отдельных Прерывания, срабатывающие по окончанию Передачи Данных, при опустошении Регистра
Данных при Передаче и по окончанию Чтения Данных Приемником;11. Мультипроцессорный Режим Связи;12. Двойная Скорость работы при Асинхронном Режиме Работы;
1.

Обзор
Упрощенная блок-диаграмма для USART – Передатчика приведена на рисунке 52. Обращение ЦПУ к Регистрам
ввода/вывода и выводам МК на блок-диаграмме обозначено жирными линиями.

Рисунок 52 - Упрощенная блок-диаграмма для USART – Передатчика(1)Примечание: 1. Чтобы уточнить информацию о расположении выводов интерфейса USART, обратитесь кРисунку 1 на странице 2, -к Таблице 29 на странице 56, -к Таблице 26 на странице 54.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

76

Пунктирными линиями на блок-диаграмме отделены три главные части модуля USART (расположенные
сверху в низ): Тактовый Генератор, Передатчик и Приемник. Регистры Управления доступны всем модулям МК.
Схема Тактового Генератора состоит из синхронизирующей логики для внешних Тактовых Сигналов,используемых в синхронном режиме работы и Бодрейт Генератора (the baud rate generator). Вывод XCK(Тактирование Передатчика) используется только при Синхронной работе Передатчика. Передатчик состоит изодного Буфера Данных, Последовательного Регистра Сдвига, Генератора Равенства и Логической Схемы
Управления для обработки различных форматов Кадра. Буфер Данных позволяет непрерывно передавать данныебез задержки между передаваемыми кадрами. Приемник является наиболее сложной составной частью модуля
USART, что обусловлено Блоком Тактирования и Блоком Определения Стартового Бита. Блоком Определения
Стартового Бита используется для асинхронного приема данных. Вдобавок к Блоку Определения Стартового БитаПриемник имеет Схему Проверки на Четность, Сдвиговый Регистр и Двухуровневый буфер (UDR) для приема
данных. Приемник поддерживает те же форматы Кадра, что и Передатчик и может выявлять Ошибки Кадра,Переполнение Буферов и Ошибки на Четность.

AVR USART «против» AVR UART – Совместимость
USART полностью совместим с модулем UART относительно следующего:1. Расположение битов внутри Регистров USART;
2. Бодрейт Генератора;3. Работы Передатчика;4. Функционирования Буфера Передатчика;5. Работы Приемника;Однако, Буфер Приемника имеет два улучшения, которые влияют на совместимость в некоторых особых
случаях:1. Был добавлен Второй Буферный Регистр. Два Буферных Регистра работают, как замкнутый по кругу FIFOбуфер. Поэтому, Регистр Данных UDR следует читать только один раз по приходу данных. Более важными
являются: возникновение Ошибки Кадра, о чем символизирует Флаг Ошибки (FE - «Frame Error» и DOR);и девятый бит данных (RXB8), приходящий вместе с полезными данными. Поэтому, прежде, чемосуществлять чтение Регистра UDR, следует читать Бит Статуса. В противном случае, информация обошибке будет потеряна.
2. Сдвиговый Регистр Приемника теперь может являться Буфером третьего уровня. Этим можно
пользоваться при приеме данных и «складывании» их в Сдвиговом Регистре (смотрите Рисунок 52), еслиБуфер Данных еще не был опустошен, когда появился новый Стартовый Бит. Таким образом, модуль
USART более устойчив к переполнению Регистра Данных – (DOR - «Data OverRun»). Следующий БитУправления теперь имеет новое имя, но, по-прежнему, выполняет первоначальные функции и имеет то жерасположение в Регистре, что и раньше:• Бит CHR9 переименован на UCSZ2.
• Бит ORпереименован на DOR.

Тактовый Генератор
Тактовый Генератор вырабатывает базовую частоту для работы Передатчика и Приемника. USART поддерживает 4режима работы Тактового Генератора. Бит UMSEL в «Регистре Статуса и Управления – UCSRC» модуля USARTосуществляет выбор между Асинхронным и Синхронным Режимом Работы. Двойная Скорость Работы
(используется только в Асинхронном Режиме) выбирается битом U2X, который находится в Регистре UCSRA. Прииспользовании Синхронного Режима (UMSEL=1), Регистр DDRx для вывода XCK (DDR_XCK) определяет какой
источник тактирования будет использоваться, Внутренний или Внешний, соответственно, это Master-режим или
Slave-режим.
На Рисунке 53 показана блок-диаграмма Тактового Генератора.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

77

Рисунок 53 - Блок-диаграмма Тактового Генератора USART

1.
2.
3.
4.
5.

Описание сигналов:txclk – Тактовый Сигнал Передатчика (внутренний сигнал);rxclk – Базовый Тактовый Сигнал Приемника (внутренний сигнал);xcki – Вход с ножки XCK (внутренний сигнал). Используется для синхронизации в Режиме Slave.
xcko – Вывод Тактового Сигнала на ножкуXCK. Используется для синхронизации в Режиме Mastre.
fosc – XTAL-ножка (вывод для Системной Тактовой Частоты).

Внутренний
Генератор

Тактовый

Генератор

-Бодрейт

Внутренний Тактовый Генератор используется для Асинхронной и Синхронной работы в режиме Master.
Написанное в этом разделе относится к Рисунку 53. Регистр UBRR и Счетчик Обратного Счета выступают вкачестве программируемого предделителя, получается Бодрейт Генератор. Счетчик Обратного Счета тактируется
Системной Тактовой Частотой (fosc), а настраивается он загрузкой значения из Регистра UBRR, которая происходит
каждый раз при обнулении Счетчика Обратного Счета или при записи в Регистр UBRRL. Тактовый импульс
вырабатывается каждый раз, когда происходит обнуление Счетчика Обратного Счета. Тактовая частота Бодрейт
Генератора вычисляется по формуле: (output =fosc/(UBRR+1)). Передатчик делит частоту Бодрейт Генератора output
на 2, 8 или 16 в зависимости от Режима. Частота output используется непосредственно для тактирования
Приемника и Блока Определения Стартового Бита Данных. _ .Таблица 48 содержит уравнения для расчета
Бодрейта (Битрейта) и значения, которое следует загрузить в Регистр UBRR для каждого режима работы,использующего внутренний источник тактовой частоты.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

78

Таблица 48 - Уравнения для вычисления Бодрейта и значения Регистра UBRRУравнения для вычисления
Уравнения для вычисления
Режим работы
Бодрейта
значения Регистра UBRRАсинхронный Нормальный Режим
(U2X = 0)Асинхронный Режим с Удвоенной
Скоростью(U2X = 1)Синхронный Master-режимBAUD – Бодрейт - скорость передачи данных, представляет собой определенное количество передаваемых битов всекунду, чаще всего 1 бод=8 бит/с;– Системная тактовая частота;fOSC
UBRR – Это Регистр для настройки Бодрейта, состоит он из двух Регистров UBRRH и UBRRL, максимальное
значение , которое можно записать в UBRR является 12-битным (0-4095). Несколько примеров значенийдля Регистра UBRR с соответствующими им частотами приведены в Таблице 56 (смотрите страницу 133).

Двойная Скорость Работы (U2X)
Принимаемый поток данных может быть удвоен настройкой соответствующего бита U2X в Регистре UCSRA.
Установка этого бита дает эффект только при Асинхронной работе USART. Этот бит следует сбрасывать в ноль,если используется Синхронный Режим Работы USART. Установка этого бита уменьшит коэффициент деления
делителя для Бодрейта с 16 до 8, таким образом, повысив в два раза передачу данных при Асинхронном Режиме
Работы USART. Однако, обратите внимание, что Приемник в этом случае использует только половину числа
выборок (выборка уменьшится с 16 до 8 импульсов) для определения Битов Данных и определения БитаСинхронизации, и, таким образом, предъявляются повышенные требования к точности настройки Бодрейта истабильности Системной Тактовой Частоты. _.

Тактирование от Внешнего Источника
Тактирование от Внешнего Источника используется в Синхронном Slave-режиме работы. Написанное вэтом разделе относится к Рисунку 53. Такты от Внешнего Источника поступают на ножку XCK в Регистр
Синхронизации для обработки. Затем, эти такты с выхода Регистра Синхронизации должны пройти через Детектор
Фронта и только после этого они могут быть использованы Передатчиком и Приемником. Этот процесс занимаетдва тактовых цикла ЦПУ, то есть, получается задержка, отсюда – максимальная частота Внешнего Источника,поступающая на ножку XCK, ограничена следующим уравнением:Примечание: Значение fosc зависит от стабильности Системной Тактовой Частоты. Поэтому рекомендуетсяэто учитывать для того, чтобы исключить возможную потерю данных.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

79

Работа в Синхронном РежимеПри Работе в Синхронном Режиме (UMSEL=1) вывод XCK используется как Тактовый Вход (Slave-режим)или как Тактовый Выход (Master-режим). Здесь принцип работы в том, что Входные Данные (поступающие наВывод RxD) сэмплируются (осуществляется выборка) противоположным фронтом тактового импульса XCKОтносительно того фронта, которым осуществляется передача данных на Вывод TxD:Рисунок 54 – Временные диаграммы для Синхронного режима
Биты UCPOL и UCRSC определяют, какой фронт сигнала на XCK используется для сэмплирования
Входных Данных и Выходных. На Рисунке 54 показано, что, когда бит UCPOL = 0, то Биты Выходных Данных
будут меняться по нарастающему фронту XCK, а сэмплироваться – по спадающему фронту XCK. Если бит
UCPOL=1, то Биты Выходных Данных будут меняться по нарастающему фронту XCK, а Входные Данные
сэмплируются по нарастающему фронту.

Формат Кадра
Формат Кадра определяет свойства порции Битов Данных, где должны присутствовать битысинхронизации (стартовый и стоповый) и дополнительно можно внести Биты Четности. Модуль USART работаетсо всеми следующими комбинациями кадров:• 1 - Стартовый Бит;• 5,6,7,8 или 9 Битов Данных;• Биты Четности (Нечетности) могут присутствовать или отсутствовать;• 1 или 2 Стоповых Бита;Кадр начинается со Стартового Бита, он является самым младшим. Следом за ним идут Биты Данных одинза другим последовательно, заканчивается Кадр самым старшим битов. Если это разрешено, то Биты Четности
(Нечетности) будут вставляться сразу после Битов Данных и, одновременно, перед Стоповым битом. Когда
передача данного Кадра будет закончена, непосредственно за ним может последовать другой Кадр с новыми
данными, в противном случае, линия связи переходит в Холостое Состояние, когда на линии присутствует высокий
логический уровень. Рисунок 55 иллюстрирует возможные комбинации формата Кадра. Биты внутри скобок
являются опционально включаемыми (если требуются).

Рисунок 55 – Формат Кадра

•
•
•
•

St – Стартовый Бит (всегда является низким лог. уровнем);(n) – Биты Данных (от 0 до 8);
P – Бит Четности (Нечетности);FRAME – Весь Кадр;г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

80

•
•

Sp – Стоповый Бит (всегда является высоким лог. уровнем);IDLE – Нет передачи на линии связи (RxD или TxD).

Формат Кадра для USART устанавливается Битами UCSZ2:0, UPM1:0 и USBS в Регистрах UCSRB иUCSRC. Приемник и Передатчик пользуются одинаковыми настройками. Обратите внимание, что смена настроек
этих битов во время работы USART непременно дает сбой во время связи, как для Приемника, так и дляПередатчика.
Биты SIZe (UCSZ2:0) настраивают число Битов Данных в Кадре. Биты UPM1:0 разрешают и настраивают
какой тип Битов использовать Четности или Нечетности. Выбор между двумя или одним Стоповыми Битами
осуществляет Бит USBS. Приемник игнорирует Второй Стоповый Бит. FE (Frame Error – Ошибка Кадра) будет
определена только, если Первый Стоповый Бит равен нулю.

Вычисление Бита Четности (Нечетности)Вычисление идет Исключающим ИЛИ для всех Битов Данных. Если используется Бит Нечетности (Odd),
то результат операции Исключающее ИЛИ инвертируется. Соотношения между Битами Четности (Нечетности) иБитами Данных следующие:•••Peven – Бит Четности;Podd – Бит Нечетности;dn – Бит Данных;Если Бит Четности (Нечетности) используется, то он располагается между последним Битом Данных иПервым Стоповым Битом.

Инициализация USART (задание начальных условий)Инициализация USART должна быть сделана прежде, чем этот модуль будет использован дляосуществления связи. Процесс инициализации состоит из настройки Бодрейта, настройки формата Кадра ивключения разрешения работы Передатчика и/или Приемника. Во время инициализации USART Прерывания
должны быть запрещены Глобально. При реинициализацией, когда надо поменять Бодрейт или формат Кадра, надоудостовериться, что в этот момент не осуществляется обмен данными по линии связи. Флаг TXC может бытьиспользован для того, чтобы определить, что передача данных была завершена. А Флаг RXC можно использоватьдля того, чтобы удостовериться, что в Буфере приемника не осталось не прочитанных данных. Обратите внимание,что Флаг TXC должен очищаться каждый раз перед передачей данных (перед записью данных в Регистр UDR),конечно, если этот Флаг используется в этих целях.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

81

Следующие примеры кода для инициализации USART показывают одну Ассемблерную и одну Сфункцию, которые между собой эквивалентны. Эти примеры предполагают Асинхронный Режим Работы USART спериодическим опросом флагов (когда прерывания запрещены) и фиксированный формат Кадра. Переменная длянастройки Бодрейта является входным параметром функции. Для Ассемблерной функции переменная длянастройки Бодрейта сохранена в Регистрах R17 и R16.

Примечание: 1. Предполагается, что соответствующие заголовочные файлы подключены. _.
Более универсальные функции инициализации могут иметь в качестве входных параметров формат Кадраи запрещать/разрешать Прерывания и т.д. Однако, многие приложения используют фиксированный формат Кадра,фиксированный Бодрейт и настройку Управляющих Регистров и в этом случае инициализация USART может
проводиться прямо в Главной Программе или может комбинироваться кодом инициализации других I/O-модулей.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

82

Передача Данных – Передатчик USARTРабота Передатчика USART разрешается установкой Бита TXEN в Регистре UCSRB. Если это сделано, тонормальная функция порта, где находится ножка TxD, игнорируется, и ей назначается функция последовательной
передачи данных от Передатчика USART. Бодрейт, Режим Работы и формат Кадра должны быть настроены перед
тем, как начать пользоваться Передачей Данных. Если используется Синхронный Режим Работы, то другие
функции ножки XCK будут игнорироваться, а этот Вывод будет использоваться как линия синхронизации припередаче данных.

Пересылка Кадров размером от 5до 8 Битов Данных
Передача Данных начинается после загрузки в Буфер Передатчика полезных данных, которые надоотправить по линии связи. ЦПУ может заполнить этот Буфер записав соответствующие Полезные Данные вРегистр UDR. Эти Буферизированные Полезные Данные переместятся в Сдвиговый Регистр, когда этот Регистр
будет готов отправить новый Кадр. Сдвиговый Регистр загрузит в себя новые Полезные Данные, если линия
передачи находится в Холостом Состоянии (Idle) или немедленно после последнего Стопового Бита предыдущего
передаваемого кадра. Когда Сдвиговый Регистр загрузится Новыми Полезными Данными, он начнет передавать ихс заранее установленной скоростью, скорость (Бодрейт) зависит не только от Регистра UBRR, но и от Бита U2X и
XCK, в зависимости от выбранного Режима.
Следующий пример кода содержит простую функцию для Передачи Данных при опросе Флага
Опустошения Регистра Данных UDRE. При использовании формата Кадра меньшего, чем 8 бит, то более старшиепо номеру разряда биты, которые записываются в Регистр Данных, просто игнорируются. USART должен бытьинициализирован перед использованием этих функций. Для Ассемблерной функции предполагается, чтопередаваемые данные предварительно сохраняются в Регистр R16.

Примечание: 1. Предполагается, что соответствующие заголовочные файлы подключены. _.
Эти функции просто ждут, пока появится Флаг UDRE, что будет символизировать об опустошении Буфера
Передатчика. Если Прерывание по Опустошению Регистра UDR разрешено, то при опустошении его произойдет
установка Флага UDRE и подпрограмма (функция) запишет Новые Данные в Регистр UDR.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

83

Пересылка Кадра с 9 Битами Данных
Если используется 9-битный размер Кадра (UCSZ = 7), тогда 9й Бит должен быть записан в Бит TXB8 в
Регистре UCSRB до того, как младший байт будет записан в Регистр UDR. Следующий пример Кода содержит
функцию обработки 9-битного Кадра. Для Ассемблерной функции предполагается, что передаваемые данные
предварительно сохраняются в Регистрах R17:R16.

Примечание:1. Эти функции могут быть оптимизированы, если содержание Регистра UCSRB сделать
статическим. К примеру, можно использовать после инициализации только Бит TXB8
Регистра UCSRB.
2. Предполагается, что соответствующие заголовочные файлы подключены. _.

Девятый Бит может быть использован для индикации адреса Кадра при Мультипроцессорной Связи или для других
нужд, к примеру, синхронизации.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

84

Флаги Передатчика и Прерывания
USART Передатчик имеет два Флага для индикации Его состояния: Флаг UDRE говорит о том, чтоРегистр UDRE пуст, а Флаг TXC – о том, что Передача Данных завершена. Оба эти флага могут быть использованыдля генерирования Прерываний .
Флаг UDRE устанавливается, когда Буфер Передатчика готов снова принять Новые Данные. Этот Битустанавливается, когда Буфер Передатчика опустошается, а очищается Флаг, когда Буфер принимает Данные дляПередачи, которые не были еще перемещены в Сдвиговый Регистр. Для совместимости программного обеспеченияс будущими устройствами (МК) всегда устанавливайте этот Бит в ноль при записи в Регистр UCSRA.
При установке Бита UDRIE в Регистре UCSRB происходит разрешение срабатывания Прерывания поопустошению Регистра UDR, это Прерывание будет вызываться так долго, пока Оно будет разрешено (должен
быть установлен Глобальный Бит разрешения Прерываний). UDRE очищается при записи данных в UDR.
Обработчик Прерывания (функция) должна записать Новые Данные в UDR для того, чтобы снять Флаг UDRE илиобработчик может запретить Прерывание по Опустошению, в противном случае прерывание произойдет снова
после выхода из Подпрограммы Обработчика.
Флаг TXC устанавливается в 1, когда весь Кадр был «выдвинут» из Сдвигового Регистра, а новые данные вРегистр UDR не поступили. Флаг TXC очищается автоматически, когда по завершению передачи данных
вызывается Прерывание или, еще, он может быть очищен записью в него логической единицы. Флаг TXC полезенпри Полудуплексной Связи (к примеру, интерфейс RS-485), когда приложение должно по завершению передачи
немедленно освободить линию связи и войти в Режим Приемника.
\Если в Регистре UCSRB установлен Бит TXCIE, то по завершению Передачи Данных будет
устанавливаться Флаг TXC и будет вызываться Прерывание (Должно быть установлено Глобальное разрешение
Прерываний). Когда срабатывает Прерывание по завершению Передачи Данных, Обработчик Прерывания недолжен очищать Флаг TXC, это происходит автоматически при срабатывании Прерывания.

Генератор
Равенства

Четности

(Нечетности)–Генератор

Генератор Равенства подсчитывает Биты Равенства (Биты Четности и Нечетности) в Кадре данных. ЕслиБит UPM=1, то Логическая Схема Передатчика вставляет Бит Равенства между последним Битом Данных иПервым Стоповым Битом в Кадре, который следует отослать.

Выключение Передатчика (запрет)Выключение Передатчика (установкой Бита TXEN в ноль) не даст эффекта, пока и, если передача данныхеще не завершена. _ . Когда же Передатчик будет выключен, он больше не сможет Игнорировать нормальные
(обычные) функции вывода TxD.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

85

Прием Данных – Приемник USARTРабота Приемника USART разрешается установкой Бита RXEN в единицу, который находится в РегистреUCSRB. При разрешении работы Приемника нормальная функция (работа) вывода RxD игнорируется модулем
USART и ей назначается функция Входа Приемника с последовательным приемом данных. Настройка Бодрейта,Режима Работы и Формат Кадра должна быть сделана до того, как Приемник будет использоваться по назначению.
Если используется Синхронный Режим Работы, то такты на выводе XCK будут использоваться для синхронизации
передачи.

Прием Кадра с 5 и 8 Битами Данных
Приемник начинает принимать Биты Данных, когда успешно определяет приход Стартового Бита. Каждый
бит, идущий за стартовым, будет отсемплирован (выбран) в соответствии с предустановленным Бодрейтом, либо всоответствии с синхронизующими тактами на выводе XCK, далее они будут передаваться в Сдвиговый Регистр,пока не будет принят Первый Стоповый Бит. Второй Стоповый Бит Приемником будет игнорироваться. Поприходу Первого Стопового Бита весь Кадр оказывается в Сдвиговом Регистре, откуда его содержимое
перемещается в Буфер Приемника. Буфер Приемника может быть прочитан через чтение Регистра Данных UDR.
Следующий простой пример кода показывает простую функцию для Приемника USART, которая
базируется на опросе флага RXC, который, в свою очередь, говорит об окончании приема. При использовании
Размера Кадра меньшего, чем 8 Бит Данных, более старшие биты из UDR будут читаться как нули. Настройка
USART должна быть выполнена до того, как подобная функция будет использоваться.

Примечание: 1. Предполагается, что соответствующие заголовочные файлы подключены. _.
Эта функция (подпрограмма) просто ожидает, пока данные не появятся в Буфере Приемника, для этого онапостоянно проверяет Флаг RXC. После того, как этот Флаг установится в 1, эта функция прочитает Регистр UDR ивозвратит его значение.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

86

Прием Кадра с 9 Битами Данных
Если используется размер Кадра равный 9 Битам (в этом случае в Регистр UCSZ загружается число 7), то вкачестве 9 Бита Данных используется Бит RXB8, который находится в Регистре UCSRB. Этот Бит должен бытьпрочитан раньше остальных более младших битов, которые находятся в UDR. Правильным подходом будет
сначала читать Статус-Флаги, такие как: FE, DOR и UPE. Они находятся в Регистре UCSRA. После чего, далее,можно прочитать UDR. Чтение UDR изменит состояние Буфера Приемника FIFO и, следовательно, - Битов TXB8,
FE, DOR, и UPE, которые все сохранены в FIFO.
Следующий простой пример кода показывает простую функцию для Приемника USART, которая
обрабатывает одновременно 9-й Бит и Биты Статуса.

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

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)

Лист

87

Флаг Окончания Приема и Прерывание
Приемник USART имеет один Флаг, который служит в качестве индикатора о состоянии Приемника, этоФлаг RXC. . По состоянию Бита RXC можно определить имеются ли непрочитанные Данные в Буфере Приемника.
Этот Флаг (Бит) устанавливается в Единицу, когда в Буфере Приемника имеются непрочитанные Данные иустанавливается в Ноль, когда Буфер Приемника пуст (т.е. не содержит Данных). Если работа Приемника
запрещена (RXEN = 0) то Буфер Приемника будет опустошен и, следовательно, Бит RXC установится в Ноль.
Если Прерывание по Окончанию Приема разрешено, т.е., если установлен Бит RXCIE в Регистре UCSRB,то Это Прерывание будет срабатывать так долго, как долго Бит RXC будет содержать единицу (если Прерыванияне запрещены Глобально). Если для приема данных используется Прерывание по Окончанию Приема, тоПодпрограмма (Функция) для обработки Прерывания должна осуществлять чтение Регистра UDR для того, чтобы
очищать Флаг RXC, в противном случае, по окончанию обработки Прерывания, при выходе из Подпрограммы
обработчика Прерывания, это же Прерывание будет вызвано еще раз.

Флаг Ошибки по Приему
Приемник USART имеет в своем распоряжении Три Флага Ошибки: Флаг FE – говорит об ошибке Кадра,Флаг DOR – говорит о Переполнении Данных, Флаг UPE – говорит об ошибке Четности (Нечетности). Ко всемэтим Флагам имеется доступ через Регистр UCSRA. Все эти Флаги располагаются в Буфере Приемника вместе сКадром Данных, собственно, о статусе которого, они и сообщают. Чтение Флагов, которые находятся в Буфере
Приемника, должно осуществляться раньше чтения Регистра Данных UDR, так. как чтение UDR изменяет
состояние Буфера Приемника. Состояние Флагов не может быть изменено программно пользователем. Однако, всеФлаги могут быть сброшены в Ноль соответствующей записью в Регистре UCSRA, это сделано для совместимостис будущими реализациями USART. Ни один из этих Флагов не может Генерировать Прерывания.
Флаг FE говорит о том, в каком состоянии находится Первый Стоповый Бит Кадра Данных, который
сохранен в Буфере Приемника. Флаг FE содержит Ноль, если Стоповый Бит был успешно прочитан (как Единица)и Флаг FE будет установлен в Единицу, если Стоповый Бит будет некорректным – Нулевым. Этот Флаг может
быть использован для определения рассинхронизации при работе Приемника или просто – для протокола, когда
нужно убедиться, что Ошибки Кадра не было. На Флаг FE установка Бита USBS (в Регистре UCSRC) не влияет,так как Приемник игнорирует все Биты, кроме Первого Стопового. Для совместимости вашей программы сбудущими устройствами, при записи в Регистр UCSRA всегда устанавливайте этот Бит USBS в Ноль.

Флаг DOR индицирует потерю Данных при переполнении Буфера Приемника. Флаг DOR устанавливаетсяпри полном заполнении Буфера Приемника (два цифровых слова), когда новое слово находится в Сдвиговом
Регистре и его Стартовый Бит определен. Если Флаг DOR установлен в Единицу, то это значит, что было потеряно
один или несколько Кадров между последним правильно прочитанным Кадром и читаемым в данный момент
времени. Для совместимости программы с будущими устройствами (МК), всегда записывайте в этот Бит Ноль призаписи данных в Регистр UCSRA. Флаг DOR очищается аппаратно, когда правильно принятый Кадр перемещаетсяиз Сдвигового Регистра в Буфер Приемника.
Флаг UPE (Четности-Нечетности) в состоянии логической единицы говорит о том, что следующий кадр,который находится в Буфере Приемника, имеет ошибку на Четность или Нечетность. Если проверка ЧетностиНечетности запрещена, то бит UPE всегда будет читаться как ноль. Для совместимости ПО с будущими МК, всегда
сбрасывайте бит UPE в ноль при записи данных в Регистр UCSRA. За деталями обращайтесь к разделу
«Вычисление Бита Четности (Нечетности)» на странице115 и – к разделу «Схема Проверки Четности-Нечетности»на странице 123.

г Шахты
ЮРГУЭС

iprito@mail.ruКонев ДН осень

Магистратура Подпись

2006г

ATtiny2313 документация (полная)Лист

88