Атмел

8-разрядный микроконтроллер AVR Atmel с программируемой внутрисистемной флэш-памятью объемом 2/4/8 КБчип

 

Функции

  • Высокопроизводительный 8-разрядный микроконтроллер AVR® с низким энергопотреблением
  • Расширенная архитектура RISC
  • 120 мощных инструкций - большинство из них выполняется за один тактовый цикл
  • 32 x 8 рабочих регистров общего назначения
  • Полностью статическая работа
  • Энергонезависимая память программ и данных
  • 2/4/8 Кбайт внутрисистемной программируемой флэш-памяти программ
  • Выносливость: 10,000 XNUMX циклов записи/стирания
  • 128/256/512 байтов EEPROM, программируемая внутри системы
  • Выносливость: 100,000 XNUMX циклов записи/стирания
  • 128/256/512 байт внутренней SRAM
  • Блокировка программирования для самопрограммируемой флэш-программы и защиты данных EEPROM

Периферийные функции

  • 8-битный таймер / счетчик с предделителем и двумя каналами ШИМ
  • 8-битный высокоскоростной таймер / счетчик с отдельным предделителем
  • 2 высокочастотных ШИМ-выхода с отдельными выходными регистрами сравнения
  • Программируемый генератор мертвого времени
  • USI - универсальный последовательный интерфейс с детектором условий запуска
  • 10-битный АЦП

4 односторонних канала

2 пары дифференциальных каналов АЦП с программируемым усилением (1x, 20x)

Измерение температуры

Программируемый сторожевой таймер с отдельным встроенным генератором

Встроенный аналоговый компаратор

Специальные функции микроконтроллера

Встроенная система отладки debugWIRE

Программируется в системе через порт SPI

Внешние и внутренние источники прерываний

Низкое энергопотребление в режиме ожидания, шумоподавление АЦП и режимы пониженного энергопотребления

Улучшенная схема сброса при включении питания

Программируемая цепь обнаружения пониженного напряжения

Внутренний калиброванный осциллятор

Ввод / вывод и пакеты

Шесть программируемых линий ввода / вывода

8-контактный PDIP, 8-контактный SOIC, 20-контактный QFN / MLF и 8-контактный TSSOP (только ATtiny45 / V)

Рабочий объемtage
- 1.8 - 5.5 В для ATtiny25V / 45V / 85V
- 2.7 - 5.5 В для ATtiny25 / 45/85

Скоростной класс
- ATtiny25V / 45V / 85V: 0 - 4 МГц при 1.8 - 5.5 В, 0 - 10 МГц при 2.7 - 5.5 В
- ATtiny25 / 45/85: 0 - 10 МГц при 2.7 - 5.5 В, 0 - 20 МГц при 4.5 - 5.5 В

Промышленный температурный диапазон

Низкое энергопотребление

Активный режим:

1 МГц, 1.8 В: 300 мкА

Режим пониженного энергопотребления:

Конфигурации контактов

Распиновка ATtiny25 / 45/85 Конфигурация

Описания контактов

VCC: объем поставкиtage.
GND: Земля.
Порт B (PB5:PB0): Порт B — это 6-битный двунаправленный порт ввода-вывода с внутренними нагрузочными резисторами (выбирается для каждого бита). Выходные буферы порта B имеют симметричные характеристики возбуждения с высокой пропускной способностью как приемника, так и истока. В качестве входов выводы порта B, на которые извне подается низкий уровень, будут источником тока, если активированы подтягивающие резисторы. Выводы порта B находятся в тройном состоянии, когда состояние сброса становится активным, даже если часы не работают.

Порт B также выполняет функции различных специальных функций ATtiny25 / 45/85, перечисленных в списке.
На ATtiny25 программируемые порты ввода-вывода PB3 и PB4 (контакты 2 и 3) меняются местами в режиме совместимости с ATtiny15 для поддержки обратной совместимости с ATtiny15.

СБРОС: сброс ввода. Низкий уровень на этом выводе, превышающий минимальную длину импульса, приведет к сбросу, даже если часы не работают и при условии, что вывод сброса не отключен. Минимальная длительность импульса указана в Таблица 21-4 на странице 165. Более короткие импульсы не гарантируют сброса.

Вывод сброса также может использоваться как (слабый) вывод ввода / вывода.

Надview

ATtiny25 / 45/85 - это маломощный 8-битный CMOS-микроконтроллер, основанный на архитектуре RISC, улучшенной AVR. Выполняя мощные инструкции за один такт, ATtiny25 / 45/85 достигает пропускной способности, приближающейся к 1 MIPS на МГц, что позволяет разработчику системы оптимизировать энергопотребление в зависимости от скорости обработки.

Блок-схема Блок-схема

Ядро AVR сочетает в себе богатый набор команд с 32 рабочими регистрами общего назначения. Все 32 регистра напрямую подключены к Арифметико-логическому устройству (ALU), что позволяет получить доступ к двум независимым регистрам в одной инструкции, выполняемой за один такт. Результирующая архитектура более эффективна с точки зрения кода и обеспечивает до десяти раз более высокую пропускную способность, чем обычные микроконтроллеры CISC.

ATtiny25 / 45/85 обеспечивает следующие функции: 2/4 / 8K байт программируемой внутри системы флэш-памяти, 128/256/512 байт EEPROM, 128/256/256 байт SRAM, 6 линий ввода / вывода общего назначения, 32 общих целевые рабочие регистры, один 8-битный таймер / счетчик с режимами сравнения, один 8-битный высокоскоростной таймер / счетчик, универсальный последовательный интерфейс, внутренние и внешние прерывания, 4-канальный 10-битный АЦП, программируемый сторожевой таймер с внутренним Осциллятор и три режима энергосбережения, выбираемые программным способом. В режиме ожидания процессор останавливается, позволяя продолжать работу SRAM, таймеру / счетчику, АЦП, аналоговому компаратору и системе прерывания. В режиме пониженного энергопотребления сохраняется содержимое регистра, отключая все функции микросхемы до следующего прерывания или аппаратного сброса. В режиме шумоподавления АЦП останавливается ЦП и все модули ввода / вывода, кроме АЦП, чтобы минимизировать шум переключения во время преобразования АЦП.

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

AVR ATtiny25 / 45/85 поддерживается полным набором программных и системных средств разработки, включая компиляторы C, сборщики макросов, программный отладчик / симуляторы и оценочные комплекты.

О ресурсах

Полный набор инструментов разработки, заметки по применению и таблицы данных доступны для загрузки на http://www.atmel.com/avr.

Код Exampле

Эта документация содержит простой код exampВ файлах кратко показано, как использовать различные части устройства. Этот код exampПредполагается, что конкретный заголовок file включается перед компиляцией. Имейте в виду, что не все поставщики компиляторов C включают определения битов в заголовок. files и обработка прерываний в C зависит от компилятора. Для получения дополнительных сведений обратитесь к документации компилятора C.

Для регистров ввода / вывода, расположенных в расширенной карте ввода / вывода, инструкции «IN», «OUT», «SBIS», «SBIC», «CBI» и «SBI» должны быть заменены инструкциями, которые обеспечивают доступ к расширенному I / O. Обычно это означает «LDS» и «STS» в сочетании с «SBRS», «SBRC», «SBR» и «CBR». Обратите внимание, что не все устройства AVR включают расширенную карту ввода-вывода.

Емкостное сенсорное распознавание

Библиотека Atmel QTouch предоставляет простое в использовании решение для сенсорных интерфейсов на микроконтроллерах Atmel AVR. Библиотека QTouch включает поддержку методов сбора данных QTouch® и QMatrix®.

Сенсорное распознавание легко добавляется в любое приложение путем связывания библиотеки QTouch и использования интерфейса прикладного программирования (API) библиотеки для определения сенсорных каналов и датчиков. Затем приложение вызывает API для получения информации о канале и определения состояния сенсорного датчика.

Библиотека QTouch бесплатна и может быть загружена с сайта Atmel. webсайт. Для получения дополнительной информации и подробностей реализации обратитесь к Руководству пользователя библиотеки QTouch, которое также можно получить на сайте Atmel. webсайт.

Хранение данных

Результаты аттестации надежности показывают, что прогнозируемая частота отказов при хранении данных намного меньше 1 PPM в течение 20 лет при 85 ° C или 100 лет при 25 ° C.

Ядро процессора AVR

Введение

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

Архитектурный Overview Архитектура

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

Реестр быстрого доступа File содержит 32 x 8-битных рабочих регистра общего назначения с временем доступа за один такт. Это позволяет работать арифметико-логическому устройству (АЛУ) в однотактном режиме. В типичной операции АЛУ из регистра выводятся два операнда. File, операция выполняется, и результат сохраняется в регистре. File- за один такт.

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

ALU поддерживает арифметические и логические операции между регистрами или между константой и регистром. Операции с одним регистром также могут выполняться в АЛУ. После арифметической операции регистр состояния обновляется, чтобы отразить информацию о результате операции.

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

Во время прерываний и вызовов подпрограмм в стеке сохраняется программный счетчик адреса возврата (ПК). Стек эффективно выделяется в SRAM общих данных, и, следовательно, размер стека ограничивается только общим размером SRAM и использованием SRAM. Все пользовательские программы должны инициализировать SP в процедуре сброса (перед выполнением подпрограмм или прерываний). Указатель стека (SP) доступен для чтения и записи в пространстве ввода-вывода. Доступ к SRAM данных можно легко получить с помощью пяти различных режимов адресации, поддерживаемых архитектурой AVR.

Все пространства памяти в архитектуре AVR представляют собой линейные и обычные карты памяти.

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

Область памяти ввода-вывода содержит 64 адреса для периферийных функций ЦП, таких как регистры управления, SPI и другие функции ввода-вывода. Доступ к памяти ввода / вывода можно получить напрямую или в качестве ячеек пространства данных, следующих за местоположениями в регистре. File, 0x20 - 0x5F.

ALU - Арифметико-логический блок

Высокопроизводительный AVR ALU напрямую связан со всеми 32 рабочими регистрами общего назначения. В пределах одного такта выполняются арифметические операции между регистрами общего назначения или между регистром и непосредственным значением. Операции ALU делятся на три основные категории - арифметические, логические и битовые функции. Некоторые реализации архитектуры также предоставляют мощный умножитель, поддерживающий как знаковое / беззнаковое умножение, так и дробный формат. См. Подробное описание в разделе «Набор команд».

Регистр статуса

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

Регистр состояния не сохраняется автоматически при входе в программу обработки прерывания и не восстанавливается при возврате из прерывания. Это должно выполняться программным обеспечением.

SREG - Регистр состояния AVR

Регистр состояния AVR - SREG - определяется как:

Кусочек 7 6 5 4 3 2 1 0
0x3F I T H S V N Z C СРЕГ
Чтение/Запись Ч/З Ч/З Ч/З Ч/З Ч/З Ч/З Ч/З Ч/З
Начальная стоимость 0 0 0 0 0 0 0 0

Бит 7 - I: разрешение глобального прерывания

Бит разрешения глобального прерывания должен быть установлен, чтобы прерывания были разрешены. Затем управление разрешениями отдельных прерываний выполняется в отдельных регистрах управления. Если глобальный регистр разрешения прерывания очищен, ни одно из прерываний не разрешается независимо от индивидуальных настроек разрешения прерывания. Бит I сбрасывается аппаратно после возникновения прерывания и устанавливается инструкцией RETI для разрешения последующих прерываний. I-бит также может быть установлен и сброшен приложением с помощью инструкций SEI и CLI, как описано в справочнике по набору инструкций.

Бит 6 - T: Хранение битовых копий

Команды копирования битов BLD (Bit LoaD) и BST (Bit STore) используют T-бит в качестве источника или назначения для обрабатываемого бита. Немного из реестра в Реестре File может быть скопирован в T с помощью инструкции BST, а бит в T может быть скопирован в бит в регистре в регистре File по инструкции BLD.

Бит 5 - H: флаг полупереноса

Флаг полупереноса H указывает на полуперенос в некоторых арифметических операциях. Half Carry полезен в арифметике BCD. См. «Описание набора команд» для получения подробной информации.

Бит 4 — S: знаковый бит, S = N ⊕ V

S-бит всегда является исключительным или находится между отрицательным флагом N и флагом переполнения двух дополнений V. См. «Описание набора команд» для получения подробной информации.

Бит 3 - V: флаг переполнения дополнения до двух

Флаг переполнения дополнения до двух V поддерживает арифметику дополнения до двух. См. «Описание набора команд» для получения подробной информации.

Бит 2 - N: отрицательный флаг

Отрицательный флаг N указывает на отрицательный результат арифметической или логической операции. См. «Описание набора команд» для получения подробной информации.

Бит 1 - Z: нулевой флаг

Нулевой флаг Z указывает на нулевой результат арифметической или логической операции. См. «Описание набора команд» для получения подробной информации.

Бит 0 - C: флаг переноса

Флаг переноса C указывает перенос в арифметической или логической операции. См. «Описание набора команд» для получения подробной информации.

Реестр общего назначения File

Регистр File оптимизирован для набора команд AVR Enhanced RISC. Для достижения требуемой производительности и гибкости Регистром поддерживаются следующие схемы ввода / вывода. File:

Один 8-битный выходной операнд и один 8-битный входной результат

Два 8-битных выходных операнда и один 8-битный входной результат

Два 8-битных выходных операнда и один 16-битный входной результат

Один 16-битный выходной операнд и один 16-битный входной результат

Рисунок 4-2 показывает структуру 32 рабочих регистров общего назначения в ЦП. Общего назначения

Как показано на Рисунок 4-2, каждому регистру также назначается адрес памяти данных, отображающий их непосредственно в первые 32 ячейки пользовательского пространства данных. Хотя физически не реализована в виде ячеек SRAM, эта организация памяти обеспечивает большую гибкость в доступе к регистрам, поскольку регистры X-, Y- и Z-указателя могут быть настроены для индексации любого регистра в file.Большинство инструкций, действующих в Реестре File имеют прямой доступ ко всем регистрам, и большинство из них являются однократными инструкциями.

Регистр X, регистр Y и регистр Z

Регистры R26..R31 имеют некоторые дополнительные функции для их общего использования. Эти регистры представляют собой 16-разрядные адресные указатели для косвенной адресации пространства данных. Три регистра косвенного адреса X, Y и Z определены, как описано в Рисунок 4-3.

Зарегистрироваться

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

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

Стек в основном используется для хранения временных данных, для хранения локальных переменных и для хранения адресов возврата после прерываний и вызовов подпрограмм. Регистр указателя стека всегда указывает на верхнюю часть стека. Обратите внимание, что стек реализован как увеличивающийся от более высоких ячеек памяти к меньшим. Это означает, что команда Stack PUSH уменьшает указатель стека.

Указатель стека указывает на область стека SRAM данных, где расположены стеки подпрограмм и прерываний. Это пространство стека в SRAM данных должно быть определено программой до того, как будут выполнены какие-либо вызовы подпрограмм или разрешены прерывания. Указатель стека должен быть установлен выше 0x60. Указатель стека уменьшается на единицу, когда данные помещаются в стек с помощью инструкции PUSH, и уменьшается на два, когда адрес возврата помещается в стек с вызовом подпрограммы или прерыванием. Указатель стека увеличивается на единицу, когда данные извлекаются из стека с помощью инструкции POP, и увеличивается на два, когда данные извлекаются из стека с возвратом из подпрограммы RET или возвратом из прерывания RETI.

Указатель стека AVR реализован в виде двух 8-битных регистров в пространстве ввода-вывода. Фактически используемое количество битов зависит от реализации. Обратите внимание, что пространство данных в некоторых реализациях архитектуры AVR настолько мало, что требуется только SPL. В этом случае регистр SPH отсутствует.

SPH и SPL - Регистр указателя стека

Кусочек 15 14 13 12 11 10 9 8
0x3E СП15 СП14 СП13 СП12 СП11 СП10 СП9 СП8 СПХ
0x3D СП7 СП6 СП5 СП4 СП3 СП2 СП1 СП0 СПЛ
7 6 5 4 3 2 1 0
Чтение/Запись Ч/З Ч/З Ч/З Ч/З Ч/З Ч/З Ч/З Ч/З
Чтение/Запись Ч/З Ч/З Ч/З Ч/З Ч/З Ч/З Ч/З Ч/З
Начальная стоимость РАМЕНД РАМЕНД РАМЕНД РАМЕНД РАМЕНД РАМЕНД РАМЕНД РАМЕНД
Начальная стоимость РАМЕНД РАМЕНД РАМЕНД РАМЕНД РАМЕНД РАМЕНД РАМЕНД РАМЕНД

Время выполнения инструкции

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

Рис4.4

Рисунок 4-4 показывает выборку параллельных инструкций и выполнение инструкций, разрешенные архитектурой Гарварда и регистром быстрого доступа. File концепция. Это основная концепция конвейерной обработки для получения до 1 MIPS на МГц с соответствующими уникальными результатами для функций на стоимость, функций на такт и функций на блок питания.

Рисунок 4-5. Одноцикловая операция ALU

Рис4.5

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

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

Самые низкие адреса в области памяти программ по умолчанию определены как векторы сброса и прерывания. Полный список векторов представлен в «Прерывания» на стр. 48. Список также определяет уровни приоритета различных прерываний. Чем ниже адрес, тем выше уровень приоритета. СБРОС имеет наивысший приоритет, затем идет INT0 - запрос внешнего прерывания 0.

При возникновении прерывания I-бит глобального разрешения прерывания сбрасывается, и все прерывания блокируются. Программное обеспечение пользователя может записывать логическую единицу в I-бит, чтобы разрешить вложенные прерывания. Все разрешенные прерывания могут затем прервать текущую программу обработки прерываний. Бит I устанавливается автоматически при выполнении инструкции возврата из прерывания - RETI.

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

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

Когда AVR выходит из прерывания, он всегда возвращается в основную программу и выполняет еще одну инструкцию, прежде чем будет обработано любое ожидающее прерывание.

Обратите внимание, что регистр состояния не сохраняется автоматически при входе в программу обработки прерывания и не восстанавливается при возврате из программы обработки прерывания. Это должно выполняться программным обеспечением.

При использовании инструкции CLI для отключения прерываний прерывания будут немедленно отключены. После инструкции CLI прерывание выполняться не будет, даже если оно происходит одновременно с инструкцией CLI. Следующий бывшийampВ файле показано, как это можно использовать, чтобы избежать прерываний во время последовательности записи EEPROM по времени.

Код сборки Example
в r16, SREG ; сохранить значение SREG

кли ; отключить прерывания во время временной последовательности

sbi EECR, EEMPE ; запустить запись EEPROM

сби EECR, EEPE

выход SREG, r16 ; восстановить значение SREG (I-бит)

Код C Example
символ cSREG;

cSREG = SREG; /* сохранить значение SREG */

/* отключить прерывания во время последовательности по времени */

_CLI ();

EECR |= (1<

EECR | = (1 <

СРЕГ = кСРЭГ; /* восстановить значение SREG (I-бит) */

При использовании инструкции SEI для разрешения прерываний инструкция, следующая за SEI, будет выполняться перед любыми ожидающими прерываниями, как показано в этом примере.ampле.

Код сборки Example
сей; установить глобальное прерывание

спать; войти в спящий режим, ожидая прерывания

; примечание: войдет в спящий режим до любых ожидающих

; прерывание (а)

Код C Example
_SEI(); /* установить разрешение глобального прерывания */

_СПАТЬ(); /* переходим в спящий режим, ожидая прерывания */

/ * примечание: перейдет в спящий режим перед любым ожидающим прерыванием * /

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

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

Возврат из подпрограммы обработки прерывания занимает четыре тактовых цикла. В течение этих четырех тактов Программный счетчик (два байта) извлекается из стека, указатель стека увеличивается на два и устанавливается бит I в SREG.

Воспоминания AVR

В этом разделе описываются различные памяти в ATtiny25 / 45/85. Архитектура AVR имеет два основных пространства памяти: память данных и область памяти программ. Кроме того, ATtiny25 / 45/85 имеет память EEPROM для хранения данных. Все три области памяти линейны и регулярны.

Внутрисистемная перепрограммируемая флэш-память программ

ATtiny25 / 45/85 содержит 2/4/8 Кбайт встроенной в систему перепрограммируемой флэш-памяти для хранения программ. Поскольку все инструкции AVR имеют ширину 16 или 32 бита, Flash организован как 1024/2048/4096 x 16.

Флэш-память выдерживает не менее 10,000 25 циклов записи / стирания. Счетчик программ ATtiny45 / 85/10 (ПК) имеет ширину 11/12/1024 бит, что позволяет адресовать 2048/4096/XNUMX ячеек памяти программ. «Программа памяти- ming »на странице 147 содержит подробное описание последовательной загрузки Flash-данных с помощью контактов SPI.

Таблицы констант могут быть размещены во всем адресном пространстве памяти программ (см. Описание инструкции LPM - загрузка памяти программ).

Рисунок 5-1. Карта памяти программ Карта памяти

Память данных SRAM

Рисунок 5-2 показывает, как организована память SRAM ATtiny25 / 45/85.

Нижние ячейки памяти данных 224/352/607 адресуют оба регистра. File, память ввода-вывода и внутреннюю SRAM данных. Первые 32 адреса обращаются к Реестру. Fileследующие 64 ячейки относятся к стандартной памяти ввода / вывода, а последние 128/256/512 ячеек адресуют внутреннюю SRAM данных.

Пять различных режимов адресации для крышки памяти данных: прямая, косвенная со смещением, косвенная, косвенная с предварительным декрементом и косвенная с пост-инкрементом. В реестре Fileрегистры с R26 по R31 содержат регистры указателя косвенной адресации.

Прямая адресация распространяется на все пространство данных.

В режиме косвенного со смещением до 63 ячеек адреса от базового адреса, заданного регистром Y или Z.

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

32 рабочих регистра общего назначения, 64 регистра ввода / вывода и 128/256/512 байтов внутренней SRAM данных в ATtiny25 / 45/85 доступны во всех этих режимах адресации. Реестр File описано в «Gen- реестр общего назначения File»На стр. 10.

Рисунок 5-2. Карта памяти данных Карта памяти 2

Доступ к памяти данных Времена

В этом разделе описываются общие концепции синхронизации доступа к внутренней памяти. Доступ к SRAM внутренних данных выполняется за два цикла clkCPU, как описано в Рисунок 5-3.

Рисунок 5-3. Циклы доступа к встроенной SRAM данных На чипе данные Память данных EEPROM

ATtiny25 / 45/85 содержит 128/256/512 байтов памяти EEPROM данных. Он организован как отдельное пространство данных, в котором можно читать и записывать отдельные байты. EEPROM выдерживает не менее 100,000 XNUMX циклов записи / стирания. Доступ между EEPROM и CPU описывается ниже, указывая регистры адреса EEPROM, регистр данных EEPROM и регистр управления EEPROM. Подробнее см. «Последовательная загрузка» на стр. 151.

Доступ для чтения / записи EEPROM

Регистры доступа к EEPROM доступны в области ввода-вывода.

Время доступа для записи в EEPROM указано в Таблица 5-1 на странице 21. Однако функция самосинхронизации позволяет пользовательскому программному обеспечению определять, когда можно записать следующий байт. Если пользовательский код содержит инструкции для записи EEPROM, необходимо принять некоторые меры предосторожности. В источниках питания с сильной фильтрацией VCC, вероятно, будет медленно расти или падать.

Включение / выключение. Это приводит к тому, что устройство в течение некоторого времени работает с напряжениемtage ниже указанного минимума для используемой тактовой частоты. Видеть «Предотвращение повреждения EEPROM» на стр. 19 для получения подробной информации о том, как избежать проблем в таких ситуациях.

Чтобы предотвратить непреднамеренную запись в EEPROM, необходимо соблюдать определенную процедуру записи. Ссылаться на «Атомный Байтовое программирование »на странице 17 и «Программирование с разделением байтов» на стр. 17 для подробностей об этом.

При чтении EEPROM ЦП останавливается на четыре тактовых цикла перед выполнением следующей инструкции. Когда записывается EEPROM, ЦП останавливается на два тактовых цикла перед выполнением следующей инструкции.

Атомарное байтовое программирование

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

Программирование с разделением байтов

Можно разделить цикл стирания и записи на две разные операции. Это может быть полезно, если системе требуется короткое время доступа в течение некоторого ограниченного периода времени (обычно, если источник питания vol.tagе падает). Чтобы воспользоваться преимуществами tagВ этом методе требуется, чтобы записываемые ячейки были стерты перед операцией записи. Но поскольку операции стирания и записи разделены, можно выполнять операции стирания, когда система позволяет выполнять критичные по времени операции (обычно после включения питания).

Стереть

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

Писать

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

Откалиброванный осциллятор используется для измерения времени доступа к EEPROM. Убедитесь, что частота генератора соответствует требованиям, описанным в «OSCCAL - регистр калибровки осциллятора» на стр. 31.

Следующий код exampФайлы показывают одну сборку и одну функцию C для стирания, записи или атомарной записи EEPROM. ЭксampФайлы предполагают, что прерывания управляются (например, путем глобального отключения прерываний), так что прерывания не будут возникать во время выполнения этих функций.

Код сборки Example
EEPROM_запись:

; Дождитесь завершения предыдущей записи

sbic EECR,EEPE

rjmp EEPROM_write

; Установить режим программирования

ldi        r16, (0<<EEPM1)|(0<<EEPM0)

выход EECR, r16

; Установите адрес (r18: r17) в адресном регистре

вне EEARH, r18

из ЭАРЛ, r17

; Записать данные (r19) в регистр данных

вне EEDR, r19

; Записать логическую единицу в EEMPE

сби EECR, EEMPE

; Запустите запись eeprom, установив EEPE

сби EECR,EEPE

в отставке

Код C Example
void EEPROM_write(unsigned char ucAddress, unsigned char ucData)

{

/* Ожидаем завершения предыдущей записи */ while(EECR & (1<

;

/* Установить режим программирования */

EECR = (0 <

/ * Настраиваем регистры адреса и данных * / EEAR = ucAddress;

EEDR = ucData;

/* Записываем логическую единицу в EEMPE */

EECR | = (1 <

/ * Начать запись eeprom, установив EEPE * /

EECR | = (1 <

}

Следующий код examples показывают функции сборки и C для чтения EEPROM. ЭксampПредполагается, что прерывания контролируются так, что во время выполнения этих функций прерывания не возникают.

Код сборки Example
EEPROM_прочитано:

; Дождитесь завершения предыдущей записи

sbic EECR,EEPE

rjmp EEPROM_read

; Установите адрес (r18: r17) в адресном регистре

вне EEARH, r18

из ЭАРЛ, r17

; Запустите чтение eeprom, написав EERE

сби EECR,EERE

; Чтение данных из регистра данных

в r16,EEDR

в отставке

Код C Example
беззнаковый символ EEPROM_read (беззнаковый символ ucAddress)

{

/ * Дождитесь завершения предыдущей записи * /

в то время как (EECR & (1 <

;

/ * Настраиваем регистр адреса * / EEAR = ucAddress;

/* Начать чтение eeprom, написав EERE */

EECR | = (1 <

/ * Возвращаем данные из регистра данных * /

вернуть EEDR;

}

Предотвращение повреждения EEPROM

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

Повреждение данных EEPROM может быть вызвано двумя ситуациями, когдаtagе слишком низкое. Во-первых, обычная последовательность записи в EEPROM требует минимального объемаtage для правильной работы. Во-вторых, сам CPU может некорректно выполнять инструкции, если напряжение питанияtagе слишком мало.

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

Держите AVR RESET активным (низким) в периоды недостаточного напряжения питания.tagе. Это можно сделать, включив внутренний детектор пониженного напряжения (BOD). Если уровень обнаружения внутреннего BOD не соответствует

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

Память ввода / вывода

Определение пространства ввода / вывода ATtiny25 / 45/85 показано на «Сводка реестра» на стр. 200.

Все устройства ввода-вывода ATtiny25 / 45/85 и периферийные устройства размещаются в области ввода-вывода. Все ячейки ввода / вывода могут быть доступны с помощью инструкций LD / LDS / LDD и ST / STS / STD, передавая данные между 32 рабочими регистрами общего назначения и пространством ввода / вывода. Регистры ввода-вывода в диапазоне адресов 0x00 - 0x1F доступны напрямую по битам с использованием инструкций SBI и CBI. В этих регистрах значение отдельных битов можно проверить с помощью инструкций SBIS и SBIC. Обратитесь к разделу набора инструкций для получения более подробной информации. При использовании специальных команд ввода / вывода IN и OUT необходимо использовать адреса ввода / вывода 0x00 - 0x3F. При адресации регистров ввода-вывода как пространства данных с использованием инструкций LD и ST к этим адресам необходимо добавить 0x20.

Для совместимости с будущими устройствами зарезервированные биты должны быть записаны в ноль при доступе. Запрещается записывать зарезервированные адреса памяти ввода-вывода.

Некоторые из флагов состояния очищаются путем записи в них логической единицы. Обратите внимание, что инструкции CBI и SBI будут работать только с указанным битом и, следовательно, могут использоваться в регистрах, содержащих такие флаги состояния. Инструкции CBI и SBI работают только с регистрами от 0x00 до 0x1F.

Регистры управления вводом-выводом и периферийными устройствами описаны в следующих разделах.

Описание реестра

EEARH - адресный регистр EEPROM

Кусочек 7 6 5 4 3 2 1 0
0x1F EEAR8 ЭЕАРХ
Чтение/Запись R R R R R R R Ч/З
Начальная стоимость 0 0 0 0 0 0 0 Х/0

Биты 7: 1 - Res: Зарезервированные биты

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

Биты 0 - EEAR8: адрес EEPROM

Это старший бит адреса EEPROM ATtiny85. В устройствах с меньшим количеством EEPROM, например ATtiny25 / ATtiny45, этот бит зарезервирован и всегда будет считываться нулем. Начальное значение адресного регистра EEPROM (EEAR) не определено, и поэтому перед обращением к EEPROM необходимо записать правильное значение.

EEARL - адресный регистр EEPROM

Кусочек

0x1E EEAR7 EEAR6 EEAR5 EEAR4 EEAR3 EEAR2 EEAR1 EEAR0 ЭАРЛ
Задний / Запись Ч/З Ч/З Ч/З Ч/З Ч/З Ч/З Ч/З Ч/З
Начальная стоимость X X X X X X X X

Бит 7 - EEAR7: адрес EEPROM

Это старший бит адреса EEPROM ATtiny45. В устройствах с меньшим количеством EEPROM, например ATtiny25, этот бит зарезервирован и всегда будет считываться нулем. Начальное значение адресного регистра EEPROM (EEAR) не определено, поэтому перед обращением к EEPROM необходимо записать правильное значение.

Биты 6: 0 - EEAR [6: 0]: адрес EEPROM

Это (младшие) биты адресного регистра EEPROM. Байты данных EEPROM адресуются линейно в диапазоне 0… (128/256 / 512-1). Начальное значение EEAR не определено, поэтому необходимо записать правильное значение, прежде чем можно будет получить доступ к EEPROM.

EEDR - регистр данных EEPROM

Кусочек 7 6 5 4 3 2 1 0
0x1D ЕЕДР7 ЕЕДР6 ЕЕДР5 ЕЕДР4 ЕЕДР3 ЕЕДР2 ЕЕДР1 ЕЕДР0 ЕЭДР
Чтение/Запись Ч/З Ч/З Ч/З Ч/З Ч/З Ч/З Ч/З Ч/З
Начальная стоимость 0 0 0 0 0 0 0 0

Для операции записи EEPROM регистр EEDR содержит данные, которые должны быть записаны в EEPROM по адресу, заданному регистром EEAR. Для операции чтения EEPROM EEDR содержит данные, считанные из

EEPROM по адресу, указанному EEAR.

 

5.5.4 EECR - Регистр управления EEPROM

Бит 7 6 5 4 3 2 1 0
0x1C        – ЕЕПМ1 ЕЕПМ0 ЖУТКИЙ ЕЕМПЕ ЕЕПЕ ЭЕРЕ ЕЭКР
Чтение / запись R R R / W Ч/З Ч/З Ч/З Ч/З Ч/З
Начальное значение 0 0 X X 0 0 X 0

Бит 7 - Res: зарезервированный бит

Этот бит зарезервирован для использования в будущем и всегда будет читаться как 0 в ATtiny25 / 45/85. Для совместимости с будущими устройствами AVR всегда записывайте этот бит в ноль. После прочтения замаскируйте этот бит.

Бит 6 - Res: зарезервированный бит

Этот бит зарезервирован в ATtiny25 / 45/85 и всегда читается как ноль.

Биты 5: 4 - EEPM [1: 0]: Биты режима программирования EEPROM

Установка битов режима программирования EEPROM определяет, какое действие программирования будет запускаться при записи EEPE. Можно запрограммировать данные за одну атомарную операцию (стереть старое значение и запрограммировать новое значение) или разделить операции стирания и записи на две разные операции. Время программирования для различных режимов показано на Таблица 5-1. Пока установлен EEPE, любая запись в EEPMn игнорируется. Во время сброса биты EEPMn будут сброшены на 0b00, если EEPROM не занят программированием.

Таблица 5-1. Биты режима EEPROM

ЕЕПМ1 ЕЕПМ0 Время программирования Операция
0 0 3.4 мс Стирание и запись за одну операцию (атомарная операция)
0 1 1.8 мс Только стереть
1 0 1.8 мс Только запись
1 1 Зарезервировано для будущего использования

Бит 3 - EERIE: Разрешение прерывания готовности EEPROM

Запись EERIE в единицу разрешает прерывание готовности EEPROM, если установлен бит I в SREG. Запись EERIE в ноль отключает прерывание. Прерывание готовности EEPROM генерирует постоянное прерывание, когда энергонезависимая память готова к программированию.

Бит 2 - EEMPE: разрешение основной программы EEPROM

Бит EEMPE определяет, будет ли иметь эффект запись EEPE в один.

Когда установлен EEMPE, установка EEPE в течение четырех тактовых циклов будет программировать EEPROM по выбранному адресу. Если EEMPE равен нулю, установка EEPE не будет иметь никакого эффекта. Когда EEMPE был записан в единицу программно, аппаратное обеспечение сбрасывает бит в ноль после четырех тактовых циклов.

Бит 1 - EEPE: включение программы EEPROM

Сигнал включения программы EEPROM EEPE - это сигнал разрешения программирования для EEPROM. Когда записывается EEPE, EEPROM будет запрограммирован в соответствии с установкой битов EEPMn. Бит EEMPE должен быть записан в единицу до того, как логическая единица будет записана в EEPE, в противном случае запись EEPROM не производится. По истечении времени доступа для записи бит EEPE сбрасывается аппаратно. Когда установлен EEPE, ЦП останавливается на два цикла перед выполнением следующей инструкции.

Бит 0 - EERE: разрешение чтения EEPROM

Сигнал разрешения чтения EEPROM - EERE - это строб чтения EEPROM. Когда в регистре EEAR установлен правильный адрес, бит EERE должен быть записан в единицу для запуска чтения EEPROM. Для чтения EEPROM требуется одна инструкция, и запрошенные данные доступны немедленно. При чтении EEPROM ЦП останавливается на четыре цикла перед выполнением следующей инструкции. Пользователь должен опросить бит EEPE перед началом операции чтения. Если выполняется операция записи, невозможно ни прочитать EEPROM, ни изменить регистр EEAR.

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

Системы часов и их распространение

Распределение часов

CPU Clock

Тактовая частота ЦП направляется в части системы, связанные с работой ядра AVR. БывшийampФайлы таких модулей - это Регистр общего назначения. File, регистр состояния и память данных, содержащие указатель стека. Остановка тактовой частоты процессора запрещает ядру выполнять общие операции и вычисления.

Часы ввода / вывода - clkI / O

Часы ввода / вывода используются большинством модулей ввода / вывода, например таймером / счетчиком. Тактовая частота ввода-вывода также используется модулем внешних прерываний, но обратите внимание, что некоторые внешние прерывания обнаруживаются асинхронной логикой, что позволяет обнаруживать такие прерывания, даже если тактовая частота ввода-вывода остановлена.

Флэш-часы - clkFLASH

Часы Flash контролируют работу интерфейса Flash. Тактовая частота флэш-памяти обычно активна одновременно с тактовой частотой процессора.

Часы АЦП - clkADC

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

Внутренняя ФАПЧ для быстрой генерации периферийных часов - clkPCK

Внутренняя ФАПЧ в ATtiny25 / 45/85 генерирует тактовую частоту, которая в 8 раз умножается от входного сигнала источника. По умолчанию ФАПЧ использует в качестве источника выход внутреннего RC-генератора 8.0 МГц. В качестве альтернативы, если бит LSM PLLCSR установлен, PLL будет использовать выход RC-генератора, разделенный на два. Таким образом, на выходе ФАПЧ частота быстрых периферийных часов составляет 64 МГц. Быстрые периферийные часы или предварительно масштабированные тактовые импульсы могут быть выбраны в качестве источника тактовых импульсов для таймера / счетчика 1 или как системные часы. Видеть Рисунок 6-2. Частота быстрых периферийных часов делится на два при установке LSM PLLCSR, что дает тактовую частоту 32 МГц. Обратите внимание, что LSM нельзя установить, если в качестве системных часов используется PLLCLK.

Рисунок 6-2. Система синхронизации ПКК. Тактирование PCK

ФАПЧ зафиксирована на RC-генераторе, и регулировка RC-генератора через регистр OSCCAL будет одновременно регулировать быструю периферийную синхронизацию. Однако даже если RC-генератор настроен на более высокую частоту, чем 8 МГц, быстрая периферийная тактовая частота достигает насыщения на уровне 85 МГц (худший случай) и продолжает колебаться на максимальной частоте. Следует отметить, что в этом случае система ФАПЧ больше не синхронизируется с тактовой частотой генератора RC. Таким образом, не рекомендуется настраивать OSCCAL на частоту выше 8 МГц, чтобы сохранить ФАПЧ в правильном рабочем диапазоне.

Внутренняя ФАПЧ включается, когда:

Бит PLLE в регистре PLLCSR установлен.

Предохранитель CKSEL запрограммирован на «0001».

Предохранитель CKSEL запрограммирован на «0011».

Бит PLOCK PLLCSR устанавливается, когда PLL заблокирован. И внутренний RC-генератор, и PLL отключаются в режимах отключения питания и ожидания.

Внутренняя ФАПЧ в режиме совместимости с ATtiny15

Поскольку ATtiny25 / 45/85 - это устройство миграции для пользователей ATtiny15, существует режим совместимости с ATtiny15 для обратной совместимости. Режим совместимости с ATtiny15 выбирается путем программирования предохранителей CKSEL на «0011».

В режиме совместимости с ATtiny15 частота внутреннего RC-генератора откалибрована до 6.4 МГц, а коэффициент умножения ФАПЧ установлен на 4x. Видеть Рисунок 6-3. С этими настройками система синхронизации стала совместимой с ATtiny15, и в результате быстрая периферийная синхронизация имеет частоту 25.6 МГц (как и в ATtiny15).

Рисунок 6-3. Система синхронизации PCK в режиме совместимости с ATtiny15. Система тактирования

Источники часов

Устройство имеет следующие параметры источника синхронизации, выбираемые битами Flash Fuse, как показано ниже. Тактовая частота от выбранного источника вводится в тактовый генератор AVR и направляется в соответствующие модули.

Таблица 6-1. Параметры тактирования устройства Выбрать

Опция синхронизации устройства ЦКСЕЛ[3:0](1)
Внешние часы (видеть страница 26) 0000
Высокочастотные часы с ФАПЧ (видеть страница 26) 0001
Калиброванный внутренний осциллятор (видеть страница 27) 0010(2)
Калиброванный внутренний осциллятор (видеть страница 27) 0011(3)
Внутренний осциллятор 128 кГц (видеть страница 28) 0100
Низкочастотный кварцевый генератор (видеть страница 29) 0110
Кристаллический осциллятор / керамический резонатор (видеть страница 29) 1000 – 1111
Сдержанный 0101, 0111

Для всех предохранителей «1» означает незапрограммированный, а «0» означает запрограммированный.

Устройство поставляется с выбранной этой опцией.

При этом будет выбран режим совместимости с ATtiny15, в котором системные часы делятся на четыре, что дает тактовую частоту 1.6 МГц. Для получения дополнительной информации см. «Откалиброванный внутренний осциллятор» на стр. 27.

Различные варианты выбора для каждой опции синхронизации приведены в следующих разделах. Когда ЦП выходит из спящего режима после отключения питания, выбранный источник синхронизации используется для измерения времени запуска, обеспечивая стабильную работу генератора до начала выполнения инструкции. Когда ЦП запускается после сброса, существует дополнительная задержка, позволяющая мощности достичь стабильного уровня перед началом нормальной работы. Сторожевой осциллятор используется для синхронизации этой части времени запуска в реальном времени. Количество циклов осциллятора WDT, используемых для каждого тайм-аута, показано в Таблица 6-2.

Таблица 6-2. Количество циклов сторожевого осциллятора

Типичный тайм-аут Количество циклов
4 мс 512
64 мс 8К (8,192)

Внешние часы

Чтобы управлять устройством от внешнего источника синхронизации, CLKI должен управляться, как показано на Рисунок 6-4. Чтобы устройство работало по внешним часам, предохранители CKSEL должны быть запрограммированы на «00».

Рисунок 6-4. Конфигурация внешнего тактового привода

Рис6.4

Когда выбран этот источник синхронизации, время запуска определяется предохранителями SUT, как показано на Таблица 6-3.

Таблица 6-3. Время запуска для выбора внешних часов

СУТ[1:0] Время запуска после выключения питания Дополнительная задержка от сброса Рекомендуемое использование
00 6 CK 14CK BOD включен
01 6 CK 14CK + 4 мс Быстро нарастающая мощность
10 6 CK 14CK + 64 мс Медленно возрастающая мощность
11 Сдержанный

При применении внешнего тактового сигнала необходимо избегать резких изменений применяемой тактовой частоты, чтобы гарантировать стабильную работу микроконтроллера. Изменение частоты более чем на 2% от одного тактового цикла к другому может привести к непредсказуемому поведению. Требуется обеспечить, чтобы MCU находился в состоянии сброса во время таких изменений тактовой частоты.

Обратите внимание, что предварительную продажу системных часов можно использовать для изменения внутренней тактовой частоты во время выполнения, при этом обеспечивая стабильную работу. Ссылаться на «Предделитель системных часов» на стр. 31 для получения подробной информации.

Высокочастотные часы с ФАПЧ

Существует внутренняя система ФАПЧ, которая обеспечивает номинальную тактовую частоту 64 МГц, привязанную к RC-генератору, для использования Периферийного таймера / счетчика1 и для источника системных часов. При выборе в качестве источника системных часов, путем программирования предохранителей CKSEL на «0001», он делится на четыре, как показано на Таблица 6-4.

Таблица 6-4. Режимы работы высокочастотного тактового генератора PLL

ЦКСЕЛ[3:0] Номинальная частота
0001 16 МГц

Когда выбран этот источник синхронизации, время запуска определяется предохранителями SUT, как показано на Таблица 6-5.

Таблица 6-5. Время запуска высокочастотного тактового генератора PLL

СУТ[1:0] Время запуска после выключения питания Дополнительная задержка после сброса при включении питания (VCC = 5.0 В) Рекомендуемое использование
00 14CK + 1K (1024) CK + 4 мс 4 мс BOD включен

Таблица 6-5. Время запуска высокочастотного тактового генератора PLL

СУТ[1:0] Время запуска после выключения питания Дополнительная задержка после сброса при включении питания (VCC = 5.0 В) Рекомендуемое использование
01 14CK + 16K (16384) CK + 4 мс 4 мс Быстро нарастающая мощность
10 14CK + 1K (1024) CK + 64 мс 4 мс Медленно возрастающая мощность
11 14CK + 16K (16384) CK + 64 мс 4 мс Медленно возрастающая мощность

Калиброванный внутренний осциллятор

По умолчанию внутренний RC-генератор обеспечивает тактовую частоту приблизительно 8.0 МГц. Хотя voltagВ зависимости от температуры и температуры, эти часы могут быть очень точно откалиброваны пользователем. Видеть «Откалиброванный внутренний RC-генератор. колоритный »на странице 164 и «Скорость внутреннего осциллятора» на стр. 192 Больше подробностей. Устройство поставляется с запрограммированным предохранителем CKDIV8. Видеть «Предделитель системных часов» на стр. 31 для более подробной информации.

Эти часы можно выбрать в качестве системных часов, запрограммировав предохранители CKSEL, как показано на Таблица 6-6 на странице

27. Если этот параметр выбран, он не будет работать без внешних компонентов. Во время сброса оборудование загружает предварительно запрограммированное значение калибровки в регистр OSCCAL и тем самым автоматически калибрует RC-генератор. Точность этой калибровки показана как Заводская калибровка в Таблица 21-2 на странице 164.

Изменяя регистр OSCCAL из ПО, см. «OSCCAL - регистр калибровки осциллятора» на стр. 31, можно получить более высокую точность калибровки, чем при использовании заводской калибровки. Точность этой калибровки отображается как Пользовательская калибровка в Таблица 21-2 на странице 164.

Когда этот осциллятор используется в качестве тактовой частоты микросхемы, сторожевой осциллятор по-прежнему будет использоваться для сторожевого таймера и для тайм-аута сброса. Для получения дополнительной информации о предварительно запрограммированном калибровочном значении см. Раздел «Кали- bration Bytes »на странице 150.

Внутренний генератор также можно настроить для обеспечения тактовой частоты 6.4 МГц, записав предохранители CKSEL в «0011», как показано на Таблица 6-6 ниже. Этот параметр называется режимом совместимости с ATtiny15 и предназначен для обеспечения откалиброванного источника синхронизации на частоте 6.4 МГц, как в ATtiny15. В режиме совместимости с ATtiny15 ФАПЧ использует внутренний генератор, работающий на частоте 6.4 МГц, для генерации периферийного тактового сигнала 25.6 МГц для таймера / счетчика 1 (см. «8-битный таймер / счетчик1 в Режим ATtiny15 »на странице 95). Обратите внимание, что в этом режиме работы тактовый сигнал 6.4 МГц всегда делится на четыре, обеспечивая системную тактовую частоту 1.6 МГц.

Таблица 6-6. Режимы работы внутреннего калиброванного RC-генератора

ЦКСЕЛ[3:0] Номинальная частота
0010(1) 8.0 МГц
0011(2) 6.4 МГц

Устройство поставляется с выбранной этой опцией.

Этот параметр выберет режим совместимости с ATtiny15, в котором системные часы делятся на четыре, что дает тактовую частоту 1.6 МГц.

Когда в качестве источника синхронизации выбран откалиброванный внутренний генератор с частотой 8 МГц, время запуска определяется предохранителями SUT, как показано на Таблица 6-7 ниже.

Таблица 6-7. Время запуска для часов внутреннего калиброванного RC-генератора

СУТ[1:0] Время запуска после выключения питания Дополнительная задержка от сброса (VCC = 5.0 В) Рекомендуемое использование
00 6 CK 14CK(1) BOD включен
01 6 CK 14CK + 4 мс Быстро нарастающая мощность
10(2) 6 CK 14CK + 64 мс Медленно возрастающая мощность
11 Сдержанный

1. Если запрограммирован предохранитель RSTDISBL, это время запуска будет увеличено до 14CK + 4 мс, чтобы обеспечить возможность входа в режим программирования.
2. Устройство поставляется с выбранной опцией.

В режиме совместимости ATtiny15 время запуска определяется предохранителями SUT, как показано на Таблица 6-8 ниже.

Таблица 6-8. Время запуска внутреннего калиброванного RC-генератора (в режиме ATtiny15)

СУТ[1:0] Время запуска после выключения питания Дополнительная задержка от сброса (VCC = 5.0 В) Рекомендуемое использование
00 6 CK 14CK + 64 мс
01 6 CK 14CK + 64 мс
10 6 CK 14CK + 4 мс
11 1 CK 14CK(1)

Примечание. Если предохранитель RSTDISBL запрограммирован, это время запуска будет увеличено до 14CK + 4 мс, чтобы обеспечить возможность входа в режим программирования.

Таким образом, дополнительную информацию о режиме совместимости с ATtiny15 можно найти в разделах «Порт B (PB5: PB0)» на страница 2«Внутренняя ФАПЧ в режиме совместимости с ATtiny15» на стр. 24«8-битный таймер / счетчик1 в режиме ATtiny15» на страница 95«Ограничения debugWIRE» на стр. 140«Байты калибровки» на стр. 150 и в таблице «Clock Prescaler» Выбрать »на странице 33.

Внутренний осциллятор 128 кГц

Внутренний генератор с частотой 128 кГц представляет собой маломощный генератор, обеспечивающий тактовую частоту 128 кГц. Частота номинальная при 3В и 25°C. Эти часы можно выбрать в качестве системных, запрограммировав фьюзы CKSEL на «0100».

Когда выбран этот источник синхронизации, время запуска определяется предохранителями SUT, как показано на Таблица 6-9.

Таблица 6-9. Время запуска внутреннего генератора 128 кГц

СУТ[1:0] Время запуска после выключения питания Дополнительная задержка от сброса Рекомендуемое использование
00 6 CK 14CK(1) BOD включен
01 6 CK 14CK + 4 мс Быстро нарастающая мощность
10 6 CK 14CK + 64 мс Медленно возрастающая мощность
11 Сдержанный

Примечание. Если предохранитель RSTDISBL запрограммирован, это время запуска будет увеличено до 14CK + 4 мс, чтобы обеспечить возможность входа в режим программирования.

Низкочастотный кварцевый генератор

Для использования часового кристалла 32.768 кГц в качестве источника синхронизации для устройства необходимо выбрать низкочастотный кварцевый генератор, установив предохранители CKSEL на «0110». Кристалл должен быть подключен, как показано на Рисунок 6-5. Чтобы найти подходящую нагрузочную емкость для кристалла 32.768 кГц, обратитесь к таблице данных производителя.

Когда выбран этот генератор, время запуска определяется предохранителями SUT, как показано на Таблица 6-10.

Таблица 6-10. Время запуска для выбора часов низкочастотного кварцевого генератора

СУТ[1:0] Время запуска после выключения питания Дополнительная задержка от сброса (VCC = 5.0 В) Рекомендуемое использование
00 1 К (1024) СК(1) 4 мс Включено быстрое увеличение мощности или BOD
01 1 К (1024) СК(1) 64 мс Медленно возрастающая мощность
10 32 К (32768) СК 64 мс Стабильная частота при запуске
11 Сдержанный

Примечание. Эти параметры следует использовать только в том случае, если стабильность частоты при запуске не важна.

Низкочастотный кварцевый генератор обеспечивает внутреннюю нагрузочную способность, см. Таблица 6-11 на каждом выводе TOSC.

Таблица 6-11. Емкость низкочастотного кварцевого генератора

Устройство 32 кГц Osc. Тип Колпачок (Xtal1 / Tosc1) Колпачок (Xtal2 / Tosc2)
ATtiny25 / 45/85 Система Osc. 16 пФ 6 пФ

Кристаллический осциллятор / керамический резонатор

XTAL1 и XTAL2 - соответственно вход и выход инвертирующего ampLifier, который можно настроить для использования в качестве встроенного осциллятора, как показано на Рисунок 6-5. Можно использовать кварцевый кристалл или керамический резонатор.

C1 и C2 всегда должны быть равны как для кристаллов, так и для резонаторов. Оптимальное значение конденсаторов зависит от используемого кристалла или резонатора, величины паразитной емкости и электромагнитного шума окружающей среды. Некоторые начальные рекомендации по выбору конденсаторов для использования с кристаллами приведены в Таблица 6-12 ниже. Для керамических резонаторов следует использовать емкость конденсаторов, указанную производителем.

Таблица 6-12. Режимы работы кварцевого генератора

ЦКСЕЛ[3:1] Диапазон частот (МГц) Рекомендуемый диапазон конденсаторов C1 и C2 для использования с кристаллами (пФ)
100(1) 0.4 – 0.9
101 0.9 – 3.0 12 – 22
110 3.0 – 8.0 12 – 22
111 8.0 – 12 – 22

Примечания: Эту опцию нельзя использовать с кристаллами, только с керамическими резонаторами.

Осциллятор может работать в трех различных режимах, каждый из которых оптимизирован для определенного диапазона частот. Режим работы выбирается предохранителями CKSEL [3: 1] как показано на Таблица 6-12.

Предохранитель CKSEL0 вместе с предохранителями SUT [1: 0] выбирают время запуска, как показано на Таблица 6-13.

Таблица 6-13. Время запуска для выбора часов кварцевого генератора

CKSEL0 СУТ[1:0] Время запуска после выключения питания Дополнительная задержка от сброса Рекомендуемое использование
0 00 258 CK(1) 14CK + 4 мс Керамический резонатор, быстро нарастающая мощность
0 01 258 CK(1) 14CK + 64 мс Керамический резонатор, медленно нарастающая мощность
0 10 1 К (1024) СК(2) 14CK Керамический резонатор, БПК включен
0 11 1 К (1024) СК(2) 14CK + 4 мс Керамический резонатор, быстро нарастающая мощность
1 00 1 К (1024) СК(2) 14CK + 64 мс Керамический резонатор, медленно нарастающая мощность
1 01 16 К (16384) СК 14CK Кристаллический осциллятор, BOD включен
1 10 16 К (16384) СК 14CK + 4 мс Кристаллический осциллятор, быстрорастущая мощность
1 11 16 К (16384) СК 14CK + 64 мс Кристаллический осциллятор, медленно возрастающая мощность

Примечания

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

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

Источник часов по умолчанию

Устройство поставляется с запрограммированными CKSEL = «0010», SUT = «10» и CKDIV8. Таким образом, настройкой источника тактовой частоты по умолчанию является внутренний RC-генератор, работающий на частоте 8 МГц с наибольшим временем запуска и начальным предварительным масштабированием системных часов, равным 8, что приводит к системной частоте 1.0 МГц. Эта настройка по умолчанию гарантирует, что все пользователи могут сделать желаемую настройку источника синхронизации, используя In-System или High-vol.tagе Программист.

Предварительный масштабатор системных часов

Системные часы ATtiny25 / 45/85 можно разделить, установив «CLKPR - Регистр предварительного масштабирования часов» на стр. 32. Эту функцию можно использовать для снижения энергопотребления, когда требования к вычислительной мощности невелики. Это можно использовать со всеми параметрами источника синхронизации, и это повлияет на тактовую частоту ЦП и всех синхронных периферийных устройств. clkI/O, clkADC, clkCPU и clkFLASH делятся на коэффициент, как показано на Таблица 6-15 на странице 33.

Время переключения

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

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

С момента записи значений CLKPS проходит от T1 + T2 до T1 + 2 * T2, прежде чем новая тактовая частота станет активной. В этом интервале создаются 2 активных тактовых фронта. Здесь T1 - это предыдущий период тактовой частоты, а T2 - период, соответствующий новой настройке предварительного делителя частоты.

Выходной буфер тактовой частоты

Устройство может выводить системные часы на вывод CLKO (когда он не используется как вывод XTAL2). Для включения выхода необходимо запрограммировать предохранитель CKOUT. Этот режим подходит, когда часы микросхемы используются для управления другими схемами в системе. Обратите внимание, что часы не будут выводиться во время сброса и что нормальная работа контакта ввода / вывода будет отменена при программировании предохранителя. Внутренний RC-генератор, WDT-генератор, ФАПЧ и внешние часы (CLKI) могут быть выбраны, когда часы выводятся на CLKO. Кварцевые генераторы (XTAL1, XTAL2) не могут использоваться для вывода часов на CLKO. Если используется предделитель системных часов, выводятся разделенные системные часы.

Описание реестра

OSCCAL - Регистр калибровки осциллятора

Кусочек 7 6 5 4 3 2 1 0
0x31 КАЛ7 КАЛ6 КАЛ5 КАЛ4 КАЛ3 КАЛ2 КАЛ1 КАЛ0 ОСККАЛ
Чтение/Запись Ч/З Ч/З Ч/З Ч/З Ч/З Ч/З Ч/З Ч/З

Биты 7: 0 - CAL [7: 0]: значение калибровки осциллятора.

Регистр калибровки осциллятора используется для подстройки калиброванного внутреннего RC-генератора для удаления технологических изменений частоты генератора. Предварительно запрограммированное значение калибровки автоматически записывается в этот регистр во время сброса микросхемы, давая заводскую откалиброванную частоту, как указано в Таблица 21-2 на странице 164. Прикладное программное обеспечение может записывать в этот регистр для изменения частоты генератора. Генератор может быть откалиброван на частоты, указанные в Таблица 21-2 на странице 164. Калибровка вне этого диапазона не гарантируется.

Обратите внимание, что этот генератор используется для измерения времени доступа к записи в EEPROM и Flash, и на это время записи будет соответственно влиять. Если записываются EEPROM или Flash, не калибруйте более 8.8 МГц. В противном случае запись EEPROM или Flash может завершиться ошибкой.

Бит CAL7 определяет диапазон работы генератора. Установка этого бита в 0 дает самый низкий частотный диапазон, установка этого бита в 1 дает самый высокий частотный диапазон. Два частотных диапазона перекрываются, другими словами, установка OSCCAL = 0x7F дает более высокую частоту, чем OSCCAL = 0x80.

Биты CAL [6: 0] используются для настройки частоты в выбранном диапазоне. Значение 0x00 дает самую низкую частоту в этом диапазоне, а значение 0x7F дает самую высокую частоту в этом диапазоне.

Для обеспечения стабильной работы микроконтроллера значение калибровки следует изменять незначительно. Изменение частоты более чем на 2% от цикла к циклу может привести к непредсказуемому поведению. Изменения в OSCCAL не должны превышать 0x20 для каждой калибровки. Требуется убедиться, что микроконтроллер находится в состоянии сброса во время таких изменений тактовой частоты.

Таблица 6-14. Диапазон частот внутреннего RC-генератора

OSCCAL Значение Типичная наименьшая частота относительно номинальной частоты Типичная наивысшая частота относительно номинальной частоты
0x00 50% 100%
0x3F 75% 150%
0x7F 100% 200%

CLKPR - регистр предварительного масштабирования часов

Кусочек 7 6 5 4 3 2 1 0
0x26 CLKPCE CLKPS3 CLKPS2 CLKPS1 CLKPS0 КЛКПР
Чтение/Запись Ч/З R R R Ч/З Ч/З Ч/З Ч/З

Начальное значение 0 0 0 0 См. Описание бита

Бит 7 - CLKPCE: разрешение изменения предделителя тактовой частоты

Бит CLKPCE должен быть записан в логическую единицу, чтобы разрешить изменение битов CLKPS. Бит CLKPCE обновляется только тогда, когда другие биты в CLKPR одновременно записываются в ноль. CLKPCE сбрасывается аппаратно через четыре цикла после записи или после записи битов CLKPS. Перезапись бита CLKPCE в течение этого периода ожидания не продлевает период ожидания и не сбрасывает бит CLKPCE.

Биты 6: 4 - Res: Зарезервированные биты

Эти биты являются зарезервированными битами в ATtiny25 / 45/85 и всегда читаются как ноль.

Биты 3: 0 - CLKPS [3: 0]: биты 3 - 0 выбора предделителя часов

Эти биты определяют коэффициент деления между выбранным источником синхронизации и внутренними системными часами. Эти биты могут быть записаны во время выполнения для изменения тактовой частоты в соответствии с требованиями приложения. Поскольку делитель делит входной сигнал главного тактового сигнала в MCU, скорость всех синхронных периферийных устройств снижается при использовании коэффициента деления. Коэффициенты деления приведены в Таблица 6-15.

Чтобы избежать непреднамеренных изменений тактовой частоты, необходимо выполнить специальную процедуру записи для изменения битов CLKPS:

Запишите бит разрешения изменения предделителя тактовой частоты (CLKPCE) в один, а все остальные биты в CLKPR - в ноль.

В течение четырех циклов запишите желаемое значение в CLKPS, записав ноль в CLKPCE.

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

Предохранитель CKDIV8 определяет начальное значение битов CLKPS. Если CKDIV8 не запрограммирован, биты CLKPS будут сброшены на «0000». Если запрограммировано CKDIV8, биты CLKPS сбрасываются в «0011», что дает коэффициент деления восемь при запуске. Эту функцию следует использовать, если выбранный источник синхронизации имеет более высокую частоту, чем максимальная частота устройства в текущих условиях эксплуатации. Обратите внимание, что любое значение может быть записано в биты CLKPS независимо от настройки CKDIV8 Fuse. Прикладное программное обеспечение должно обеспечивать достаточный коэффициент деления.

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

Таблица 6-15. Выбор предделителя часов

CLKPS3 CLKPS2 CLKPS1 CLKPS0 Коэффициент деления часов
0 0 0 0 1
0 0 0 1 2
0 0 1 0 4
0 0 1 1 8
0 1 0 0 16
0 1 0 1 32
0 1 1 0 64
0 1 1 1 128
1 0 0 0 256
1 0 0 1 Сдержанный
1 0 1 0 Сдержанный
1 0 1 1 Сдержанный
1 1 0 0 Сдержанный
1 1 0 1 Сдержанный
1 1 1 0 Сдержанный
1 1 1 1 Сдержанный

Примечание. Предварительный делитель отключен в режиме совместимости с ATtiny15, и ни запись в CLKPR, ни программирование фьюза CKDIV8 не влияют на системные часы (которые всегда будут 1.6 МГц).

Управление питанием и режимы сна

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

Режимы сна

Рисунок 6-1 на странице 23 представлены различные системы часов и их распределение в ATtiny25 / 45/85. Рисунок помогает выбрать подходящий спящий режим. Таблица 7-1 показывает различные режимы сна и их источники пробуждения.

Таблица 7-1. Активные домены часов и источники пробуждения в различных режимах сна

Активные тактовые домены Осцилляторы Источники пробуждения
Спящий режим КлкЦП клкФЛЭШ clkIO clkADC clkPCK Основной источник тактовой частоты включен INT0 и смена пина SPM / EEPROM

Готовый

 

Условие запуска USI

АЦП Другие вводы/выводы Сторожевой пес Прерывать
Праздный X X X X X X X X X X
Подавление шума АЦП X X X(1) X X X X
Выключить X(1) X X

Примечание. Для INT0 только прерывание по уровню.

Чтобы войти в любой из трех спящих режимов, бит SE в MCUCR должен быть записан в логическую единицу и должна быть выполнена инструкция SLEEP. Биты SM [1: 0] в регистре MCUCR выбирают, какой режим сна (режим ожидания, шумоподавление АЦП или отключение питания) будет активирован инструкцией SLEEP. Видеть Таблица 7-2 для резюме.

Если разрешенное прерывание происходит, когда MCU находится в спящем режиме, MCU выходит из спящего режима. Затем MCU останавливается на четыре цикла в дополнение к времени запуска, выполняет процедуру прерывания и возобновляет выполнение с инструкции, следующей за SLEEP. Содержание Реестра File и SRAM не изменяются, когда устройство выходит из спящего режима. Если сброс происходит в спящем режиме, MCU выходит из спящего режима и запускается из вектора сброса.

Примечание: если для пробуждения используется прерывание, вызванное уровнем, измененный уровень должен удерживаться в течение некоторого времени, чтобы разбудить MCU (и чтобы MCU вошел в процедуру обслуживания прерывания). Видеть «Внешние прерывания» на стр. 49 для получения подробной информации.

Режим ожидания

Когда биты SM[1:0] записываются в 00, инструкция SLEEP переводит MCU в режим ожидания, останавливая ЦП, но позволяя аналоговому компаратору, АЦП, USI, таймеру/счетчику, сторожевому таймеру и системе прерываний продолжать работу. есть. Этот спящий режим в основном останавливает clkCPU и clkFLASH, позволяя работать другим часам.

Режим ожидания позволяет микроконтроллеру просыпаться от внешних запускаемых прерываний, а также от внутренних, таких как переполнение таймера. Если пробуждение от прерывания аналогового компаратора не требуется, аналоговый компаратор можно выключить, установив бит ACD в «ACSR - Регистр управления и состояния аналогового компаратора» на стр. 120. Это снизит энергопотребление в режиме ожидания. Если АЦП включен, преобразование запускается автоматически при входе в этот режим.

Режим шумоподавления АЦП

Когда биты SM[1:0] записываются в 01, инструкция SLEEP переводит MCU в режим шумоподавления АЦП, останавливая ЦП, но позволяя АЦП, внешним прерываниям и сторожевому таймеру продолжать работу (если он включен). Этот спящий режим останавливает clkI/O, clkCPU и clkFLASH, в то же время позволяя работать другим часам.

Это улучшает шумовую среду для АЦП, обеспечивая измерения с более высоким разрешением. Если АЦП включен, преобразование запускается автоматически при входе в этот режим. Помимо прерывания завершения преобразования АЦП, только внешний сброс, сброс сторожевого таймера, сброс неисправности, прерывание готовности SPM / EEPROM, прерывание внешнего уровня на INT0 или прерывание смены вывода могут разбудить MCU от шумоподавления АЦП. режим.

Режим пониженного энергопотребления

Когда биты SM [1: 0] записываются в 10, инструкция SLEEP переводит MCU в режим пониженного энергопотребления. В этом режиме осциллятор остановлен, в то время как внешние прерывания, обнаружение условий запуска USI и сторожевой таймер продолжают работать (если он включен). Только внешний сброс, сброс сторожевого таймера, сброс при пониженном напряжении, прерывание по условию запуска USI, прерывание внешнего уровня на INT0 или прерывание смены вывода могут разбудить MCU. Этот спящий режим останавливает все генерируемые часы, позволяя работать только асинхронным модулям.

Программное отключение BOD

Когда детектор пониженного напряжения (BOD) включен предохранителями BODLEVEL (см. Таблица 20-4 на странице 148), БПК активно контролирует объем питания.tagе во время сна. В некоторых устройствах можно сэкономить электроэнергию, отключив BOD программно в спящем режиме Power-Down. В этом случае энергопотребление в спящем режиме будет на том же уровне, что и при глобальном отключении BOD предохранителями.

Если БПК отключен программно, функция БПК отключается сразу после входа в спящий режим. При выходе из спящего режима БПК снова автоматически включается. Это обеспечивает безопасную работу в случае падения уровня VCC во время периода ожидания.

Когда BOD отключен, время выхода из спящего режима будет таким же, как и для выхода из режима СБРОС. Пользователь должен вручную настроить время пробуждения так, чтобы ссылка на запрещенную зону имела время для запуска и BOD работал правильно, прежде чем MCU продолжит выполнение кода. См. Биты предохранителей SUT [1: 0] и CKSEL [3: 0] в таблице. «Младший байт предохранителя» на стр. 149

Отключение BOD управляется битом BODS (BOD Sleep) регистра управления MCU, см. «MCUCR - MCU Control Зарегистрироваться »на странице 37. Запись этого бита в единицу отключает BOD в Power-Down, а запись нуля сохраняет BOD активным. Значение по умолчанию - ноль, т.е. BOD активен.

Запись в бит BODS управляется синхронизированной последовательностью и битом разрешения, см. «MCUCR - MCU Control Regis- тер »на странице 37.

Ограничения

Функциональность отключения BOD реализована только на следующих устройствах:

ATtiny25, ревизия E и новее

ATtiny45, ревизия D и новее

ATtiny85, ревизия C и новее

Ревизии отмечены на упаковке устройства и могут располагаться следующим образом:

Нижняя сторона пакетов 8П3 и 8С2

Верхняя сторона упаковки 20М1

Регистр снижения мощности

Регистр снижения мощности (PRR), см. «PRR - регистр снижения мощности» на стр. 38, предоставляет метод снижения энергопотребления за счет остановки синхронизации отдельных периферийных устройств. Текущее состояние периферийного устройства заморожено, и регистры ввода-вывода не могут быть прочитаны или записаны. Ресурсы, используемые периферийным устройством при остановке часов, останутся занятыми, поэтому в большинстве случаев периферийное устройство должно быть отключено перед остановкой часов. Пробуждение модуля, которое выполняется сбросом бита в PRR, переводит модуль в то же состояние, что и до выключения.

Отключение модуля можно использовать в режиме ожидания и активном режиме, чтобы значительно снизить общее энергопотребление. Во всех остальных режимах сна часы уже остановлены. Видеть «Ток питания модулей ввода / вывода» на странице 177 напримерampлес.

Минимизация энергопотребления

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

Аналого-цифровой преобразователь

Если этот параметр включен, АЦП будет включен во всех спящих режимах. Для экономии энергии перед переходом в спящий режим необходимо отключить АЦП. Когда АЦП выключить и снова включить, следующее преобразование будет расширенным преобразованием. Ссылаться на «Аналого-цифровой преобразователь» на стр. 122 для получения подробной информации о работе АЦП.

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

При переходе в режим ожидания аналоговый компаратор следует отключить, если он не используется. При входе в режим шумоподавления АЦП аналоговый компаратор должен быть отключен. В других режимах сна аналоговый компаратор автоматически отключается. Однако, если аналоговый компаратор настроен на использование внутренней громкостиtage Ссылка в качестве входа, аналоговый компаратор должен быть отключен во всех спящих режимах. В противном случае Internal Voltage Ссылка будет активирована независимо от спящего режима. Ссылаться на «Аналоговый компаратор» на стр. 119 для получения подробной информации о том, как настроить аналоговый компаратор.

Детектор потемнения

Если в приложении не требуется детектор пониженного энергопотребления, этот модуль следует отключить. Если детектор пониженного энергопотребления включен предохранителями BODLEVEL, он будет включен во всех спящих режимах и, следовательно, всегда потребляет энергию. В более глубоких режимах сна это значительно влияет на общее потребление тока. Видеть «Обнаружение пониженного энергопотребления- ция »на странице 41 и «Программное отключение BOD» на стр. 35 для получения подробной информации о том, как настроить детектор пониженного напряжения.

Внутренний объемtage Ссылка

Внутренний объемtagПри необходимости опорный сигнал будет активирован функцией обнаружения пониженного напряжения, аналоговым компаратором или АЦП. Если эти модули отключены, как описано в разделах выше, внутренняя громкостьtagСсылка будет отключена и не будет потреблять энергию. При повторном включении пользователь должен разрешить запуск ссылки до использования выхода. Если ссылка сохраняется в спящем режиме, выход можно использовать немедленно. Ссылаться на «Внутренний объемtage Справочная информация »на странице 42 для получения подробной информации о времени запуска.

Таймер сторожевого таймера

Если сторожевой таймер в приложении не нужен, этот модуль следует отключить. Если сторожевой таймер включен, он будет включен во всех режимах сна и, следовательно, всегда потребляет энергию. В более глубоких режимах сна это значительно влияет на общее потребление тока. Ссылаться на «Сторожевой таймер» на стр. 42 для получения подробной информации о том, как настроить сторожевой таймер.

Контакты порта

При переходе в спящий режим все контакты порта должны быть настроены на использование минимальной мощности. В этом случае самое главное — убедиться, что никакие выводы не управляют резистивными нагрузками. В спящих режимах, когда часы ввода-вывода (clkI/O) и часы АЦП (clkADC) остановлены, входные буферы устройства будут отключены. Это гарантирует, что мощность не потребляется

по входной логике, когда он не нужен. В некоторых случаях входная логика необходима для обнаружения условий пробуждения, и

тогда он будет включен. Обратитесь к разделу «Режимы включения цифрового входа и сна» на стр. 57 для получения подробной информации о том, какие контакты включены. Если входной буфер включен, а входной сигнал остается плавающим или имеет уровень аналогового сигнала, близкий к VCC/2, входной буфер будет потреблять чрезмерную мощность.

Для аналоговых входных контактов буфер цифрового входа всегда должен быть отключен. Уровень аналогового сигнала, близкий к VCC/2 на входном контакте, может вызвать значительный ток даже в активном режиме. Буферы цифровых входов можно отключить, записав в регистр отключения цифровых входов (DIDR0). Ссылаться на «DIDR0 - Регистр отключения цифрового входа 0» на стр. 121 для получения подробной информации.

Описание реестра

MCUCR - Регистр управления MCU

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

Кусочек 7 6 5 4 3 2 1 0
0x35 БОДС ПУД SE СМ1 СМ0 БОДСЕ ISC01 ISC00 МКУКР
Чтение/Запись R Ч/З Ч/З Ч/З Ч/З R Ч/З Ч/З
Начальная стоимость 0 0 0 0 0 0 0 0

Бит 7 - BODS: BOD Sleep

Функция отключения BOD доступна только на некоторых устройствах. Видеть «Ограничения» на стр. 36.

Чтобы отключить БПК во время сна (см. Таблица 7-1 на странице 34) бит BODS должен быть записан в логическую единицу. Это управляется синхронизированной последовательностью и битом разрешения BODSE в MCUCR. Во-первых, и BODS, и BODSE должны быть установлены в одно значение. Во-вторых, в течение четырех тактовых циклов BODS должен быть установлен в единицу, а BODSE должен быть установлен в ноль. Бит BODS активен через три тактовых цикла после установки. Команда сна должна выполняться, пока BODS активен, чтобы выключить BOD для фактического режима сна. Бит BODS автоматически очищается после трех тактов.

В устройствах, где спящий BOD не реализован, этот бит не используется и всегда будет считываться нулем.

Бит 5 - SE: включение режима сна

Бит SE должен быть установлен в логическую единицу, чтобы микроконтроллер перешел в спящий режим при выполнении инструкции SLEEP. Чтобы избежать перехода микроконтроллера в спящий режим, если это не является целью программиста, рекомендуется записывать бит включения спящего режима (SE) в единицу непосредственно перед выполнением инструкции SLEEP и очищать его сразу после пробуждения.

Биты 4: 3 - SM [1: 0]: биты 1 и 0 выбора спящего режима

Эти биты выбирают один из трех доступных спящих режимов, как показано на Таблица 7-2.

Таблица 7-2. Выбор спящего режима

СМ1 СМ0 Спящий режим
0 0 Праздный
0 1 Подавление шума АЦП
1 0 Выключить
1 1 Сдержанный

Бит 2 - BODSE: включение режима ожидания BOD

Функция отключения BOD доступна только на некоторых устройствах. Видеть «Ограничения» на стр. 36.

Бит BODSE позволяет установить управляющий бит BODS, как описано в описании бита BODS. Отключение BOD контролируется временной последовательностью.

Этот бит не используется в устройствах, где программное отключение BOD не реализовано, и на этих устройствах будет считываться как ноль.

PRR - Регистр снижения мощности

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

Кусочек 7 6 5 4 3 2 1 0
0x20 ПРТИМ1 ПРТИМ0 ПРУСИ ПРАДК ПРР
Чтение/Запись R R R R Ч/З Ч/З Ч/З Ч/З
Начальная стоимость 0 0 0 0 0 0 0 0

Биты 7: 4 - Res: Зарезервированные биты

Эти биты являются зарезервированными битами в ATtiny25 / 45/85 и всегда читаются как ноль.

Бит 3 - PRTIM1: Таймер / счетчик снижения мощности 1

Запись логической единицы в этот бит отключает модуль Timer / Counter1. Когда Таймер / Счетчик 1 включен, работа будет продолжаться, как до выключения.

Бит 2 - PRTIM0: Таймер / счетчик снижения мощности 0

Запись логической единицы в этот бит отключает модуль Timer / Counter0. Когда Таймер / Счетчик 0 включен, работа будет продолжаться, как до выключения.

Бит 1 - PRUSI: уменьшение мощности USI

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

Бит 0 - PRADC: АЦП снижения мощности

Запись логической единицы в этот бит отключает АЦП. Перед выключением АЦП необходимо отключить. Обратите внимание, что часы АЦП также используются некоторыми частями аналогового компаратора, что означает, что аналоговый компаратор не может использоваться, когда этот бит высокий.

Управление системой и сброс

Сброс AVR

Во время сброса все регистры ввода / вывода устанавливаются на свои начальные значения, и программа начинает выполнение с вектора сброса. Инструкция, помещенная в вектор сброса, должна быть инструкцией RJMP - относительного перехода к процедуре обработки сброса. Если программа никогда не включает источник прерывания, векторы прерывания не используются, и в эти места можно поместить обычный программный код. Принципиальная схема в Рисунок 8-1 показывает логику сброса. Электрические параметры схемы сброса приведены в «Характеристики системы и сброса» на стр. 165.

Рисунок 8-1 Логика сброса Сброс-логика

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

После того, как все источники сброса стали неактивными, вызывается счетчик задержки, растягивающий внутренний сброс. Это позволяет достичь стабильного уровня мощности до начала нормальной работы. Время ожидания счетчика задержки определяется пользователем с помощью предохранителей SUT и CKSEL. Различные варианты выбора периода задержки представлены в "Часы Источники »на странице 25.

Сбросить источники

ATtiny25 / 45/85 имеет четыре источника сброса:

Сброс при включении. MCU сбрасывается, когда напряжение питанияtage ниже порога сброса при включении питания (VPOT).

Внешний сброс. MCU сбрасывается, когда низкий уровень присутствует на выводе RESET дольше минимальной длительности импульса.

Сброс сторожевого таймера. MCU сбрасывается, когда период сторожевого таймера истекает и сторожевой таймер включен.

Сброс неисправности. MCU сбрасывается, когда напряжение питанияtage VCC ниже порога сброса при отключении питания (VBOT), и включен детектор отключения питания.

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

Импульс сброса при включении питания (POR) генерируется схемой обнаружения на кристалле. Уровень обнаружения определяется в «Sys- Темп и характеристики сброса »на странице 165. POR активируется всякий раз, когда VCC ниже уровня обнаружения. Цепь POR может использоваться для срабатывания пускового сброса, а также для обнаружения сбоя в подаче питания.tage.

Схема сброса при включении питания (POR) обеспечивает сброс устройства после включения питания. Достижение порога сброса при включении питанияtage вызывает счетчик задержки, который определяет, как долго устройство остается в состоянии RESET после повышения VCC. Сигнал RESET снова активируется без задержки, когда VCC становится ниже уровня обнаружения.

Рисунок 8-2. Запуск MCU, RESET привязан к VCC

ВНУТРЕННИЙ СБРОС

Рисунок 8-3. Запуск MCU, RESET, расширенный извне

Внешний сброс

Внешний сброс генерируется низким уровнем на контакте RESET, если он включен. Импульсы сброса длиннее минимальной длительности импульса (см. «Характеристики системы и сброса» на стр. 165) вызовет сброс, даже если часы не работают. Более короткие импульсы не гарантируют сброса. Когда подаваемый сигнал достигает значения Reset Threshold Vol.tage – VRST – по положительному фронту счетчик задержки запускает MCU после истечения периода тайм-аута.

Рисунок 8-4. Внешний сброс во время работы Рис8.4

Обнаружение потемнения

ATtiny25/45/85 имеет встроенную схему обнаружения пониженного напряжения (BOD) для контроля уровня VCC во время работы путем сравнения его с фиксированным уровнем запуска. Уровень срабатывания БПК можно выбрать с помощью предохранителей BODLEVEL. Уровень срабатывания имеет гистерезис, чтобы обеспечить обнаружение снижения напряжения без всплесков. Гистерезис на уровне обнаружения следует интерпретировать как VBOT+ = VBOT + VHYST/2 и VBOT- = VBOT – VHYST/2.

Когда БПК включен, а VCC снижается до значения ниже уровня срабатывания (VBOT- в Рисунок 8-5), немедленно активируется сброс при отключении питания. Когда VCC увеличивается выше уровня срабатывания (VBOT+ в Рисунок 8-5), счетчик задержки запускает MCU после истечения периода тайм-аута tTOUT.

Схема БПК обнаружит падение VCC только в том случае, если объемtage остается ниже триггерного уровня дольше, чем tBOD, указанное в «Характеристики системы и сброса» на стр. 165. Рис8.5

Сброс сторожевого таймера

Когда сторожевой таймер истечет, он сгенерирует короткий импульс сброса продолжительностью в один цикл CK. По заднему фронту этого импульса таймер задержки начинает отсчет периода тайм-аута tTOUT. Ссылаться на «Сторожевой таймер» на стр. 42 для получения подробной информации о работе сторожевого таймера.

Томtage Контрольные сигналы включения и время запуска

ОбъемtagСсылка имеет время запуска, которое может повлиять на то, как ее следует использовать. Время запуска указано в «Характеристики системы и сброса» на стр. 165. В целях экономии энергии не всегда включается ссылка. Ссылка включается в следующих ситуациях:

Когда BOD включен (путем программирования битов предохранителей BODLEVEL [2: 0]).

Когда эталон запрещенной зоны подключен к аналоговому компаратору (путем установки бита ACBG в ACSR).

Когда АЦП включен.

Таким образом, когда BOD не включен, после установки бита ACBG или включения АЦП пользователь всегда должен разрешать запуск задания перед использованием выхода аналогового компаратора или АЦП. Чтобы снизить энергопотребление в режиме пониженного энергопотребления, пользователь может избежать трех вышеуказанных условий, чтобы обеспечить отключение эталона перед переходом в режим пониженного энергопотребления.

Таймер сторожевого таймера

Сторожевой таймер синхронизируется встроенным осциллятором, который работает на частоте 128 кГц. Управляя предварительным делителем сторожевого таймера, можно настроить интервал сброса сторожевого таймера, как показано на Таблица 8-3 на странице 46. Команда WDR - сброс сторожевого таймера сбрасывает сторожевой таймер. Сторожевой таймер также сбрасывается, когда он отключен и происходит сброс микросхемы. Для определения периода сброса можно выбрать десять различных периодов тактового цикла. Если период сброса истекает без повторного сброса сторожевого таймера, ATtiny25 / 45/85 сбрасывается и выполняется из вектора сброса. Подробнее о времени сброса сторожевого таймера см. Таблица 8-3 на странице 46.

Сторожевой таймер также можно настроить для генерации прерывания вместо сброса. Это может быть очень полезно при использовании Watchdog для пробуждения после выключения питания.

Чтобы предотвратить непреднамеренное отключение сторожевого таймера или непреднамеренное изменение периода тайм-аута, предохранитель WDTON выбирает два разных уровня безопасности, как показано на Таблица 8-1 См. «Временные последовательности для изменения последствий конфигурация сторожевого таймера »на стр. 43 для получения подробной информации.

Таблица 8-1. Конфигурация WDT как функция настроек предохранителей WDTON

ВДТОН Уровень безопасности Начальное состояние WDT Как отключить WDT Как изменить тайм-аут
Незапрограммированный 1 Неполноценный Временная последовательность Никаких ограничений
Запрограммировано 2 Включено Всегда включен Временная последовательность

Рисунок 8-7. Сторожевой таймер Сторожевой пес

Временные последовательности для изменения конфигурации сторожевого таймера

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

Уровень безопасности 1: В этом режиме сторожевой таймер изначально отключен, но его можно включить, записав бит WDE в единицу без каких-либо ограничений. При отключении включенного сторожевого таймера требуется синхронизированная последовательность. Чтобы отключить включенный сторожевой таймер, необходимо выполнить следующую процедуру:

В той же операции запишите логическую единицу в WDCE и WDE. Логическая единица должна быть записана в WDE независимо от предыдущего значения бита WDE.

В течение следующих четырех тактовых циклов в той же операции запишите биты WDE и WDP по желанию, но с очищенным битом WDCE.

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

В той же операции запишите логическую единицу в WDCE и WDE. Несмотря на то, что WDE всегда установлен, WDE должен быть записан в единицу, чтобы начать синхронизированную последовательность.

В течение следующих четырех тактовых циклов в той же операции запишите биты WDP по желанию, но с очищенным битом WDCE. Значение, записанное в бит WDE, не имеет значения.

Код Example

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

Код сборки Example(1)
ВДТ_выкл:

вдр

; Очистить WDRF в MCUSR

ldi r16, (0<

вне MCUSR, r16

; Записать логическую единицу в WDCE и WDE

; Сохраните старые настройки предварительного делителя, чтобы предотвратить непреднамеренный сброс сторожевого таймера.

в r16, WDTCR

или r16, (1<

выход WDTCR, r16

; Отключить WDT

ldi r16, (0<

выход WDTCR, r16

в отставке

Код C Example(1)
недействительным WDT_off (недействительным)

{

_WDR ();

/* Очистить WDRF в MCUSR */ MCUSR = 0x00

/* Записываем логическую единицу в WDCE и WDE */ WDTCR |= (1<

/ * Отключить WDT * / WDTCR = 0x00;

}

Примечание: 1. См. «Код Examples »на странице 6.

Описание реестра

MCUSR - Регистр состояния MCU

Регистр состояния MCU предоставляет информацию о том, какой источник сброса вызвал сброс MCU.

Кусочек 7 6 5 4 3 2 1 0
0x34 ВДРФ БОРФ EXTRF ПОРФ МКУСР
Чтение/Запись R R R R Ч/З Ч/З Ч/З Ч/З

Начальное значение 0 0 0 0 См. Описание бита

Биты 7: 4 - Res: Зарезервированные биты

Эти биты являются зарезервированными битами в ATtiny25 / 45/85 и всегда читаются как ноль.

Бит 3 - WDRF: флаг сброса сторожевого таймера

Этот бит устанавливается, если происходит сброс сторожевого таймера. Бит сбрасывается сбросом при включении питания или записью логического нуля во флаг.

Бит 2 - BORF: флаг сброса пониженного напряжения

Этот бит устанавливается, если происходит сброс при пониженном напряжении. Бит сбрасывается сбросом при включении питания или записью логического нуля во флаг.

Бит 1 - EXTRF: флаг внешнего сброса

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

Бит 0 - PORF: Флаг сброса при включении питания

Этот бит устанавливается, если происходит сброс при включении питания. Бит сбрасывается только записью логического нуля во флаг.

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

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

Кусочек 7 6 5 4 3 2 1 0
0x21 ВДИФ ВДИЕ WDP3 ВДСЕ ВДЕ WDP2 WDP1 WDP0 ВДТКР
Чтение/Запись Ч/З Ч/З Ч/З Ч/З Ч/З Ч/З Ч/З Ч/З
Начальная стоимость 0 0 0 0 X 0 0 0

Бит 7 - WDIF: Флаг прерывания тайм-аута сторожевого таймера

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

Бит 6 - WDIE: Разрешение прерывания тайм-аута сторожевого таймера

Когда этот бит записывается в единицу, WDE очищается и устанавливается бит I в регистре состояния, разрешается прерывание тайм-аута сторожевого таймера. В этом режиме соответствующее прерывание выполняется вместо сброса, если происходит тайм-аут в сторожевом таймере.

Если установлен WDE, WDIE автоматически очищается оборудованием при истечении времени ожидания. Это полезно для обеспечения безопасности сброса сторожевого таймера при использовании прерывания. После сброса бита WDIE следующий тайм-аут приведет к сбросу. Чтобы избежать сброса сторожевого таймера, WDIE должен устанавливаться после каждого прерывания.

Таблица 8-2. Конфигурация сторожевого таймера

ВДЕ ВДИЕ Состояние сторожевого таймера Действие по таймауту
0 0 Остановлено Никто
0 1 Бег Прерывать
1 0 Бег Перезагрузить
1 1 Бег Прерывать

Бит 4 - WDCE: включение сторожевого таймера

Этот бит должен быть установлен, когда бит WDE записывается в логический ноль. В противном случае Watchdog не будет отключен. После записи в единицу оборудование очистит этот бит после четырех тактов. См. Описание бита WDE для процедуры отключения сторожевого таймера. Этот бит также должен быть установлен при изменении битов предварительного делителя. Видеть «Временные последовательности для изменения конфигурации сторожевого таймера »на странице 43.

Бит 3 - WDE: включение сторожевого таймера

Когда WDE записывается в логическую единицу, сторожевой таймер включен, а если WDE записывается в логический ноль, функция сторожевого таймера отключается. WDE может быть очищен только в том случае, если бит WDCE имеет логический уровень один. Чтобы отключить включенный сторожевой таймер, необходимо выполнить следующую процедуру:

В той же операции запишите логическую единицу в WDCE и WDE. Логическая единица должна быть записана в WDE, даже если она установлена ​​в единицу до начала операции отключения.

В течение следующих четырех тактов запишите логический 0 в WDE. Это отключает Watchdog.

На уровне безопасности 2 невозможно отключить сторожевой таймер даже с помощью алгоритма, описанного выше. Видеть «Временные последовательности для изменения конфигурации сторожевого таймера» на стр. 43.

На уровне безопасности 1 WDE отменяется WDRF в MCUSR. Видеть «MCUSR - Регистр состояния MCU» на стр. 44 для описания WDRF. Это означает, что WDE всегда устанавливается, когда установлен WDRF. Чтобы очистить WDE, необходимо очистить WDRF перед отключением Watchdog с помощью процедуры, описанной выше. Эта функция обеспечивает многократный сброс в условиях, вызывающих сбой, и безопасный запуск после сбоя.

Примечание. Если сторожевой таймер не будет использоваться в приложении, важно выполнить процедуру отключения сторожевого таймера при инициализации устройства. Если сторожевой таймер случайно включен, напримерampЕсли указатель выбегает из-под контроля или отключено, устройство будет перезагружено, что, в свою очередь, приведет к новому сбросу сторожевого таймера. Чтобы избежать этой ситуации, прикладное программное обеспечение должно всегда сбрасывать флаг WDRF и бит управления WDE в процедуре инициализации.

Биты 5, 2: 0 - WDP [3: 0]: предделитель сторожевого таймера 3, 2, 1 и 0

Биты WDP [3: 0] определяют предварительное масштабирование сторожевого таймера, когда сторожевой таймер включен. Различные значения предварительного масштабирования и соответствующие им периоды ожидания показаны на Таблица 8-3.

Таблица 8-3. Выбор предварительной шкалы сторожевого таймера

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К (32764) циклов 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 сек.

Таблица 8-3. Выбор предварительной шкалы сторожевого таймера (продолжение)

WDP3 WDP2 WDP1 WDP0 Количество циклов осциллятора WDT Типичный тайм-аут при VCC = 5.0 В
1 0 1 0 Сдержанный(1)
1 0 1 1
1 1 0 0
1 1 0 1
1 1 1 0
1 1 1 1

Примечание: 1. Если выбрано, будет использоваться одна из допустимых настроек ниже 0b1010.

Прерывания

В этом разделе описаны особенности обработки прерываний, выполняемой в ATtiny25 / 45/85. Общее объяснение обработки прерываний AVR см. В «Сброс и обработка прерываний» на стр. 12.

Векторы прерывания в ATtiny25 / 45/85

Векторы прерывания ATtiny25 / 45/85 описаны в Таблица 9-1ниже.

Таблица 9-1. Векторы сброса и прерывания

Вектор No. Адрес программы Источник Определение прерывания
1 0x0000 ПЕРЕЗАГРУЗИТЬ Внешний вывод, сброс при включении питания, сброс после отключения питания, сброс сторожевого таймера
2 0x0001 ИНТ0 Запрос внешнего прерывания 0
3 0x0002 PCINT0 Запрос прерывания смены контакта 0
4 0x0003 ТАЙМЕР1_КОМПА Таймер / Счетчик1 Сравнить совпадение A
5 0x0004 ТАЙМЕР1_OVF Переполнение таймера / счетчика 1
6 0x0005 ТАЙМЕР0_OVF Переполнение таймера / счетчика 0
7 0x0006 EE_RDY EEPROM готов
8 0x0007 ANA_COMP Аналоговый компаратор
9 0x0008 АЦП Преобразование АЦП завершено
10 0x0009 ТАЙМЕР1_КОМПБ Таймер / счетчик1 Сравнить совпадение B
11 0x000A ТАЙМЕР0_КОМПА Таймер / Счетчик0 Сравнить совпадение A
12 0x000B ТАЙМЕР0_КОМПБ Таймер / счетчик0 Сравнить совпадение B
13 0x000C ВДТ Тайм-аут сторожевого таймера
14 0x000D USI_START НАЧАЛО УЗИ
15 0x000E USI_OVF Переполнение USI

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

Типичная и общая настройка адресов вектора прерывания в ATtiny25 / 45/85 показана в программе ex.ampниже.

Код сборки Example
.org 0x0000 ; Установить адрес следующего заявление
rjmp СБРОС ; Адрес 0x0000
rjmp INT0_ISR ; Адрес 0x0001
rjmp PCINT0_ISR ; Адрес 0x0002
rjmp TIM1_COMPA_ISR ; Адрес 0x0003
rjmp TIM1_OVF_ISR ; Адрес 0x0004
rjmp TIM0_OVF_ISR ; Адрес 0x0005
rjmp EE_RDY_ISR ; Адрес 0x0006
rjmp ANA_COMP_ISR ; Адрес 0x0007
rjmp ADC_ISR ; Адрес 0x0008
rjmp TIM1_COMPB_ISR ; Адрес 0x0009
rjmp TIM0_COMPA_ISR ; Адрес 0x000A
rjmp TIM0_COMPB_ISR ; Адрес 0x000B
rjmp WDT_ISR ; Адрес 0x000C
rjmp USI_START_ISR ; Адрес 0x000D
rjmp USI_OVF_ISR ; Адрес 0x000E
СБРОС: ; Старт основной программы
; Адрес 0x000F

Примечание: см. «Код Examples »на странице 6.

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

Внешние прерывания запускаются выводом INT0 или любым из выводов PCINT [5: 0]. Обратите внимание, что, если включено, прерывания будут срабатывать, даже если выводы INT0 или PCINT [5: 0] сконфигурированы как выходы. Эта функция обеспечивает способ создания программного прерывания. Прерывания смены контактов PCI сработает, если переключится любой из включенных контактов PCINT [5: 0]. Регистр PCMSK управляет тем, какие выводы участвуют в прерываниях смены выводов. Прерывания смены вывода на PCINT [5: 0] обнаруживаются асинхронно. Это означает, что эти прерывания могут использоваться для пробуждения части также из спящих режимов, отличных от режима ожидания.

Прерывания INT0 могут быть вызваны спадающим или нарастающим фронтом или низким уровнем. Это настроено, как указано в спецификации для регистра управления MCU - MCUCR. Когда прерывание INT0 разрешено и настроено как запускаемое по уровню, прерывание будет срабатывать, пока на выводе будет оставаться низкий уровень. Обратите внимание, что для распознавания прерываний по падающему или нарастающему фронту на INT0 требуется наличие тактовой частоты ввода-вывода, описанной в «Системы часов и их распределение» в страница 23.

Прерывание низкого уровня

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

Обратите внимание, что если прерывание, запускаемое по уровню, используется для пробуждения из отключения питания, требуемый уровень должен удерживаться достаточно долго, чтобы MCU завершил пробуждение, чтобы вызвать прерывание по уровню. Если уровень исчезнет до истечения времени запуска, MCU все равно проснется, но прерывание не будет сгенерировано. Время запуска определяется предохранителями SUT и CKSEL, как описано в «Системные часы и параметры часов» на стр. 23.

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

Время прерывания смены пина

БывшийampВременной интервал прерывания смены вывода показан на Рисунок 9-1.

Описание реестра

MCUCR - Регистр управления MCU

Регистр управления внешним прерыванием A содержит управляющие биты для управления распознаванием прерывания.

Кусочек 7 6 5 4 3 2 1 0
0x35 БОДС ПУД SE СМ1 СМ0 БОДСЕ ISC01 ISC00 МКУКР
Чтение/Запись R Ч/З Ч/З Ч/З Ч/З R Ч/З Ч/З
Начальная стоимость 0 0 0 0 0 0 0 0

Биты 1: 0 - ISC0 [1: 0]: контроль определения прерывания 0, бит 1 и бит 0

Внешнее прерывание 0 активируется внешним выводом INT0, если установлен флаг SREG I и соответствующая маска прерывания. Уровень и фронты на внешнем выводе INT0, которые активируют прерывание, определены в Таблица 9-2. Значение на выводе INT0 - sampсветодиод до обнаружения краев. Если выбрано прерывание по фронту или переключение, импульсы, длящиеся более одного периода такта, будут генерировать прерывание. Более короткие импульсы не гарантируют создания прерывания. Если выбрано прерывание низкого уровня, низкий уровень должен удерживаться до завершения выполняемой в данный момент инструкции, чтобы сгенерировать прерывание.

Таблица 9-2. Прерывание 0 Sense Control

ISC01 ISC00 Описание
0 0 Низкий уровень INT0 генерирует запрос прерывания.
0 1 Любое логическое изменение в INT0 генерирует запрос прерывания.
1 0 Задний фронт INT0 генерирует запрос прерывания.
1 1 Нарастающий фронт INT0 генерирует запрос прерывания.

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

Кусочек 7 6 5 4 3 2 1 0
0x3B ИНТ0 PCIE ГИМСК
Чтение/Запись R Ч/З Ч/З R R R R R
Начальная стоимость 0 0 0 0 0 0 0 0

Биты 7, 4: 0 - Res: Зарезервированные биты

Эти биты являются зарезервированными битами в ATtiny25 / 45/85 и всегда читаются как ноль.

Бит 6 - INT0: запрос внешнего прерывания 0 разрешен

Когда установлен бит INT0 (единица) и установлен бит I в регистре состояния (SREG) (единица), разрешается прерывание от внешнего вывода. Биты 0/1 управления определением прерывания (ISC0 и ISC01) в регистре управления MCU (MCUCR) определяют, активизируется ли внешнее прерывание по нарастающему и / или спадающему фронту вывода INT00 или обнаруженному уровню. Активность на выводе вызовет запрос прерывания, даже если INT0 настроен как выход. Соответствующее прерывание запроса внешнего прерывания 0 выполняется из вектора прерывания INT0.

Бит 5 - PCIE: Разрешение прерывания при смене вывода

Когда бит PCIE установлен (единица) и бит I в регистре состояния (SREG) установлен (единица), разрешается прерывание смены вывода. Любое изменение на любом активированном выводе PCINT [5: 0] вызовет прерывание. Соответствующее прерывание запроса прерывания смены вывода выполняется из вектора прерывания PCI. Контакты PCINT [5: 0] активируются индивидуально регистром PCMSK0.

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

Кусочек 7 6 5 4 3 2 1 0
0x3A ИНТФ0 PCIF ГИФР
Чтение/Запись R Ч/З Ч/З R R R R R
Начальная стоимость 0 0 0 0 0 0 0 0

Биты 7, 4: 0 - Res: Зарезервированные биты

Эти биты являются зарезервированными битами в ATtiny25 / 45/85 и всегда читаются как ноль.

Бит 6 - INTF0: Флаг внешнего прерывания 0

Когда фронт или изменение логики на выводе INT0 запускает запрос прерывания, INTF0 становится установленным (единица). Если бит I в SREG и бит INT0 в GIMSK установлены (единица), MCU перейдет к соответствующему вектору прерывания. Флаг сбрасывается при выполнении подпрограммы прерывания. Как вариант, флаг можно сбросить, записав в него логическую единицу. Этот флаг всегда сбрасывается, если INT0 сконфигурирован как прерывание по уровню.

Бит 5 - PCIF: флаг прерывания смены вывода

Когда изменение логики на любом выводе PCINT [5: 0] запускает запрос прерывания, PCIF становится установленным (единица). Если бит I в SREG и бит PCIE в GIMSK установлены (единица), MCU перейдет к соответствующему вектору прерывания. Флаг сбрасывается при выполнении подпрограммы прерывания. В качестве альтернативы, флаг можно сбросить, записав в него логическую единицу.

PCMSK - Регистр маски смены вывода

Кусочек 7 6 5 4 3 2 1 0
0x15 PCINT5 PCINT4 PCINT3 PCINT2 PCINT1 PCINT0 ПЦМСК
Чтение/Запись R R Ч/З Ч/З Ч/З Ч/З Ч/З Ч/З
Начальная стоимость 0 0 0 0 0 0 0 0

Биты 7: 6 - Res: Зарезервированные биты

Эти биты являются зарезервированными битами в ATtiny25 / 45/85 и всегда читаются как ноль.

Биты 5: 0 - PCINT [5: 0]: маска разрешения смены вывода 5: 0

Каждый бит PCINT [5: 0] определяет, разрешено ли прерывание смены вывода на соответствующем выводе ввода / вывода. Если установлен PCINT [5: 0] и установлен бит PCIE в GIMSK, прерывание смены вывода разрешается на соответствующем выводе ввода / вывода. Если PCINT [5: 0] очищен, прерывание смены вывода на соответствующем выводе ввода-вывода отключено.

Порты ввода/вывода

Введение

Все порты AVR имеют настоящую функциональность чтения-изменения-записи при использовании в качестве обычных цифровых портов ввода-вывода. Это означает, что направление одного вывода порта может быть изменено без непреднамеренного изменения направления любого другого вывода с помощью инструкций SBI и CBI. То же самое применимо при изменении значения привода (если он сконфигурирован как выход) или включения / выключения подтягивающих резисторов (если он сконфигурирован как вход). Каждый выходной буфер имеет симметричные характеристики возбуждения с высокой пропускной способностью как приемника, так и источника. Пин-драйвер достаточно силен, чтобы напрямую управлять светодиодными дисплеями. Все выводы порта имеют индивидуально выбираемые подтягивающие резисторы с напряжением питания.tagинвариантное сопротивление. Все контакты ввода-вывода имеют защитные диоды как для VCC, так и для земли, как показано на рис. Рисунок 10-1. См. «Электрические характеристики» на странице 161 для получения полного списка параметров.

Рисунок 10-1. Схема эквивалента контактов ввода/вывода

Рис10

Все регистры и битовые ссылки в этом разделе написаны в общем виде. Строчная буква «x» представляет собой нумерацию порта, а строчная буква «n» представляет номер бита. Однако при использовании регистров или битов в программе необходимо использовать точную форму. Для бывшегоample, PORTB3 для бита № 3 в порту B, здесь обычно обозначен как PORTxn. Физические регистры ввода / вывода и расположение битов перечислены в «Описание регистра» на страница 64.

Для каждого порта выделяются три ячейки памяти ввода / вывода, по одной для регистра данных - PORTx, регистра направления данных - DDRx и контактов ввода порта - PINx. Расположение входных контактов порта для ввода / вывода доступно только для чтения, в то время как регистр данных и регистр направления данных предназначены для чтения / записи. Однако запись логической единицы в бит в регистре PINx приведет к переключению соответствующего бита в регистре данных. Кроме того, установленный бит Pull-up Disable - PUD в MCUCR отключает функцию подтягивания для всех контактов во всех портах.

Использование порта ввода / вывода в качестве общего цифрового ввода / вывода описано в «Порты как общий цифровой ввод / вывод» на стр. 53. Большинство контактов порта мультиплексированы с альтернативными функциями для периферийных функций устройства. Как каждая альтернативная функция влияет на вывод порта, описано в «Функции альтернативного порта» на стр. 57. Полное описание альтернативных функций см. В разделах отдельных модулей.

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

Порты как общие цифровые входы / выходы

Порты представляют собой двунаправленные порты ввода-вывода с дополнительными внутренними подтягивающими устройствами. Рисунок 10-2 показывает функциональное описание одного вывода порта ввода / вывода, который здесь обычно называется Pxn.

Рисунок 10-2. Общий цифровой ввод/вывод(1)

Рис10

Настройка пина

Каждый вывод порта состоит из трех битов регистра: DDxn, PORTxn и PINxn. Как показано в «Описание регистра» на страница 64доступ к битам DDxn осуществляется по адресу ввода-вывода DDRx, к битам PORTxn - по адресу ввода-вывода PORTx, а к битам PINxn - по адресу ввода-вывода PINx.

Бит DDxn в регистре DDRx выбирает направление этого вывода. Если в DDxn записана логическая единица, Pxn конфигурируется как выходной контакт. Если в DDxn записан логический ноль, Pxn конфигурируется как входной вывод.

Если в PORTxn записана логическая единица, когда вывод настроен как входной, активируется подтягивающий резистор. Чтобы выключить подтягивающий резистор, в PORTxn должен быть записан логический ноль или вывод должен быть сконфигурирован как выходной вывод. Когда условие сброса становится активным, контакты порта имеют тройное обозначение, даже если часы не работают.

Если в PORTxn записана логическая единица, когда вывод настроен как выходной вывод, на выводе порта устанавливается высокий уровень (единица). Если в PORTxn записан логический ноль, когда вывод настроен как выходной вывод, на выводе порта устанавливается низкий уровень (ноль).

Переключение булавки

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

Переключение между входом и выходом

При переключении между тремя состояниями ({DDxn, PORTxn} = 0b00) и выходным высоким уровнем ({DDxn, PORTxn} = 0b11), промежуточным состоянием либо с включенной подтяжкой {DDxn, PORTxn} = 0b01, либо выходным низким уровнем ({DDxn, PORTxn} = 0b10). Обычно разрешенное состояние подтяжки вполне приемлемо, так как среда с высоким импедансом не заметит разницы между драйвером с сильным высоким сопротивлением и подтягиванием. Если это не так, бит PUD в регистре MCUCR может быть установлен для отключения всех подтягиваний во всех портах.

Переключение между входом с подтягиванием и низким выходом создает ту же проблему. Пользователь должен использовать три состояния ({DDxn, PORTxn} = 0b00) или выходное состояние высокого уровня ({DDxn, PORTxn} = 0b10) в качестве промежуточного шага.

Таблица 10-1 суммирует управляющие сигналы для значения вывода.

Таблица 10-1. Конфигурации контактов порта

ДДxn ПОРТxn ПУД

(в MCUCR)

Ввод/вывод Остановить Комментарий
0 0 X Вход Нет Три состояния (Hi-Z)
0 1 0 Вход Да Pxn будет источником тока, если ext. потянул низко.
0 1 1 Вход Нет Три состояния (Hi-Z)
1 0 X Выход Нет Низкий уровень выхода (сток)
1 1 X Выход Нет Выходной высокий (источник)

Чтение значения пина

Независимо от установки бита DDxn направления данных, вывод порта может быть прочитан через бит регистра PINxn. Как показано в Рисунок 10-2, бит регистра PINxn и предыдущая защелка составляют синхронизатор. Это необходимо, чтобы избежать метастабильности, если физический вывод изменяет значение около края внутренних часов, но это также приводит к задержке. Рисунок 10-3 показывает временную диаграмму синхронизации при чтении внешнего значения вывода. Максимальная и минимальная задержки распространения обозначаются tpd,max и tpd,min соответственно.

Рассмотрим период тактовой частоты, начинающийся вскоре после первого спада системных часов. Защелка закрывается, когда часы на низком уровне, и становится прозрачной, когда часы высокие, на что указывает заштрихованная область сигнала «SYNC LATCH». Значение сигнала фиксируется, когда системные часы идут на низкий уровень. Он синхронизируется в регистре PINxn на последующем положительном фронте тактового сигнала. Как указано двумя стрелками tpd, max и tpd, min, одиночный переход сигнала на выводе будет задержан между 1/XNUMX и XNUMX½ периодом системных часов в зависимости от времени подтверждения.

При обратном чтении значения вывода, назначенного программным обеспечением, необходимо вставить инструкцию nop, как указано в Рисунок 10-4. Команда out устанавливает сигнал «SYNC LATCH» на положительном фронте тактового сигнала. В этом случае задержка tpd через синхронизатор составляет один период системного такта.

Следующий код example показывает, как установить контакты 0 и 1 порта B в высокий уровень, 2 и 3 в низкий уровень, а также определить контакты порта с 4 по 5 в качестве входных с подтягиванием, назначенным на контакт 4 порта. Результирующие значения контактов считываются снова, но как обсуждалось ранее, инструкция nop включена, чтобы иметь возможность считывать значение, недавно присвоенное некоторым контактам.

Код сборки Example(1)

; Определяйте подтягивания и устанавливайте высокие выходные параметры

; Определить направления для выводов порта

ldi        r16,(1<<PB4)|(1<<PB1)|(1<<PB0)

ldi        r17,(1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0)

вых ПОРТВ,r16

из DDRB,r17

; Вставьте nop для синхронизации

нет

; Чтение выводов порта

в r16, PINB

Примечание. Для ассемблерной программы используются два временных регистра, чтобы свести к минимуму время от установки подтягиваний на контактах 0, 1 и 4 до правильной установки битов направления, определяя биты 2 и 3 как младшие и переопределяя биты 0 и 1. XNUMX как сильные высокие драйверы.

Код C Example
беззнаковый символ i;

/* Определяем подтягивания и устанавливаем высокие выходы */

/* Определяем направления для выводов порта */ PORTB = (1<

DDRB = (1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0);

/* Вставляем nop для синхронизации*/

_НОП ();

/* Чтение выводов порта */ i = PINB;

Включение цифрового входа и режимы ожидания

Как показано на Рисунок 10-2, цифровой входной сигнал может бытьamped на землю на входе триггера Шмитта. Сигнал, обозначенный SLEEP на рисунке, устанавливается контроллером сна MCU в режиме отключения питания, чтобы избежать высокого энергопотребления, если некоторые входные сигналы остаются плавающими или имеют уровень аналогового сигнала, близкий к VCC/2.

SLEEP отменяется для контактов порта, разрешенных как контакты внешнего прерывания. Если запрос внешнего прерывания не разрешен, SLEEP также активен для этих выводов. SLEEP также отменяется различными другими альтернативными функциями, как описано в «Функции альтернативного порта» на стр. 57.

Если на выводе асинхронного внешнего прерывания присутствует высокий логический уровень («единица»), настроенный как «Прерывание по переднему фронту, заднему фронту или любому логическому изменению на выводе», в то время как внешнее прерывание не разрешено, соответствующий флаг внешнего прерывания будет быть установлен при выходе из упомянутого выше спящего режима, так как clampРабота в этом спящем режиме вызывает запрошенное изменение логики.

Несоединенные контакты

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

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

Функции альтернативного порта

Большинство контактов порта имеют альтернативные функции в дополнение к общим цифровым входам / выходам. Рисунок 10-5 показывает, как сигналы управления выводом порта из упрощенного Рисунок 10-2 могут быть отменены альтернативными функциями. Замещающие сигналы могут присутствовать не на всех выводах порта, но рисунок служит общим описанием, применимым ко всем выводам порта в семействе микроконтроллеров AVR.

Таблица 10-2. Общее описание переопределяющих сигналов для альтернативных функций

Имя сигнала Полное имя Описание
ПУОЭ Включить отмену вытягивания Если этот сигнал установлен, включение подтягивания управляется сигналом PUOV. Если этот сигнал сброшен, подтягивание активируется, когда

{DDxn, PORTxn, PUD} = 0b010.

ПУОВ Значение отмены подтягивания Если установлен PUOE, подтягивание включается / отключается, когда PUOV устанавливается / очищается, независимо от установки битов регистров DDxn, PORTxn и PUD.
ДДОЭ Включение переопределения направления данных Если этот сигнал установлен, включение драйвера вывода управляется сигналом DDOV. Если этот сигнал сброшен, драйвер вывода активируется битом регистра DDxn.
ДДОВ Значение переопределения направления данных Если установлен DDOE, выходной драйвер включается / отключается при установке / сбросе DDOV, независимо от установки бита регистра DDxn.
ПВОЭ Включить переопределение значения порта Если этот сигнал установлен и выходной драйвер включен, значение порта управляется сигналом PVOV. Если PVOE очищен и выходной драйвер включен, значение порта управляется битом регистра PORTxn.
ПВОВ Значение переопределения значения порта Если установлен PVOE, значение порта устанавливается на PVOV, независимо от установки бита регистра PORTxn.
ВОМ Включить переопределение переключателя портов Если PTOE установлен, бит регистра PORTxn инвертируется.
ДИЭОЭ Включение цифрового входа Включение блокировки Если этот бит установлен, включение цифрового входа управляется сигналом DIEOV. Если этот сигнал сброшен, включение цифрового входа определяется состоянием MCU (нормальный режим, спящий режим).
ДИЕОВ Значение блокировки включения цифрового входа Если установлен DIEOE, цифровой вход включается / отключается при установке / сбросе DIEOV, независимо от состояния MCU (нормальный режим, спящий режим).
DI Цифровой вход Это цифровой вход для альтернативных функций. На рисунке сигнал подключен к выходу триггера Шмитта, но перед синхронизатором. Если цифровой вход не используется в качестве источника синхронизации, модуль с альтернативной функцией будет использовать свой собственный синхронизатор.
АИО Аналоговый ввод / вывод Это аналоговый ввод / вывод для / из альтернативных функций. Сигнал подключается непосредственно к пэду и может использоваться в двух направлениях.

В следующих подразделах кратко описываются альтернативные функции для каждого порта и связываются сигналы отмены с альтернативной функцией. Дополнительные сведения см. В описании альтернативной функции.

Альтернативные функции порта B

Контакты порта B с альтернативной функцией показаны на Таблица 10-3.

Таблица 10-3. Альтернативные функции контактов порта B

Порт-штифт Альтернативная функция
ПБ5

СБРОС: сбросить пин

dW: debugWIRE I / O ADC0: Входной канал ADC 0

PCINT5: прерывание смены контакта, источник 5

ПБ4 XTAL2: Выход кварцевого генератора CLKO: Выход системной тактовой частоты ADC2: Входной канал АЦП 2

OC1B: таймер / счетчик1, сравнение совпадения B, выход PCINT4: прерывание смены контакта 0, источник 4

ПБ3 XTAL1: Вход кварцевого генератора CLKI: Вход внешнего тактового сигнала ADC3: Входной канал АЦП 3

OC1B: Дополнительный таймер / счетчик1, выход сравнения B, выход PCINT3: прерывание при смене контакта 0, источник 3

ПБ2 SCK: последовательный тактовый вход ADC1: входной канал ADC 1

T0: Таймер / счетчик0 Источник тактовой частоты USCK: Тактовая частота USI (трехпроводный режим) SCL: Тактовая частота USI (двухпроводной режим) INT0: Внешнее прерывание 0 Вход PCINT2: Прерывание изменения контакта 0, источник 2

ПБ1 MISO: ввод основных данных SPI / вывод данных ведомого AIN1: аналоговый компаратор, отрицательный вход OC0B: таймер / счетчик0, выход сравнения B OC1A: таймер / счетчик1, выход сравнения A, выход DO: выход данных USI (трехпроводный режим) PCINT1: прерывание при смене контакта 0, Источник 1
ПБ0 MOSI :: SPI Master Data Output / Slave Data Input AIN0: аналоговый компаратор, положительный вход

OC0A: Сравнение таймера/счетчика 0 соответствует выходу A

OC1A: дополнительный таймер / счетчик1, выход сравнения A, выход DI: ввод данных USI (трехпроводной режим)

SDA: ввод данных USI (двухпроводный режим) AREF: внешний аналоговый опорный сигнал PCINT0: прерывание изменения контакта 0, источник 0

Порт B, бит 5 - RESET / dW / ADC0 / PCINT5

СБРОС: вход внешнего сброса активен на низком уровне и активируется путем отмены программирования («1») предохранителя RSTDISBL. Подтягивание активируется, а выходной драйвер и цифровой вход деактивируются, когда вывод используется в качестве вывода RESET.

dW: Когда запрограммирован предохранитель debugWIRE Enable (DWEN), а биты блокировки не запрограммированы, активируется система debugWIRE на целевом устройстве. Вывод порта RESET сконфигурирован как двунаправленный вывод ввода / вывода типа Wire-AND (открытый сток) с включенным подтягиванием и становится шлюзом связи между целью и эмулятором.

ADC0: аналого-цифровой преобразователь, канал 0.

PCINT5: источник прерывания при смене вывода 5.

Порт B, бит 4 - XTAL2 / CLKO / ADC2 / OC1B / PCINT4

XTAL2: вывод 2 тактового генератора микросхемы. Используется как вывод тактового сигнала для всех источников тактовой частоты микросхемы, кроме внутреннего калибруемого RC-генератора и внешнего тактового сигнала. При использовании в качестве тактового вывода этот вывод не может использоваться как вывод ввода / вывода. При использовании внутреннего калибруемого RC-генератора или внешних часов в качестве источников тактовой частоты чипа PB4 служит обычным выводом ввода / вывода.

CLKO: разделенные системные часы могут выводиться на вывод PB4. Разделенные системные часы будут выводиться, если запрограммирован предохранитель CKOUT, независимо от настроек PORTB4 и DDB4. Он также будет выводиться во время сброса.

ADC2: аналого-цифровой преобразователь, канал 2.

OC1B: Выход совпадения выхода сравнения: вывод PB4 может служить внешним выходом для совпадения таймера / счетчика 1 сравнения B, если он настроен как выход (установлен DDB4). Вывод OC1B также является выводом для функции таймера режима ШИМ.

PCINT4: источник прерывания при смене вывода 4.

Порт B, бит 3 - XTAL1 / CLKI / ADC3 / OC1B / PCINT3

XTAL1: Вывод 1 генератора тактовой частоты микросхемы. Используется для всех источников тактовой частоты микросхемы, кроме внутреннего калибруемого RC-генератора. При использовании в качестве тактового вывода этот вывод не может использоваться как вывод ввода / вывода.

CLKI: вход синхронизации от внешнего источника синхронизации, см. «Внешние часы» на стр. 26.

ADC3: аналого-цифровой преобразователь, канал 3.

OC1B: выход Inverted Output Compare Match: Контакт PB3 может служить в качестве внешнего выхода для таймера / счетчика 1 Compare Match B, если он настроен как выход (установлен DDB3). Вывод OC1B также является перевернутым выводом для функции таймера режима ШИМ.

PCINT3: источник прерывания при смене вывода 3.

Порт B, бит 2 - SCK / ADC1 / T0 / USCK / SCL / INT0 / PCINT2

SCK: выход Master Clock, входной контакт Slave Clock для канала SPI. Когда SPI включен как ведомый, этот вывод настраивается как вход независимо от настройки DDB2. Когда SPI включен в качестве Мастера, направление данных этого вывода контролируется DDPB2. Когда SPI заставляет вывод быть входом, подтягивание все еще может контролироваться битом PORTB2.

ADC1: аналого-цифровой преобразователь, канал 1.

T0: Источник счетчика Таймер / Счетчик0.

USCK: Трехпроводные часы универсального последовательного интерфейса.

SCL: двухпроводный режим, последовательные часы для двухпроводного режима USI.

INT0: Внешний источник прерывания 0.

PCINT2: источник прерывания при смене вывода 2.

Порт B, бит 1 - MISO / AIN1 / OC0B / OC1A / DO / PCINT1

MISO: ввод основных данных, вывод данных ведомого устройства для канала SPI. Когда SPI включен как Master, этот вывод настраивается как вход независимо от настройки DDB1. Когда SPI включен как Slave, направление данных этого вывода контролируется DDB1. Когда SPI заставляет вывод быть входом, подтягивание все еще может контролироваться битом PORTB1.

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

OC0B: Выходное сравнение выхода совпадения. Вывод PB1 может служить внешним выходом для таймера / счетчика 0 для сравнения совпадений B. Вывод PB1 должен быть настроен как выход (набор DDB1 (один)) для выполнения этой функции. Вывод OC0B также является выводом для функции таймера режима ШИМ.

OC1A: Выход совпадения выхода сравнения: вывод PB1 может служить внешним выходом для совпадения B таймера / счетчика 1, если он настроен как выход (установлен DDB1). Вывод OC1A также является выводом для функции таймера режима ШИМ.

DO: трехпроводной режим вывода данных универсального последовательного интерфейса. Трехпроводный режим Вывод данных отменяет значение PORTB1 и передается в порт, когда установлен бит DDB1 направления данных (единица). PORTB1 по-прежнему разрешает подтягивание, если направление задано и PORTB1 установлен (один).

PCINT1: источник прерывания при смене вывода 1.

Порт B, бит 0 - MOSI / AIN0 / OC0A / OC1A / DI / SDA / AREF / PCINT0

MOSI: вывод основных данных SPI, ввод данных ведомого для канала SPI. Когда SPI включен как ведомый, этот вывод настраивается как вход независимо от настройки DDB0. Когда SPI включен в качестве Мастера, направление данных этого вывода контролируется DDB0. Когда SPI заставляет вывод быть входом, подтягивание все еще может контролироваться битом PORTB0.

AIN0: Положительный вход аналогового компаратора. Настройте вывод порта как вход с отключенным внутренним подтягиванием, чтобы функция цифрового порта не мешала работе аналогового компаратора.

OC0A: Выходное сравнение выхода совпадения. Вывод PB0 может служить внешним выходом для таймера / счетчика 0 Compare Match A, если он настроен как выход (набор DDB0 (один)). Вывод OC0A также является выводом для функции таймера режима ШИМ.

OC1A: выход Inverted Output Compare Match: вывод PB0 может служить в качестве внешнего выхода для таймера / счетчика 1 Compare Match B, если он настроен как выход (установлен DDB0). Вывод OC1A также является перевернутым выводом для функции таймера режима ШИМ.

SDA: данные последовательного интерфейса в двухпроводном режиме.

AREF: Внешний аналоговый источник опорного сигнала для АЦП. Драйвер подтягивания и вывода отключены на PB0, когда вывод используется в качестве внешнего опорного сигнала или внутреннего напряжения.tage Ссылка с внешним конденсатором на выводе AREF.

DI: ввод данных в трехпроводном режиме USI. Трехпроводный режим USI не отменяет нормальные функции порта, поэтому контакт должен быть настроен как вход для функции DI.

PCINT0: источник прерывания при смене вывода 0.

Таблица 10-4 и Таблица 10-5 свяжите альтернативные функции порта B с сигналами блокировки, показанными на Рисунок 10-5 на страница 58.

Таблица 10-4. Переопределение сигналов для альтернативных функций в PB[5:3]

Имя сигнала PB5 / СБРОС / ADC0 / PCINT5 PB4/ADC2/XTAL2/ OC1B/PCINT4 PB3/ADC3/XTAL1/ OC1B/PCINT3
ПУОЭ

RSTDISBL(1) • ДВЕН(1)

0 0
ПУОВ 1 0 0
ДДОЭ RSTDISBL(1) • ДВЕН(1) 0 0
ДДОВ debugWire Передача 0 0
ПВОЭ 0 OC1B Включить

OC1B Включить

ПВОВ 0 ОС1В ОС1В
ВОМ 0 0 0
ДИЭОЭ

RSTDISBL(1) + (PCINT5 • PCIE + ADC0D)

PCINT4 • PCIE + ADC2D PCINT3 • PCIE + ADC3D
ДИЕОВ АДК0Д АДК2Д АДК3Д
DI PCINT5 Вход PCINT4 Вход PCINT3 Вход
АИО Вход сброса, вход ADC0 Вход АЦП2 Вход АЦП3

Примечание: когда предохранитель установлен на «0» (запрограммировано).

Таблица 10-5. Переопределение сигналов для альтернативных функций в PB[2:0]

Имя сигнала PB2/SCK/ADC1/T0/ USCK/SCL/INT0/PCINT2 PB1/MISO/DO/AIN1/ OC1A/OC0B/PCINT1 PB0/MOSI/DI/SDA/AIN0/AR EF/OC1A/OC0A/

PCINT0

ПУОЭ USI_TWO_WIRE 0 USI_TWO_WIRE
ПУОВ 0 0 0
ДДОЭ USI_TWO_WIRE 0 USI_TWO_WIRE
ДДОВ (USI_SCL_HOLD + PORTB2) • DDB2 0  

(SDA + ПОРТB0) • DDB0

ПВОЭ USI_TWO_WIRE • DDB2 OC0B Включить + OC1A Включить + USI_THREE_WIRE

OC0A Включить + OC1A Включить + (USI_TWO_WIRE

ДДБ0)

ПВОВ 0 ОС0В + ОС1А + ДО

ОС0А + ОС1А

ВОМ USITC 0 0
ДИЭОЭ PCINT2 • PCIE + ADC1D + USISIE PCINT1 • PCIE + AIN1D PCINT0 • PCIE + AIN0D + USISIE
ДИЕОВ АДК1Д АИН1Д АИН0Д
DI T0 / USCK / SCL / INT0 /

PCINT2 Вход

PCINT1 Вход Вход DI / SDA / PCINT0
АИО Вход АЦП1 Отрицательный вход аналогового компаратора Положительный вход аналогового компаратора

Описание реестра

MCUCR - Регистр управления MCU

Кусочек 7 6 5 4 3 2 1 0
0x35 БОДС ПУД SE СМ1 СМ0 БОДСЕ ISC01 ISC00 МКУКР
Чтение/Запись R Ч/З Ч/З Ч/З Ч/З R Ч/З Ч/З
Начальная стоимость 0 0 0 0 0 0 0 0

Бит 6 - PUD: отключение подтягивания

Когда этот бит записывается в единицу, подтягивания в портах ввода / вывода запрещаются, даже если регистры DDxn и PORTxn настроены на включение подтягиваний ({DDxn, PORTxn} = 0b01). Видеть «Настройка пина» на стр. 54 для получения дополнительных сведений об этой функции.

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

Кусочек 7 6 5 4 3 2 1 0
0x18 ПОРТB5 ПОРТB4 ПОРТB3 ПОРТB2 ПОРТB1 ПОРТB0 ПОРТБ
Чтение/Запись R R Ч/З Ч/З Ч/З Ч/З Ч/З Ч/З
Начальная стоимость 0 0 0 0 0 0 0 0

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

Кусочек 7 6 5 4 3 2 1 0
0x17 DDB5 DDB4 DDB3 DDB2 DDB1 DDB0 ДДРБ
Чтение/Запись R R Ч/З Ч/З Ч/З Ч/З Ч/З Ч/З
Начальная стоимость 0 0 0 0 0 0 0 0

PINB - Адрес входных контактов порта B

Кусочек 7 6 5 4 3 2 1 0
0x16 PINB5 PINB4 PINB3 PINB2 PINB1 PINB0 ПИНБ
Чтение/Запись R R Ч/З Ч/З Ч/З Ч/З Ч/З Ч/З
Начальная стоимость 0 0 Н/Д Н/Д Н/Д Н/Д Н/Д Н/Д

8-битный таймер / счетчик0 с ШИМ

Функции

Два независимых блока сравнения выходов

Регистры сравнения выходных данных с двойной буферизацией

Сброс таймера при сравнении совпадений (автоматическая перезагрузка)

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

Переменный период ШИМ

Генератор частоты

Три независимых источника прерывания (TOV0, OCF0A и OCF0B)

Надview

Timer / Counter0 - это 8-битный модуль таймера / счетчика общего назначения с двумя независимыми модулями сравнения выходных сигналов и поддержкой PWM. Это позволяет точно определять время выполнения программы (управление событиями) и генерировать волны.

Упрощенная блок-схема 8-битного таймера / счетчика показана на Рисунок 11-1. Фактическое размещение контактов ввода / вывода см. «Распиновка ATtiny25 / 45/85» на стр. 2. Регистры ввода-вывода, доступные для ЦП, включая биты ввода-вывода и выводы ввода-вывода, выделены жирным шрифтом. Регистр ввода / вывода, зависящий от устройства, и расположение битов перечислены в «Описание регистра» на стр. 77.

Регистры таймера/счетчика (TCNT0) и регистры сравнения выходов (OCR0A и OCR0B) являются 8-битными регистрами. Все сигналы запроса прерывания (сокращенно Int.Req. на рисунке) отображаются в регистре флагов прерывания таймера (TIFR). Все прерывания индивидуально маскируются с помощью регистра маски прерывания таймера (TIMSK). TIFR и TIMSK на рисунке не показаны.

Таймер/счетчик может синхронизироваться внутри, через предварительный делитель или с помощью внешнего источника синхронизации на выводе T0. Логический блок Clock Select управляет тем, какой источник тактового сигнала и фронт используются Таймером/Счетчиком для увеличения (или уменьшения) его значения. Таймер/счетчик неактивен, если не выбран источник синхронизации. Выход логики выбора часов называется часами таймера (clkT0).

Регистры сравнения вывода с двойной буферизацией (OCR0A и OCR0B) постоянно сравниваются со значением таймера / счетчика. Результат сравнения может быть использован генератором сигналов для генерации выходного сигнала ШИМ или переменной частоты на выводах сравнения выходных сигналов (OC0A и OC0B). См. «Блок сравнения выходов» на стр. 69. для подробностей. Событие Compare Match также установит флаг сравнения (OCF0A или OCF0B), который можно использовать для генерации запроса прерывания сравнения выходных данных.

Определения

Многие ссылки на регистры и биты в этом разделе написаны в общем виде. Строчная буква «n» заменяет номер таймера / счетчика, в данном случае 0. Строчная буква «x» заменяет выходной блок сравнения, в данном случае блок сравнения A или блок сравнения B. Однако при использовании регистра или бита определяется в программе должна использоваться точная форма, т. е. TCNT0 для доступа к значению счетчика Timer / Counter0 и так далее.

Определения в Таблица 11-1 также широко используются в документе.

Таблица 11-1. Определения

Постоянный Описание
НИЖНИЙ Счетчик достигает ВНИЗ, когда становится 0x00.
МАКС Счетчик достигает своего МАКСИМАЛЬНОГО значения, когда становится 0xFF (десятичное 255).
ВЕРШИНА Счетчик достигает TOP, когда становится равным самому высокому значению в последовательности счета. Значение TOP может быть фиксированным значением 0xFF (MAX) или значением, хранящимся в регистре OCR0A. Назначение зависит от режима работы

Предделитель таймера / счетчика и источники тактовой частоты

Таймер / счетчик может синхронизироваться внутренним или внешним источником синхронизации. Источник синхронизации выбирается логикой выбора часов, которая управляется битами выбора часов (c), расположенными в регистре управления таймером / счетчиком 0 (TCCR0B).

Внутренний источник тактовой частоты с предделителем

Timer/Counter0 может синхронизироваться непосредственно системными часами (установив CS0[2:0] = 1). Это обеспечивает самую быструю работу с максимальной тактовой частотой таймера/счетчика, равной системной тактовой частоте (fCLK_I/O). Альтернативно, в качестве источника тактового сигнала можно использовать один из четырех ответвлений от предварительного делителя. Предварительно масштабированные часы имеют частоту либо

Сброс предделителя

Предварительный делитель работает автономно, т. Е. Он работает независимо от логики выбора часов таймера / счетчика0. Поскольку на предварительный делитель не влияет выбор часов таймера / счетчика, состояние предварительного делителя будет иметь значение для ситуаций, в которых используются предварительно масштабированные часы. Один бывшийampАртефакт предварительного масштабирования возникает, когда таймер / счетчик включен и синхронизируется предварительным масштабированием (6> CS0 [2: 0]> 1). Число системных тактовых циклов с момента включения таймера до первого счета может быть от 1 до N + 1 системных тактовых циклов, где N равно делителю предварительного делителя (8, 64, 256 или 1024).

Можно использовать сброс предделителя для синхронизации таймера / счетчика с выполнением программы.

Внешний источник синхронизации

Внешний источник синхронизации, подключенный к выводу T0, может использоваться в качестве таймера/счетчика (clkT0). Контакт T0ampсветится один раз за каждый цикл системной тактовой частоты логикой синхронизации контактов. Синхронизированный (sampсветодио дный) сигнал затем передается

через детектор края. Рисунок 11-2 показана функциональная эквивалентная блок-схема синхронизации T0 и логики детектора фронта. Регистры синхронизируются по положительному фронту внутренних системных часов (clkI/O). Защелка прозрачна в высоком периоде внутренних системных часов.

Детектор фронта генерирует один импульс clkT0 для каждого положительного (CS0[2:0] = 7) или отрицательного (CS0[2:0] = 6) фронта, который он обнаруживает.

Регистры OCR0x имеют двойную буферизацию при использовании любого из режимов широтно-импульсной модуляции (ШИМ). Для нормального режима работы и режима сброса таймера при сравнении (CTC) двойная буферизация отключена. Двойная буферизация синхронизирует обновление регистров сравнения OCR0x до начала или конца счетной последовательности. Синхронизация предотвращает возникновение несимметричных импульсов ШИМ нечетной длины, тем самым обеспечивая отсутствие сбоев на выходе.

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

Принудительное сравнение выходных данных

В режимах генерации сигнала без ШИМ выходной сигнал совпадения компаратора может быть принудительно записан путем записи единицы в бит принудительного сравнения выходных данных (FOC0x). Принудительное сравнение совпадения не устанавливает флаг OCF0x или перезагружает / очищает таймер, но вывод OC0x будет обновлен, как если бы произошло реальное сравнение сравнения (настройки битов COM0x [1: 0] определяют, установлен ли вывод OC0x, очищен или переключено).

Сравнить блокировку совпадений с помощью записи TCNT0

Все операции записи ЦП в регистр TCNT0 будут блокировать любое совпадение сравнения, которое происходит в следующем тактовом цикле таймера, даже когда таймер остановлен. Эта функция позволяет инициализировать OCR0x тем же значением, что и TCNT0, без запуска прерывания, когда включены часы таймера / счетчика.

Использование блока сравнения выходных данных

Поскольку запись TCNT0 в любом режиме работы блокирует все совпадения сравнения для одного тактового цикла таймера, существуют риски, связанные с изменением TCNT0 при использовании блока сравнения выходов, независимо от того, работает таймер / счетчик или нет. Если значение, записанное в TCNT0, равно значению OCR0x, сравнение совпадений будет пропущено, что приведет к формированию неправильной формы сигнала. Точно так же не записывайте значение TCNT0 равным BOTTOM, когда счетчик ведет обратный отсчет.

Настройка OC0x должна выполняться до настройки регистра направления данных для вывода порта на вывод. Самый простой способ установить значение OC0x - использовать строб-биты Force Output Compare (FOC0x) в нормальном режиме. Регистры OC0x сохраняют свои значения даже при переключении между режимами генерации сигналов.

Имейте в виду, что биты COM0x [1: 0] не буферизуются дважды вместе со значением сравнения. Изменение битов COM0x [1: 0] вступит в силу немедленно.

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

Биты режима вывода сравнения (COM0x [1: 0]) имеют две функции. Генератор сигналов использует биты COM0x [1: 0] для определения состояния выходного сравнения (OC0x) при следующем сопоставлении сравнения. Кроме того, биты COM0x [1: 0] управляют выходным источником вывода OC0x. Рисунок 11-6 показывает упрощенную схему логики, на которую влияет установка бита COM0x [1: 0]. Регистры ввода-вывода, биты ввода-вывода и контакты ввода-вывода на рисунке выделены жирным шрифтом. Показаны только те части общих регистров управления портом ввода-вывода (DDR и PORT), на которые влияют биты COM0x [1: 0]. При обращении к состоянию OC0x ссылка относится к внутреннему регистру OC0x, а не к выводу OC0x. Если происходит сброс системы, регистр OC0x сбрасывается на «0».

Когда OC0A / OC0B подключен к выводу ввода / вывода, функция битов COM0A [1: 0] / COM0B [1: 0] зависит от установки бита WGM0 [2: 0]. Таблица 11-2 показывает функциональность бита COM0x [1: 0], когда биты WGM0 [2: 0] установлены в нормальный режим или режим CTC (не-ШИМ).

Таблица 11-2. Сравните режим вывода, режим без ШИМ

COM0A1 COM0B1 COM0A0 COM0B0 Описание
0 0 Нормальная работа порта, OC0A / OC0B отключены.
0 1 Переключить OC0A / OC0B при сравнении совпадений
1 0 Очистить OC0A / OC0B при сопоставлении совпадений
1 1 Установите OC0A / OC0B на сравнение совпадений

Таблица 11-3 показывает функциональность бита COM0x [1: 0], когда биты WGM0 [2: 0] установлены в режим быстрой ШИМ.

Таблица 11-3. Сравните режим вывода, режим быстрого ШИМ(1)

COM0A1 COM0B1 COM0A0 COM0B0 Описание
0 0 Нормальная работа порта, OC0A / OC0B отключены.
0 1 Сдержанный
1 0 Очистить OC0A / OC0B при сопоставлении совпадений, установить OC0A / OC0B на НИЖНИЙ (неинвертирующий режим)
1 1 Установите OC0A / OC0B на сравнение совпадений, очистите OC0A / OC0B в НИЖНЕМ (режим инвертирования)

Примечание. Особый случай возникает, когда OCR0A или OCR0B равно TOP и установлено значение COM0A1/COM0B1. В этом случае сопоставление игнорируется, но установка или очистка выполняется в BOTTOM. Видеть «Режим Fast PWM» на стр. 73 для более подробной информации.

Таблица 11-4 показывает функциональность бита COM0x [1: 0], когда биты WGM0 [2: 0] установлены в режим ШИМ с коррекцией фазы.

Таблица 11-4. Сравните режим вывода, режим фазовой коррекции PWM(1)

COM0A1 COM0B1 COM0A0 COM0B0 Описание
0 0 Нормальная работа порта, OC0A / OC0B отключены.
0 1 Сдержанный
1 0 Очистите OC0A / OC0B при сравнении совпадений при обратном подсчете. Установите OC0A / OC0B на «Сравнить совпадение» при обратном отсчете.
1 1 Установите для OC0A / OC0B значение «Сравнить совпадение» при восходящем подсчете. Очистите OC0A / OC0B при сравнении совпадений при обратном отсчете.

Примечание: 1. Особый случай возникает, когда OCR0A или OCR0B равно TOP и установлено значение COM0A1/COM0B1. В этом случае сравнение совпадений игнорируется, но установка или очистка выполняется в TOP. Видеть «Режим фазовой коррекции ШИМ» на стр. 74 для более подробной информации.

Биты 3: 2 - Res: Зарезервированные биты

Эти биты являются зарезервированными битами в ATtiny25 / 45/85 и всегда читаются как ноль.

Биты 1: 0 - WGM0 [1: 0]: режим генерации сигнала

В сочетании с битом WGM02, находящимся в регистре TCCR0B, эти биты управляют последовательностью счета счетчика, источником максимального (TOP) значения счетчика и типом генерации сигнала, который будет использоваться, см. Таблица 11-5. Блок таймера / счетчика поддерживает следующие режимы работы: нормальный режим (счетчик), режим сброса таймера при сравнении (CTC) и два типа режимов широтно-импульсной модуляции (ШИМ) (см. «Режимы работы» на странице 71).

Таблица 11-5. Бит режима генерации сигнала Описание

Режим РГМ 02 РГМ 01 РГМ 00 Режим работы таймера / счетчика ВЕРШИНА Обновление OCRx на Установлен флаг ТОВ
0 0 0 0 Нормальный 0xFF Немедленный МАКС(1)
1 0 0 1 ШИМ, фазовая коррекция 0xFF ВЕРШИНА НИЖНИЙ(2)
2 0 1 0 СТС OCRA Немедленный МАКС(1)
3 0 1 1 Быстрая ШИМ 0xFF НИЖНИЙ(2) МАКС(1)
4 1 0 0 Сдержанный
5 1 0 1 ШИМ, фазовая коррекция OCRA ВЕРШИНА НИЖНИЙ(2)
6 1 1 0 Сдержанный
7 1 1 1 Быстрая ШИМ OCRA НИЖНИЙ(2) ВЕРШИНА

Бит 7 - FOC0A: сравнение выходных данных A

Бит FOC0A активен только тогда, когда биты WGM определяют режим без ШИМ.

Однако для обеспечения совместимости с будущими устройствами этот бит должен быть установлен в ноль при записи TCCR0B при работе в режиме ШИМ. При записи логической единицы в бит FOC0A, в блоке генерации сигнала принудительно выполняется немедленное сопоставление. Выход OC0A изменяется в соответствии с настройкой битов COM0A [1: 0]. Обратите внимание, что бит FOC0A реализован как строб. Следовательно, значение, присутствующее в битах COM0A [1: 0], определяет эффект принудительного сравнения.

Строб FOC0A не будет генерировать прерывания и не сбросит таймер в режиме CTC, используя OCR0A как TOP. Бит FOC0A всегда читается как ноль.

Бит 6 - FOC0B: сравнение выходных данных B

Бит FOC0B активен только тогда, когда биты WGM определяют режим без ШИМ.

Однако для обеспечения совместимости с будущими устройствами этот бит должен быть установлен в ноль при записи TCCR0B при работе в режиме ШИМ. При записи логической единицы в бит FOC0B, блок генерации сигнала принудительно выполняет немедленное сопоставление. Выход OC0B изменяется в соответствии с настройкой битов COM0B [1: 0]. Обратите внимание, что бит FOC0B реализован как строб. Следовательно, значение, присутствующее в битах COM0B [1: 0], определяет эффект принудительного сравнения.

Строб FOC0B не создает прерывания и не сбрасывает таймер в режиме CTC, используя OCR0B как TOP.

Бит FOC0B всегда читается как ноль.

Биты 5: 4 - Res: Зарезервированные биты

Эти биты являются зарезервированными битами в ATtiny25 / 45/85 и всегда читаются как ноль.

Бит 3 - WGM02: режим генерации сигнала

См. Описание в «TCCR0A - Регистр управления таймером / счетчиком A» на стр. 77.

Биты 2: 0 - CS0 [2: 0]: выбор часов

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

Таблица 11-6. Бит выбора часов Описание

CS02 CS01 CS00 Описание
0 0 0 Нет источника часов (таймер / счетчик остановлен)
0 0 1 clkI/O/(без предварительного масштабирования)
0 1 0 clkI/O/8 (из прескалера)
0 1 1 clkI/O/64 (из прескалера)
1 0 0 clkI/O/256 (из прескалера)
1 0 1 clkI/O/1024 (из прескалера)
1 1 0 Внешний источник синхронизации на выводе T0. Часы на заднем крае.
1 1 1 Внешний источник синхронизации на выводе T0. Часы на переднем крае.

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

Счетчик и сравнивающие устройства

Общая работа таймера / счетчика1 описывается в асинхронном режиме, а работа в синхронном режиме упоминается только в том случае, если между этими двумя режимами есть различия. Рисунок 12-2 показывает блок-схему регистра синхронизации таймера / счетчика 1 и задержки синхронизации между регистрами. Обратите внимание, что все детали стробирования часов не показаны на рисунке. Значения регистра Timer / Counter1 проходят через регистры внутренней синхронизации, которые вызывают задержку синхронизации входа, прежде чем повлиять на работу счетчика. Регистры TCCR1, GTCCR, OCR1A, OCR1B и OCR1C могут быть прочитаны сразу после записи в регистр. Считанные значения задерживаются для регистра таймера / счетчика1 (TCNT1) и флагов (OCF1A, OCF1B и TOV1) из-за синхронизации ввода и вывода.

Таймер / счетчик1 отличается высоким разрешением и высокой точностью использования с меньшими возможностями предварительного масштабирования. Он также может поддерживать два точных, высокоскоростных, 8-битных широтно-импульсных модуляторов с тактовой частотой до 64 МГц (или 32 МГц в низкоскоростном режиме). В этом режиме Таймер / Счетчик1 и регистры сравнения выходов служат как двойные автономные ШИМ с неперекрывающимися неинвертированными и инвертированными выходами. Ссылаться на страница 86 для подробного описания этой функции. Точно так же широкие возможности предварительного масштабирования делают это устройство полезным для функций с низкой скоростью или точных функций синхронизации с нечастыми действиями.

Рисунок 12-2. Блок-схема регистра синхронизации таймера/счетчика 1.

Таймер / счетчик1 и предварительный делитель позволяют запускать ЦП от любого источника тактовой частоты, в то время как предварительный делитель работает на быстрой частоте PCK 64 МГц (или 32 МГц в низкоскоростном режиме) в асинхронном режиме.

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

Следующее Рисунок 12-3 показывает блок-схему для Таймера / Счетчика1.

Таблица 12-1. Выбор режима сравнения в режиме PWM

COM1x1 COM1x0 Влияние на выходные контакты сравнения
0 0 OC1x не подключен. OC1x не подключен.
0 1 OC1x сброшен при сравнении совпадений. Устанавливается, когдаTCNT1 = $ 00. OC1x установлен на сравнение совпадений. Сбрасывается, когда TCNT1 = $ 00.
1 0 OC1x сброшен при сравнении совпадений. Устанавливается, когда TCNT1 = $ 00. OC1x не подключен.
1 1 OC1x Установить на сравнение совпадений. Сбрасывается, когда TCNT1 = $ 00. OC1x не подключен.

Характеристики АЦП

Таблица 21-8. Характеристики АЦП, несимметричные каналы. TA = от -40°C до +85°C

Символ Параметр Состояние Мин. Тип Макс Единицы
Разрешение 10 Биты
Абсолютная точность (включая INL, DNL и ошибки квантования, усиления и смещения) VREF = 4В, VCC = 4В,

Тактовая частота АЦП = 200 кГц

2 МЗП
VREF = 4В, VCC = 4В,

Тактовая частота АЦП = 1 МГц

3 МЗП
VREF = 4В, VCC = 4В,

Тактовая частота АЦП = 200 кГц

Режим шумоподавления

1.5 МЗП
VREF = 4В, VCC = 4В,

Тактовая частота АЦП = 1 МГц

Режим шумоподавления

2.5 МЗП
Интегральная нелинейность (INL) (точность после калибровки смещения и усиления) VREF = 4В, VCC = 4В,

Тактовая частота АЦП = 200 кГц

1 МЗП
Дифференциальная нелинейность (DNL) VREF = 4В, VCC = 4В,

Тактовая частота АЦП = 200 кГц

0.5 МЗП
Ошибка усиления VREF = 4В, VCC = 4В,

Тактовая частота АЦП = 200 кГц

2.5 МЗП
Ошибка смещения VREF = 4В, VCC = 4В,

Тактовая частота АЦП = 200 кГц

1.5 МЗП
Время конверсии Бесплатная конвертация 14 280 мкс
Частота часов 50 1000 кГц
ВИН-номер Vol входtage Земля VREF V
Входная полоса пропускания 38.4 кГц
АРЕФ Внешняя ссылка Voltage 2.0 ВКЦ V
ВИНТ Внутренний объемtage Ссылка 1.0 1.1 1.2 V
Внутреннее опорное напряжение 2.56 В (1) VCC > 3.0 В 2.3 2.56 2.8 V
РЕФ 32 кОм
ДОЖДЬ Сопротивление аналогового входа 100 МОм
Выход АЦП 0 1023 МЗП

Примечание: 1. Значения являются ориентировочными.

Таблица 21-9. Характеристики АЦП, дифференциальные каналы (униполярный режим). TA = от -40°C до +85°C

Символ Параметр Состояние Мин. Тип Макс Единицы
Разрешение Усиление = 1x 10 Биты
Усиление = 20x 10 Биты
Абсолютная точность (включая INL, DNL и

Ошибки квантования, усиления и смещения)

Усиление = 1x

VREF = 4В, VCC = 5В

Тактовая частота АЦП = 50-200 кГц

10.0 МЗП
Усиление = 20x

VREF = 4В, VCC = 5В

Тактовая частота АЦП = 50-200 кГц

20.0 МЗП
Интегральная нелинейность (INL) (точность после калибровки смещения и усиления) Усиление = 1x

VREF = 4В, VCC = 5В

Тактовая частота АЦП = 50-200 кГц

4.0 МЗП
Усиление = 20x

VREF = 4В, VCC = 5В

Тактовая частота АЦП = 50-200 кГц

10.0 МЗП
Ошибка усиления Усиление = 1x 10.0 МЗП
Усиление = 20x 15.0 МЗП
Ошибка смещения Усиление = 1x

VREF = 4В, VCC = 5В

Тактовая частота АЦП = 50-200 кГц

3.0 МЗП
Усиление = 20x

VREF = 4В, VCC = 5В

Тактовая частота АЦП = 50-200 кГц

4.0 МЗП
Время конверсии Бесплатная конвертация 70 280 мкс
Частота часов 50 200 кГц
ВИН-номер Vol входtage Земля ВКЦ V
ВДИФФ Входной дифференциальный объемtage VREF/усиление V
Входная полоса пропускания 4 кГц
АРЕФ Внешняя ссылка Voltage 2.0 ВКК – 1.0 V
ВИНТ Внутренний объемtage Ссылка 1.0 1.1 1.2 V
Внутреннее опорное напряжение 2.56 В (1) VCC > 3.0 В 2.3 2.56 2.8 V
РЕФ Эталонное входное сопротивление 32 кОм
ДОЖДЬ Сопротивление аналогового входа 100 МОм
Выход преобразования АЦП 0 1023 МЗП

Примечание. Значения являются ориентировочными.

Таблица 21-10. Характеристики АЦП, дифференциальные каналы (биполярный режим). TA = от -40°C до +85°C

Символ Параметр Состояние Мин. Тип Макс Единицы
Разрешение Усиление = 1x 10 Биты
Усиление = 20x 10 Биты
Абсолютная точность (включая INL, DNL и

Ошибки квантования, усиления и смещения)

Усиление = 1x

VREF = 4В, VCC = 5В

Тактовая частота АЦП = 50-200 кГц

8.0 МЗП
Усиление = 20x

VREF = 4В, VCC = 5В

Тактовая частота АЦП = 50-200 кГц

8.0 МЗП
Интегральная нелинейность (INL) (точность после калибровки смещения и усиления) Усиление = 1x

VREF = 4В, VCC = 5В

Тактовая частота АЦП = 50-200 кГц

4.0 МЗП
Усиление = 20x

VREF = 4В, VCC = 5В

Тактовая частота АЦП = 50-200 кГц

5.0 МЗП
Ошибка усиления Усиление = 1x 4.0 МЗП
Усиление = 20x 5.0 МЗП
Ошибка смещения Усиление = 1x

VREF = 4В, VCC = 5В

Тактовая частота АЦП = 50-200 кГц

3.0 МЗП
Усиление = 20x

VREF = 4В, VCC = 5В

Тактовая частота АЦП = 50-200 кГц

4.0 МЗП
Время конверсии Бесплатная конвертация 70 280 мкс
Частота часов 50 200 кГц
ВИН-номер Vol входtage Земля ВКЦ V
ВДИФФ Входной дифференциальный объемtage VREF/усиление V
Входная полоса пропускания 4 кГц
АРЕФ Внешняя ссылка Voltage 2.0 ВКК – 1.0 V
ВИНТ Внутренний объемtage Ссылка 1.0 1.1 1.2 V
Внутреннее опорное напряжение 2.56 В (1) VCC > 3.0 В 2.3 2.56 2.8 V
РЕФ Эталонное входное сопротивление 32 кОм
ДОЖДЬ Сопротивление аналогового входа 100 МОм
Выход преобразования АЦП -512 511 МЗП

Сводка по набору инструкций

Мнемоника Операнды Описание Операция Флаги # Часы
АРИФМЕТИЧЕСКИЕ И ЛОГИЧЕСКИЕ ИНСТРУКЦИИ
ДОБАВЛЯТЬ Рд, Рр Добавить два регистра Rd ← Rd + Rr Z, C, N, V, H 1
АЦП Рд, Рр Сложить с переносом двух регистров Rd ← Rd + Rr + C Z, C, N, V, H 1
АДИВ Rdl, К Добавить в Word Rdh:Rdl ← Правый:Rdl + K Z, C, N, V, S 2
СУБ Рд, Рр Вычтите два регистра Rd ← Rd – Rr Z, C, N, V, H 1
СУБИ Рд, К Вычесть константу из регистра Рд ← Рд – К Z, C, N, V, H 1
ЮБК Рд, Рр Вычесть с переносом двух регистров Rd ← Rd – Rr – C Z, C, N, V, H 1
СБКИ Рд, К Вычтите с константой переноса из рег. Рд ← Рд – К – С Z, C, N, V, H 1
СБИВ Rdl, К Вычесть сразу из Word Rdh:Rdl ← Rdh:Rdl – K Z, C, N, V, S 2
И Рд, Рр Логические регистры И Рд ← Рд ∙ Рр Z, N, V 1
ЭНДИ Рд, К Регистр логического И и константа Рд ← Рд ∙ К Z, N, V 1
OR Рд, Рр Логические регистры ИЛИ Rd ← Rd v Rr Z, N, V 1
ОРИ Рд, К Логический регистр ИЛИ и константа Rd ← Rd v K Z, N, V 1
ЭОР Рд, Рр Исключающие регистры ИЛИ Rd ← Rd ⊕ Rr Z, N, V 1
КОМ Rd Дополнение к одному Rd ← 0xFF – Rd Z, C, N, V 1
NEG Rd Дополнение до двух Rd ← 0x00 - Rd Z, C, N, V, H 1
СБР Rd, K Установить бит (ы) в регистре Rd ← Rd v K Z, N, V 1
ЦБ РФ Rd, K Очистить бит (ы) в регистре Rd ← Rd ∙ (0xFF – K) Z, N, V 1
ИНК Rd Приращение Rd ← Rd + 1 Z, N, V 1
ДЕКАБРЬ Rd декремент Rd ← Rd - 1 Z, N, V 1
TST Rd Тест на ноль или минус Rd ← Rd ∙ Rd Z, N, V 1
КЛР Rd Очистить регистр Rd ← Rd ⊕ Rd Z, N, V 1
СЭР Rd Установить регистр Rd ← 0xFF Никто 1
ФИЛИАЛ ИНСТРУКЦИИ
РЖМП k Относительный прыжок ПК ← ПК + k + 1 Никто 2
IJMP Косвенный переход к (Z) ПК ← Я Никто 2
RCALL k Относительный вызов подпрограммы ПК ← ПК + k + 1 Никто 3
Я ЗВОНЮ Косвенный вызов (Z) ПК ← Я Никто 3
РЕТ Возврат подпрограммы ПК ← СТЕК Никто 4
РЕТИ Возврат по прерыванию ПК ← СТЕК I 4
КПСЕ Rd, Rr Сравнить, пропустить, если равно если (Rd = Rr) PC ← PC + 2 или 3 Никто 1/2/3
CP Rd, Rr Сравнивать Рд - Рр Z, N, V, C, H 1
КПК Rd, Rr Сравнить с Carry Рд - Рр - С Z, N, V, C, H 1
ИПЦ Rd, K Сравнить регистр с немедленным Рд - К Z, N, V, C, H 1
СБРЦ Рр, б Пропустить, если бит в регистре очищен если (Rr(b)=0) ПК ← ПК + 2 или 3 Никто 1/2/3
СБРС Рр, б Пропустить, если установлен бит в регистре если (Rr(b)=1) ПК ← ПК + 2 или 3 Никто 1/2/3
SBIC П, б Пропустить, если бит в регистре ввода-вывода очищен если (P(b)=0) PC ← PC + 2 или 3 Никто 1/2/3
СБИС П, б Пропустить, если установлен бит в регистре ввода / вывода если (P(b)=1) PC ← PC + 2 или 3 Никто 1/2/3
БРБС с, к Переход, если установлен флаг состояния если (SREG(s) = 1), то PC ← PC+k + 1 Никто 1/2
БРБК с, к Переход, если флаг состояния снят если (SREG(s) = 0), то PC ← PC+k + 1 Никто 1/2
БРЕК k Ветвь, если равно если (Z = 1), то PC ← PC + k + 1 Никто 1/2
БРНЕ k Ветвь, если не равно если (Z = 0), то PC ← PC + k + 1 Никто 1/2
БРКС k Ветвь при переноске если (C = 1), то PC ← PC + k + 1 Никто 1/2
БРЦК k Ветвь, если перенос очищен если (C = 0), то PC ← PC + k + 1 Никто 1/2
БРШ k Ветвь, если такая же или выше если (C = 0), то PC ← PC + k + 1 Никто 1/2
БРЛО k Ветвь, если ниже если (C = 1), то PC ← PC + k + 1 Никто 1/2
БРМИ k Ветвь, если минус если (N = 1), то PC ← PC + k + 1 Никто 1/2
БРПЛ k Ветвь, если Плюс если (N = 0), то PC ← PC + k + 1 Никто 1/2
БРГЕ k Ответвление, если оно больше или равно, подписано если (N ⊕ V= 0), то PC ← PC + k + 1 Никто 1/2
БРЛТ k Ветвь, если меньше нуля, подпись если (N ⊕ V= 1), то PC ← PC + k + 1 Никто 1/2
БРХС k Ветвь, если установлен флаг наполовину. если (H = 1), то PC ← PC + k + 1 Никто 1/2
БРГЦ k Разветвляться, если снят флаг Half Carry если (H = 0), то PC ← PC + k + 1 Никто 1/2
БРТС k Переход, если установлен флаг T если (T = 1), то PC ← PC + k + 1 Никто 1/2
БРТК k Переход, если снят флаг T если (T = 0), то PC ← PC + k + 1 Никто 1/2
БРВС k Переход, если установлен флаг переполнения если (V = 1), то PC ← PC + k + 1 Никто 1/2
БРВК k Переход, если снят флаг переполнения если (V = 0), то PC ← PC + k + 1 Никто 1/2
БРИ k Переход, если прерывание разрешено если ( I = 1), то PC ← PC + k + 1 Никто 1/2
БРИД k Переход, если прерывание отключено если ( I = 0), то PC ← PC + k + 1 Никто 1/2
ИНСТРУКЦИИ ПО БИТУ И БИТ-ТЕСТУ
ВОО П, б Установить бит в регистре ввода / вывода Ввод/вывод(P,b) ← 1 Никто 2
ЦБР П, б Очистить бит в регистре ввода / вывода Ввод/вывод(P,b) ← 0 Никто 2
ЛСЛ Rd Логический сдвиг влево Rd(n+1) ← Rd(n), Rd(0) ← 0 Z, C, N, V 1
ЛСР Rd Логический сдвиг вправо Rd(n) ← Rd(n+1), Rd(7) ← 0 Z, C, N, V 1
ролета Rd Повернуть влево через перенос Rd (0) ← C, Rd (n + 1) ← Rd (n), C ← Rd (7) Z, C, N, V 1
РОР Rd Повернуть вправо через перенос Rd (7) ← C, Rd (n) ← Rd (n + 1), C ← Rd (0) Z, C, N, V 1
АСР Rd Арифметический сдвиг вправо Rd(n) ← Rd(n+1), n=0..6 Z, C, N, V 1
Мнемоника Операнды Описание Операция Флаги # Часы
МЕНЯТЬ Rd Обмен грызть Rd(3..0)←Rd(7..4),Rd(7..4)←Rd(3..0) Никто 1
БСЕТ s Флаг установлен SREG(s) ← 1 SREG (s) 1
БЦЛР s Пометить Очистить SREG(s) ← 0 SREG (s) 1
БСТ Рр, б Битовое хранилище из регистра в T Т ← Рр(б) T 1
БЛД Пр, б Битовая нагрузка от Т до регистра Рд(б) ← Т Никто 1
СЕЦ Установить Carry С ← 1 C 1
КЛК Очистить перенос С ← 0 C 1
СЕН Установить отрицательный флаг N ← 1 N 1
КЛН Очистить отрицательный флаг N ← 0 N 1
СЭЗ Установить нулевой флаг Z ← 1 Z 1
КЛЗ Очистить нулевой флаг Z ← 0 Z 1
СЭИ Включение глобального прерывания Я ← 1 I 1
CLI Глобальное отключение прерывания Я ← 0 I 1
СЭС Установить подписанный тестовый флаг С ← 1 S 1
ЦЛС Очистить подписанный тестовый флаг С ← 0 S 1
СЭВ Установить переполнение дополнения до двух. В ← 1 V 1
КЛВ Очистить переполнение дополнения до двоек В ← 0 V 1
НАБОР Установить T в SREG Т ← 1 T 1
CLT Очистить T в SREG Т ← 0 T 1
ВИДЕТЬ Установить флаг половинного переноса в SREG Н ← 1 H 1
КЛХ Очистить флаг половинного переноса в SREG Н ← 0 H 1
ИНСТРУКЦИИ ПО ПЕРЕДАЧЕ ДАННЫХ
МОВ Рд, Рр Перемещение между регистрами Рд ← Рр Никто 1
МОВВ Рд, Рр Копировать регистровое слово Rd+1:Rd ← Rr+1:Rr Никто 1
ЛДИ Рд, К Немедленная загрузка Рд ← К Никто 1
LD Рд, Х Нагрузка косвенная Rd ← (Х) Никто 2
LD Rd, X + Load Indirect и Post-Inc. Rd ← (X), X ← X + 1 Никто 2
LD Rd, - X Нагрузка косвенная и до декабря. X ← X – 1, Rd ← (X) Никто 2
LD Рд, Ю Нагрузка косвенная Rd ← (Y) Никто 2
LD Rd, Y + Load Indirect и Post-Inc. Rd ← (Y), Y ← Y + 1 Никто 2
LD Rd, - Y Нагрузка косвенная и до декабря. Y ← Y – 1, Rd ← (Y) Никто 2
ЛДД Rd, Y + q Непрямая нагрузка со смещением Rd ← (Y + q) Никто 2
LD Рд, З Нагрузка косвенная Rd ← (Я) Никто 2
LD Rd, Z + Load Indirect и Post-Inc. Rd ← (Z), Z ← Z+1 Никто 2
LD Рд, -З Нагрузка косвенная и до декабря. Z ← Z – 1, Rd ← (Z) Никто 2
ЛДД Rd, Z + q Непрямая нагрузка со смещением Rd ← (Z + Q) Никто 2
СПД рд, к Загрузка напрямую из SRAM Rd ← (к) Никто 2
ST Х, Рр Косвенный магазин (Х) ← Рр Никто 2
ST X +, Rr Store Indirect и Post-Inc. (X) ← Rr, X ← X + 1 Никто 2
ST - X, Rr Магазин косвенных и до декабря. X ← X – 1, (X) ← Rr Никто 2
ST Ю, Рр Косвенный магазин (Y) ← Рр Никто 2
ST Y +, Rr Store Indirect и Post-Inc. (Y) ← Rr, Y ← Y + 1 Никто 2
ST - Y, Rr Магазин косвенных и до декабря. Y ← Y – 1, (Y) ← Rr Никто 2
ЗППП Y + q, Rr Косвенное хранение со смещением (Y + q) ← Rr Никто 2
ST З, Рр Косвенный магазин (Я) ← Рр Никто 2
ST Z +, Rr Store Indirect и Post-Inc. (Z) ← Rr, Z ← Z + 1 Никто 2
ST -З, Рр Магазин косвенных и до декабря. Z ← Z – 1, (Z) ← Rr Никто 2
ЗППП Z + q, Rr Косвенное хранение со смещением (Z + q) ← Рр Никто 2
СТС к, рр Сохранять напрямую в SRAM (к) ← Рр Никто 2
ЛПМ Загрузить программную память R0 ← (Я) Никто 3
ЛПМ Рд, З Загрузить программную память Rd ← (Я) Никто 3
ЛПМ Rd, Z + Загрузка программной памяти и Post-Inc Rd ← (Z), Z ← Z+1 Никто 3
СПМ Сохранение программной памяти (з) ← R1:R0 Никто
IN Пр, п В порту Рд ← П Никто 1
ВНЕ П, Рр Выходной порт П ← Рр Никто 1
ТОЛКАТЬ Rr Отправить регистр в стек СТЕК ← Рр Никто 2
ПОП Rd Поп-регистр из стека Rd ← СТЕК Никто 2
ИНСТРУКЦИИ ПО УПРАВЛЕНИЮ MCU
НОП Операция не выполняется Никто 1
СПАТЬ Спать (см. специальное описание функции сна) Никто 1
ВДР Сброс сторожевого таймера (см. специальное описание для WDR / таймера) Никто 1
ПЕРЕРЫВ Перерыв
Скорость (МГц) (1) Объем поставкиtagе (В) Диапазон температур Упаковка (2) Код заказа (3)
10 1.8 – 5.5 Промышленный

(От -40 ° C до + 85 ° C) (4)

8P3 ATtiny45V-10PU
8С2 ATtiny45V-10SU ATtiny45V-10SUR ATtiny45V-10SH ATtiny45V-10SHR
8X ATtiny45V-10XU ATtiny45V-10XUR
20M1 ATtiny45V-10MU
20 2.7 – 5.5 Промышленный

(От -40 ° C до + 85 ° C) (4)

8P3 ATtiny45-20PU
8С2 ATtiny45-20SU ATtiny45-20SUR

АТтини45-20Ш АТтини45-20ШР

8X ATtiny45-20XU ATtiny45-20XUR
20M1 ATtiny45-20MU ATtiny45-20MUR

Примечания: 1. Для скорости по сравнению с объемом питания.tage, см. раздел 21.3 «Скорость» на стр. 163.

Все упаковки не содержат свинца, галогенидов и полностью экологичны и соответствуют Европейской директиве по ограничению содержания опасных веществ (RoHS).

Кодовые индикаторы

H: свинцовая отделка NiPdAu

U: матовая банка

R: лента и катушка

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

Опечатки

Исправление ATtiny25

Буква версии в этом разделе относится к версии устройства ATtiny25.

Ред. D - F

Известных ошибок нет.

Ред. B - C

Чтение EEPROM может завершиться ошибкой при низком уровне напряжения питанияtagе / низкая тактовая частота

Чтение EEPROM может завершиться ошибкой при низком уровне напряжения питанияtagе / низкая тактовая частота

Попытка прочитать EEPROM при низких тактовых частотах и ​​/ или низком напряжении питанияtage может привести к неверным данным.

Исправление проблемы / обходной путь

Не используйте EEPROM, если тактовая частота ниже 1 МГц и напряжение питания.tagе ниже 2 В. Если рабочую частоту нельзя поднять выше 1 МГц, тогда напряжение питанияtagе должно быть больше 2В. Аналогично, если объем поставкиtage нельзя поднять выше 2 В, тогда рабочая частота должна быть более 1 МГц.

Эта особенность, как известно, зависит от температуры, но не охарактеризована. Указания приведены только для комнатной температуры.

Ред А

Не сampсветодиод.

Исправление ATtiny45

Буква версии в этом разделе относится к версии устройства ATtiny45.

Ред. F - G

Нет известных ошибок

Ред. D - E

Чтение EEPROM может завершиться ошибкой при низком уровне напряжения питанияtagе / низкая тактовая частота

Чтение EEPROM может завершиться ошибкой при низком уровне напряжения питанияtagе / низкая тактовая частота

Попытка прочитать EEPROM при низких тактовых частотах и ​​/ или низком напряжении питанияtage может привести к неверным данным.

Исправление проблемы / обходной путь

Не используйте EEPROM, если тактовая частота ниже 1 МГц и напряжение питания.tagе ниже 2 В. Если рабочую частоту нельзя поднять выше 1 МГц, тогда напряжение питанияtagе должно быть больше 2В. Аналогично, если объем поставкиtage нельзя поднять выше 2 В, тогда рабочая частота должна быть более 1 МГц.

Эта особенность, как известно, зависит от температуры, но не охарактеризована. Указания приведены только для комнатной температуры.

Ред. B - C

ФАПЧ не блокируется

EEPROM, считанный из кода приложения, не работает в режиме Lock Bit Mode 3

Чтение EEPROM может завершиться ошибкой при низком уровне напряжения питанияtagе / низкая тактовая частота

Генерация выходного сигнала таймера счетчика 1 PWM на OC1B- XOC1B не работает правильно

ФАПЧ не блокируется

При частотах ниже 6.0 МГц ФАПЧ не блокируется.

Исправление проблемы / обходной путь

При использовании ФАПЧ работайте на частоте 6.0 МГц или выше.

EEPROM, считанный из кода приложения, не работает в режиме Lock Bit Mode 3

Когда биты блокировки памяти LB2 и LB1 запрограммированы на режим 3, чтение EEPROM не работает из кода приложения.

Устранение проблемы / Временное решение

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

Чтение EEPROM может завершиться ошибкой при низком уровне напряжения питанияtagе / низкая тактовая частота

Попытка прочитать EEPROM при низких тактовых частотах и ​​/ или низком напряжении питанияtage может привести к неверным данным.

Исправление проблемы / обходной путь

Не используйте EEPROM, если тактовая частота ниже 1 МГц и напряжение питания.tagе ниже 2 В. Если рабочую частоту нельзя поднять выше 1 МГц, тогда напряжение питанияtagе должно быть больше 2В. Аналогично, если объем поставкиtage нельзя поднять выше 2 В, тогда рабочая частота должна быть более 1 МГц.

Эта особенность, как известно, зависит от температуры, но не охарактеризована. Указания приведены только для комнатной температуры.

Генерация выходного сигнала PWM счетчика таймера 1 на OC1B - XOC1B не работает правильно

Выход таймера счетчика 1 PWM OC1B-XOC1B работает некорректно. Только в том случае, если управляющие биты COM1B1 и COM1B0 находятся в том же режиме, что и COM1A1 и COM1A0, соответственно, выход OC1B-XOC1B работает правильно.

Устранение проблемы / Временное решение

Единственный обходной путь - использовать одинаковые настройки управления для управляющих битов COM1A [1: 0] и COM1B [1: 0], см. Таблицу 14-4 в техническом описании. Проблема исправлена ​​для Tiny45 rev D.

Ред А

Слишком высокое энергопотребление при отключении питания

DebugWIRE теряет связь при однократном переходе в прерывания

ФАПЧ не блокируется

EEPROM, считанный из кода приложения, не работает в режиме Lock Bit Mode 3

Чтение EEPROM может завершиться ошибкой при низком уровне напряжения питанияtagе / низкая тактовая частота

Слишком высокое энергопотребление при отключении питания

Три ситуации приведут к слишком высокому энергопотреблению при отключении питания. Эти:

Внешние часы выбираются предохранителями, но ПОРТ В / В по-прежнему активен как выход.

EEPROM читается перед отключением питания.

VCC составляет 4.5 В или выше.

Отказ от ответственности. Информация в этом документе относится к продуктам Atmel. Настоящим документом или в связи с продажей продуктов Atmel не предоставляется никакая лицензия, явная или подразумеваемая, посредством эстоппеля или иным образом, на какое-либо право на интеллектуальную собственность. ЗА ИСКЛЮЧЕНИЕМ ИЗЛОЖЕННЫХ В ПОЛОЖЕНИЯХ И УСЛОВИЯХ ПРОДАЖИ ATMEL, РАСПОЛОЖЕННЫХ НА ATMEL WEBСАЙТА, ​​ATMEL НЕ НЕСЕТ НИКАКОЙ ОТВЕТСТВЕННОСТИ И ОТКАЗЫВАЕТСЯ ОТ ЛЮБЫХ ЯВНЫХ, ПОДРАЗУМЕВАЕМЫХ ИЛИ УСТАНОВЛЕННЫХ ЗАКОНОМ ГАРАНТИЙ В ОТНОШЕНИИ СВОИХ ПРОДУКТОВ, ВКЛЮЧАЯ, ПОМИМО ПРОЧЕГО, ПОДРАЗУМЕВАЕМЫЕ ГАРАНТИИ КОММЕРЧЕСКОЙ ПРИГОДНОСТИ, ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ ИЛИ НЕНАРУШЕНИЯ ПРАВ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ ATMEL НЕ НЕСЕТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБОЙ ПРЯМОЙ, КОСВЕННЫЙ, КОСВЕННЫЙ, ШТРАФНЫЙ, ОСОБЫЙ ИЛИ СЛУЧАЙНЫЙ УЩЕРБ (ВКЛЮЧАЯ, ПОМИМО ПРОЧЕГО, УЩЕРБ И ПРИБЫЛЬ, ПРИБЫЛЬ В ДЕЯТЕЛЬНОСТИ ИЛИ ПОТЕРЮ ИНФОРМАЦИИ), ВОЗНИКШИЙ В РЕЗУЛЬТАТЕ ИСПОЛЬЗОВАНИЯ ИЛИ НЕВОЗМОЖНОСТИ ИСПОЛЬЗОВАНИЯ НАСТОЯЩИЙ ДОКУМЕНТ, ДАЖЕ ЕСЛИ КОМПАНИИ ATMEL БЫЛО ИЗВЕСТНО О ВОЗМОЖНОСТИ ТАКИХ УЩЕРБОВ.

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

Ссылки

Оставьте комментарий

Ваш адрес электронной почты не будет опубликован. Обязательные поля отмечены *