WWW.MASH.DOBROTA.BIZ
БЕСПЛАТНАЯ  ИНТЕРНЕТ  БИБЛИОТЕКА - онлайн публикации
 

Pages:   || 2 | 3 |

«флэш-памятью емкостью 128 кбайт 1.Общее описание 2.Ядро центрального процессорного устройства AVR 3.Память 4.Интерфейс внешней памяти 5.Системная синхронизация и тактовые ...»

-- [ Страница 1 ] --

ATmega128, ATmega128L

8-разрядный AVR-микроконтроллер с внутрисистемно программируемой

флэш-памятью емкостью 128 кбайт

1.Общее описание

2.Ядро центрального процессорного устройства AVR

3.Память

4.Интерфейс внешней памяти

5.Системная синхронизация и тактовые источники

6.Внешняя синхронизация

7.Управление энергопотреблением и режимы сна

8.Системное управление и сброс

9.Прерывания

10.Порты ввода-вывода

- Порты в качестве универсального цифрового ввода-вывода

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

- Описание регистров портов ввода-вывода

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

12.Аналоговый компаратор 13.16-разр. таймеры-счетчики 1 и 3

- Доступ к 16-разрядным регистрам

- Тактовые источники таймера-счетчика 1/3

- Блок счетчика

- Блок захвата

- Блоки сравнения

- Блок формирования выходного сигнала

- Режимы работы

14.Временные диаграммы 16-разрядных таймеров-счетчиков

15.Описание регистров 16-разрядных таймеров-счетчиков

16.Предделители таймеров-счетчиков 1, 2 и 3

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

18.Интерфейс JTAG и встроенная отладочная система

19.Модулятор выходов таймеров (OCM1C2)

20.Последовательный периферийный интерфейс - SPI

- Функционирование вывода SS 21.8-разр. таймер-счетчик 0 с функциями ШИМ и асинхронного тактирования



- Блок формирования выходного сигнала

- Временные диаграммы таймера-счетчика 0

- Описание регистров 8-разрядного таймера-счетчика 0

- Асинхронная работа таймера-счетчика 0

- Предделитель таймера-счетчика 0

22.УСАПП

- Генерация тактовых импульсов

- Форматы посылки

- Инициализация УСАПП

- Передача данных - Передатчик УСАПП

- Прием данных - Приемник УСАПП

- Асинхронный прием данных

- Многопроцессорный режим связи

- Описание регистров УСАПП

- Примеры установок скоростей связи

23.Двухпроводной последовательный интерфейс TWI

- Формат посылки и передаваемых данных

- Системы многомастерных шин, арбитраж и синхронизация

- Обзор модуля TWI

- Описание регистров TWI

- Рекомендации по использованию TWI

- Режимы передачи

24.Программирование памяти

- Параллельное программирование

- Последовательное программирование

- Программирование через интерфейс JTAG

25.Электрические характеристики

- Требования к характеристикам внешнего тактового сигнала

- Характеристики двухпроводного последовательного интерфейса

- Характеристики временной диаграммы SPI

- Предварительные данные по характеристикам АЦП

- Временная диаграмма внешней памяти данных

26.Типовые характеристики ATmega128: предварительные данные

- Типовые характеристики ATmega128: предварительные данные (продолжение)

- Типовые характеристики ATmega128: предварительные данные (продолжение)

27.Сводная таблица регистров

28.Набор инструкций

Отличительные особенности:

Высокопроизводительный, маломощный 8-разрядный AVR-микроконтроллер • Развитая RISC-архитектура • 133 мощных инструкций, большинство из которых выполняются за один машинный цикл 32 8-разр. регистров общего назначения + регистры управления встроенной периферией Полностью статическая работа Производительность до 16 млн .



операций в секунду при тактовой частоте 16 МГц Встроенное умножающее устройство выполняет умножение за 2 машинных цикла Энергонезависимая память программ и данных • Износостойкость 128-ми кбайт внутрисистемно перепрограммируемой флэш-памяти: 1000 циклов запись/стирание Опциональный загрузочный сектор с отдельной программируемой защитой Внутрисистемное программирование встроенной загрузочной программой Гарантированная двухоперационность: возможность чтения во время записи Износостойкость 4 кбайт ЭСППЗУ: 100000 циклов запись/стирание Встроенное статическое ОЗУ емкостью 4 кбайт Опциональная возможность адресации внешней памяти размером до 64 кбайт Программируемая защита кода программы Интерфейс SPI для внутрисистемного программирования Интерфейс JTAG (совместимость со стандартом IEEE 1149.1) • Граничное сканирование в соответствии со стандартом JTAG Обширная поддержка функций встроенной отладки Программирование флэш-памяти, ЭСППЗУ, бит конфигурации и защиты через интерфейс JTAG Отличительные особенности периферийных устройств • Два 8-разр. таймера-счетчика с раздельными предделителями и режимами сравнения Два расширенных 16-разр. таймера-счетчика с отдельными предделителями, режимами сравнения и режимами захвата Счетчик реального времени с отдельным генератором Два 8-разр. каналов ШИМ 6 каналов ШИМ с программируемым разрешением от 2 до 16 разрядов Модулятор выходов сравнения 8 мультиплексированных каналов 10-разрядного аналогово-цифрового преобразования 8 несимметричных каналов 7 дифференциальных каналов 2 дифференциальных канала с выборочным усилением из 1x, 10x и 200x Двухпроводной последовательный интерфейс, ориентированный не передачу данных в байтном формате Два канала программируемых последовательных УСАПП Последовательный интерфейс SPI с поддержкой режимов ведущий/подчиненный Программируемый сторожевой таймер со встроенным генератором Встроенный аналоговый компаратор Специальные возможности микроконтроллера • Сброс при подаче питания и программируемая схема сброса при снижении напряжения питания Встроенный калиброванный RC-генератор Внешние и внутренние источники прерываний Шесть режимов снижения энергопотребления: холостой ход (Idle), уменьшение шумов АЦП, экономичный (Power-save), выключение (Power-down), дежурный (Standby) и расширенный дежурный (Extended Standby) Программный выбор тактовой частоты Конфигурационный бит для перевода в режим совместимости с ATmega103 Общее выключение подтягивающих резисторов на всех линиях портов ввода-вывода Ввод-вывод и корпуса • 53 программируемые линии ввода-вывода 64-выв. корпус TQFP Рабочие напряжения • 2.7 - 5.5В для ATmega128L 4.5 - 5.5В для ATmega128 Градации по быстродействию • 0 - 8 МГц для ATmega128L 0 - 16 МГц для ATmega128 Рисунок 1 Расположение выводов у ATmega128 Краткий обзор ATmega128 маломощный 8-разр. КМОП микроконтроллер, основанный на расширенной AVR RISC-архитектуре. За счет выполнения большинства инструкций за один машинный цикл ATmega128 достигает производительности 1 млн. операций в секунду/МГц, что позволяет проектировщикам систем оптимизировать соотношение энергопотребления и быстродействия .





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

ATmega128 содержит следующие элементы: 128 кбайт внутрисистемно программируемой флэшпамяти с поддержкой чтения во время записи, 4 кбайт ЭСППЗУ, 4 кбайт статического ОЗУ, 53 линии универсального ввода-вывода, 32 универсальных рабочих регистра, счетчик реального времени (RTC), четыре гибких таймера-счетчика с режимами сравнения и ШИМ, 2 УСАПП, двухпроводной последовательный интерфейс ориентированный на передачу байт, 8-канальный 10-разр. АЦП с опциональным дифференциальным входом с программируемым коэффициентом усиления, программируемый сторожевой таймер с внутренним генератором, последовательный порт SPI, испытательный интерфейс JTAG совместимый со стандартом IEEE 1149.1, который также используется для доступа к встроенной системе отладке и для программирования, а также шесть программно выбираемых режимов уменьшения мощности. Режим холостого хода (Idle) останавливает ЦПУ, но при этом поддерживая работу статического ОЗУ, таймеров-счетчиков, SPI-порта и системы прерываний .

Режим выключения (Powerdown) позволяет сохранить содержимое регистров, при остановленном генераторе и выключении встроенных функций до следующего прерывания или аппаратного сброса. В экономичном режиме (Power-save) асинхронный таймер продолжает работу, позволяя пользователю сохранить функцию счета времени в то время, когда остальная часть контроллера находится в состоянии сна. Режим снижения шумов АЦП (ADC Noise Reduction) останавливает ЦПУ и все модули ввода-вывода, кроме асинхронного таймера и АЦП для минимизации импульсных шумов в процессе преобразования АЦП. В дежурном режиме (Standby) кварцевый/резонаторный генератор продолжают работу, а остальная часть микроконтроллера находится в режиме сна. Данный режим характеризуется малой потребляемой мощностью, но при этом позволяет достичь самого быстрого возврата в рабочий режим. В расширенном дежурном режиме (Extended Standby) основной генератор и асинхронный таймер продолжают работать .

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

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

чтение во время записи. За счет сочетания 8-разр. RISC ЦПУ с внутрисистемно самопрограммируемой флэш-памятью в одной микросхеме ATmega128 является мощным микроконтроллером, позволяющим достичь высокой степени гибкости и эффективной стоимости при проектировании большинства приложений встроенного управления .

ATmega128 поддерживается полным набором программных и аппаратных средств для проектирования, в т.ч.: Си-компиляторы, макроассемблеры, программные отладчики/симуляторы, внутрисистемные эмуляторы и оценочные наборы .

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

Некоторые позиции ввода-вывода добавлены в расширенное пространство ввода-вывода, начиная с адреса $60 до $F, (т.е. во внутреннем ОЗУ ATmega103). Доступ к данным местоположениям осуществляется только с помощью инструкций LD/LDS/LDD и ST/STS/STD, а не с помощью IN и OUT .

Перераспределение внутреннего пространства ОЗУ может стать проблемой для пользователей ATmega103. Кроме того, если в коде программы используются абсолютные адреса прерываний, то это также вызовет проблему, т.к. у ATmega128 увеличено число векторов прерываний. Для решения этих проблем может использоваться режим совместимости с ATmega103, для чего необходимо запрограммировать конфигурационный бит M103C. В данном режиме не доступны функции из расширенного пространства ввода-вывода, т.о. достигнуто расположение внутреннего ОЗУ как у ATmega103. Также удалены расширенные векторы прерываний .

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

Режим совместимости с ATmega103 Если запрограммировать конфигурационный бит M103C, то ATmega128 будет функционировать в режиме совместимости с ATmega103, настраивая ОЗУ, линии ввода-вывода и векторы прерываний как описано выше. Однако, некоторые новые функции ATmega128 в этом режиме станут недоступными.

Данные функции перечислены ниже:

Один УСАПП вместо двух, только асинхронный режим. Доступны только 8 младших разрядов в • регистре скорости связи .

Один 16-разр. таймер-счетчик с двумя регистрами сравнения вместо двух 16-разр. таймерсчетчиков с тремя регистрами сравнения .

Не поддерживается двухпроводной последовательный интерфейс .

• Порт C действует только на вывод .

• Порт G выполняет только альтернативные функции (не универсальный ввод-вывод) .

• Порт F действует только как цифровой ввод в дополнение к аналоговому вводу к АЦП .

• Не поддерживаются возможности автономного программирования из загрузочного сектора .

• Не возможно регулировать частоту внутреннего калиброванного RC-генератора .

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

Кроме того, для большей совместимости с ATmega103 выполнены другие незначительные изменения:

В регистре MCUCSR присутствуют только EXTRF и PORF .

• Временная последовательность не требуется для изменения периода переполнения сторожевого • таймера .

Запросы на внешние прерывания 3 - 0 генерируются только по уровню входного сигнала .

• УСАПП не имеет буфера FIFO, поэтому, переполнение при приеме данных происходит раньше .

• Неиспользуемые биты ввода-вывода у ATmega103 должны быть сброшены (запись 0) для гарантирования одинакового функционирования в составе ATmega128 .

Описание выводов VCC Напряжение питания цифровых элементов GND Общий Порт A Порт A 8-разр. порт двунаправленного ввода-вывода с внутренними подтягивающими к (PA7..PA0) плюсу резисторами (выбираются раздельно для каждого разряда). Выходные буферы порта A имеют симметричную выходную характеристику с одинаковыми втекающим и вытекающим токами. При вводе, линии порта А будут действовать как источник тока, если внешне действует низкий уровень и включены подтягивающие резисторы. Выводы порта A находятся в третьем (высокоимпедансном) состоянии при выполнении условия сброса, даже если синхронизация не запущена. Порт А также выполняет некоторые специальные функции ATmega128, описываемых далее .

Порт В Порт B 8-разр. порт двунаправленного ввода-вывода с внутренними подтягивающими к (PВ7..PВ0) плюсу резисторами (выбираются раздельно для каждого разряда). Выходные буферы порта В имеют симметричную выходную характеристику с одинаковыми втекающим и вытекающим токами. При вводе, линии по9рта B будут действовать как источник тока, если внешне действует низкий уровень и включены подтягивающие резисторы. Выводы порта B находятся в третьем (высокоимпедансном) состоянии при выполнении условия сброса, даже если синхронизация не запущена. Порт В также выполняет некоторые специальные функции ATmega128, описываемых далее .

Порт C Порт C 8-разр. порт двунаправленного ввода-вывода с внутренними подтягивающими к (PC7..PC0) плюсу резисторами (выбираются раздельно для каждого разряда). Выходные буферы порта C имеют симметричную выходную характеристику с одинаковыми втекающим и вытекающим токами. При вводе, линии порта C будут действовать как источник тока, если внешне действует низкий уровень и включены подтягивающие резисторы. Выводы порта C находятся в третьем (высокоимпедансном) состоянии при выполнении условия сброса, даже если синхронизация не запущена. Порт C также выполняет некоторые специальные функции ATmega128, описываемых далее. В режиме совместимости с ATmega103 порт C действует только на вывод, а при выполнении условия сброса линии порта C не переходят в третье состояние .

Порт D Порт D 8-разр. порт двунаправленного ввода-вывода с внутренними подтягивающими к (PD7..PD0) плюсу резисторами (выбираются раздельно для каждого разряда). Выходные буферы порта D имеют симметричную выходную характеристику с одинаковыми втекающим и вытекающим токами. При вводе, линии порта D будут действовать как источник тока, если внешне действует низкий уровень и включены подтягивающие резисторы. Выводы порта D находятся в третьем (высокоимпедансном) состоянии при выполнении условия сброса, даже если синхронизация не запущена. Порт D также выполняет некоторые специальные функции ATmega128, описываемых далее .

Порт E Порт E 8-разр. порт двунаправленного ввода-вывода с внутренними подтягивающими к (PE7..PE0) плюсу резисторами (выбираются раздельно для каждого разряда). Выходные буферы порта E имеют симметричную выходную характеристику с одинаковыми втекающим и вытекающим токами. При вводе, линии порта E будут действовать как источник тока, если внешне действует низкий уровень и включены подтягивающие резисторы. Выводы порта E находятся в третьем (высокоимпедансном) состоянии при выполнении условия сброса, даже если синхронизация не запущена. Порт E также выполняет некоторые специальные функции ATmega128, описываемых далее .

Порт F Порт F действует как аналоговый ввод аналогово-цифрового преобразователя. Порт F (PF7..PF0) также может использоваться как 8-разр. порт двунаправленного ввода-вывода, если АЦП не используется. К каждой линии порта может быть подключен встроенный подтягивающий к плюсу резистор (выбирается раздельно для каждого бита). Выходные буферы порта F имеют симметричную выходную характеристику с одинаковыми втекающим и вытекающим токами. При вводе, линии порта F будут действовать как источник тока, если внешне действует низкий уровень и включены подтягивающие резисторы. Выводы порта F находятся в третьем (высокоимпедансном) состоянии при выполнении условия сброса, даже если синхронизация не запущена. Если активизирован интерфейс JTAG, то подтягивающие резисторы на линиях PF7(TDI), PF5(TMS) и PF4(TCK) будут подключены, даже если выполняется Сброс .

Вывод TDO находится в третьем состоянии, если не введено состояние TAP, при котором сдвигаются выводимые данные .

Порт F также выполняет функции интерфейса JTAG .

В режиме совместимости с ATmega103 порт F действует только на ввод .

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

Порт G также выполняет некоторые специальные функции ATmega128 .

В режиме совместим9ости с ATmega103 данные выводы используются как стробирующие сигналы интерфейса внешней памяти, а также как вход генератора 32 кГц, а при действии сброса они асинхронно принимают следующие состояния: PG0 = 1, PG1 = 1 и PG2 = 0, даже если синхронизация не запущена. PG3 и PG4 выводы генератора .

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

Минимальная длительность внешнего импульса сброса приведена в таблице 19 .

Действие импульса меньшей продолжительности не гарантирует генерацию сброса .

XTAL1 вход инвертирующего усилителя генератора и вход внешней синхронизации .

XTAL2 выход инвертирующего усилителя генератора .

AVCC вход питания порта F и аналогово-цифрового преобразователя. Он должен быть внешне связан с VCC, даже если АЦП не используется. При использовании АЦП этот вывод связан с VCC через фильтр низких частот .

AREF вход подключения источника опорного напряжения АЦП .

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

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

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

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

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

6 регистров из 32 могут использоваться как три 16-разр. регистра косвенного адреса для эффективной адресации в пределах памяти данных. Один из этих указателей адреса может также использоваться как указатель адреса для доступа к таблице преобразования во флэш-памяти программ. Данные 16-разр .

регистры называются X-регистр, Y-регистр и Z-регистр и описываются далее в этом разделе .

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

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

Большинство инструкций представляют собой одно 16-разр. слово. Каждый адрес памяти программ содержит 16- или 32-разр. инструкцию. Флэш-память программ разделена на две секции: секция программы начальной загрузки и секция прикладной программы. Обе секции имеют раздельные биты защиты от записи и чтения/записи. Инструкция SPM (запись в секцию прикладной программы) должна использоваться только внутри секции программы начальной загрузки .

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

Указатель стека SP доступен на чтение и запись в пространстве ввода-вывода. Доступ к статическому ОЗУ данных может быть легко осуществлен через 5 различных режимов адресации архитектуры AVR .

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

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

Пространство памяти ввода-вывода содержит 64 адреса с непосредственной адресацией или может адресоваться как память данных, следующая за регистрами по адресам $20 - $5F. Кроме того, ATmega128 имеет пространство расширенного ввода-вывода по адресам $60 - $FF в статическом ОЗУ, для доступа к которому могут использоваться только процедуры ST/STS/STD и LD/LDS/LDD .



АЛУ арифметико-логическое устройство Высокопроизводительное АЛУ AVR-микроконтроллеров работает в непосредственной связи со всеми 32 универсальными рабочими регистрами. АЛУ позволяет выполнить за один машинный цикл операцию между двумя регистрами или между регистром и константой. Операции АЛУ могут быть классифицированы на три группы: арифметические, логические и битовые. Кроме того, архитектурой ATmega128 поддерживаются операции умножения со знаком и без знака и дробным форматом. См .

раздел "Набор инструкций" для подробного ознакомления .

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

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

Регистр статуса SREG AVR-микроконтроллера имеет следующую структуру:

Разряд 7 I: Общее разрешение прерываний Бит общего разрешения прерываний используется для активизации работы системы прерываний .

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

Разряд 6 T: Хранение копируемого бита Специальные битовые операции BLD (копирование из Т-бита) и BST (копирование в Т-бит) используют в качестве источника и получателя данных бит T. Любой бит из регистрового файла может быть скопирован в бит T инструкцией BST, а также содержимое бита Т может быть скопировано в любой бит регистрового файла с помощью инструкции BLD .

Разряд 5 H: Флаг половинного переноса Данный флаг устанавливается при выполнении некоторых арифметических инструкций и индицирует о возникновении половинного переноса. Как правило половинный перенос широко используется в двоичнодесятичной арифметике. Более подробная информация приведена в описании набора инструкций .

Разряд 4 S: бит знака, S = Искл. ИЛИ (N,?V) Бит S результат выполнения логической операции исключающего ИЛИ между флагом отрицательного результата N и флагом переполнения двоичного дополнения V. Более подробная информация приведена в описании набора инструкций .

Разряд 3 V: Флаг переполнения двоичного дополнения Флаг переполнения двоичного дополнения V поддерживает арифметику с двоичным дополнением. Более подробная информация приведена в описании набора инструкций .

Разряд 2 N: Флаг отрицательного результата Флаг отрицательного результата N индицирует, что результатом выполнения арифметической или логической операции является отрицательное значение. Более подробная информация приведена в описании набора инструкций .

Разряд 1 Z: Флаг нулевого результата Флаг нулевого результата Z индицирует, что результатом выполнения арифметической или логической операции является ноль. Более подробная информация приведена в описании набора инструкций .

Разряд 0 C: Флаг переноса Флаг переноса C индицирует о возникновении переноса в результате выполнения арифметической или логической операции. Более подробная информация приведена в описании набора инструкций .

Файл регистров общего назначения Файл регистров оптимизирован под расширенный набор инструкций AVR-микроконтроллеров.

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

Один 8-разр. операнд и один 8-разр. результат • Два 8-разр. операнда и один 8-разр. результат • Два 8-разр. операнда и один 16-разр. результат • Один 16-разр. операнд и один 16-разр. результат • Рисунок 4 показывает структуру 32 рабочих регистров общего назначения в ЦПУ .

Рисунок 4 Рабочие регистры общего назначения ЦПУ AVR Большинство инструкций работающих с файлом регистров имеют непосредственный доступ ко всем регистрам, чем достигается выполнение их за один машинный цикл .

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

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

Три регистра косвенной адресации X, Y и Z представлены на рисунке 5 .

Рисунок 5 - X, Y и Z-регистры В различных режимах адресации данные адресные регистры выполняют функции фиксированного смещения, автоматического инкрементирования и автоматического декрементирования (см. описание набора инструкций для более подробного изучения) .

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

Указатель стека указывает на область стека в статическом ОЗУ данных, где размещены стеки прерываний и подпрограммы. Данная область стека в статическом ОЗУ памяти данных должна быть определена программно до вызова любой процедуры или разрешения прерываний. Устанавливаемое значение указателя стека должно быть более $60. Указатель стека однократно декрементируется при помещении данных в стек инструкцией PUSH и дважды декрементируется при помещении в стек адреса возврата при вызове подпрограмм или прерываниях. Указатель стека однократно инкрементируется при извлечении данных из стека инструкцией POP и дважды инкрементируется при извлечении адреса возврата при выполнении инструкции выхода из подпрограммы RET или выхода из процедуры обработки прерываний RETI .

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

Регистр выбора Z-страницы ОЗУ RAMPZ Разряды 72 Зарезервированные разряды Данные зарезервированные разряды считываются как 0. При записи в данные разряды необходимо записывать нули для совместимости с последующими микроконтроллерами .

Разряд 1 RAMPZ0: Расширенный указатель страницы ОЗУ Регистр RAMPZ обычно используется для указания той страницы ОЗУ размером 64 кбайт, к которой выполняется доступ через Z-указатель. Т.к. ATmega128 не поддерживает память на статическом ОЗУ размером свыше 64 кбайт, то данный регистр используется только для выбора страницы памяти программ, доступ к которой осуществляется с помощью инструкций ELPM/SPM.

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

RAMPZ0 = 0: Инструкции ELPM/SPM осуществляют доступ к памяти программ в диапазоне адресов $0000 - $7FFF (младшие 64 кбайт) RAMPZ0 = 1: Инструкции ELPM/SPM выполняют доступ к памяти программ в диапазоне адресов $8000 - $FFFF (старшие 64 кбайт) Обратите внимание, что действие инструкции LPM не зависит от установки RAMPZ .

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

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

Рисунок 6 Параллельные выборки и исполнения инструкций Рисунок 7 иллюстрирует концепцию внутренней временной диаграммы для регистрового файла. За один такт синхронизации АЛУ выполняет действие над двухрегистровым операндом и возвращает результат обратно в регистр-получатель .

Рисунок 7 Однотактность работы АЛУ Сброс и обработка прерываний AVR-микроконтроллеры поддерживают несколько различных источников прерываний. Все прерывания, а также сброс имеют свой индивидуальный вектор в памяти программ. Для каждого прерывания имеется собственный бит разрешения. Кроме того, имеется возможность общего разрешения работы прерываний с помощью управления соответствующим битом в статусном регистре. В зависимости от значения программного счетчика прерывания могут быть автоматически отключены, если запрограммировать биты защиты загрузочного сектора BLB02 или BLB12. Данная функция улучшает защиту программы. См .

раздел Программирование памяти для уточнения деталей .

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

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

Сброс (RESET) имеет наивысший приоритет, за ним следует INT0 запрос на внешнее прерывание по входу INT0. Векторы прерывания могут быть перемещены в начало загрузочного сектора флэш-памяти установкой бита IVSEL в регистре управления микроконтроллером (MCUCR). См. раздел "Прерывания для более подробного ознакомления. Вектор сброса может быть также перемещен в начало загрузочного сектора флэш-памяти путем программирования конфигурационного бита BOOTRST (см .

Самопрограммирование из сектора начальной загрузки с поддержкой чтения во время записи) .

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

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

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

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

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

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

При выполнении инструкции CLI все прерывания запрещаются. Запрос на прерывание не будет отработан после выполнения инструкции CLI, даже если оно возникает одновременно с выполнением команды CLI. В следующем примере показано как избежать прерываний во время выполнения временной последовательности записи в ЭСППЗУ .

Пример кода на Ассемблере in r16, SREG ; Запомнили состояние регистра статуса SREG cli ; отключаем все прерывания во время отработки временной последовательности sbi EECR, EEMWE ; Разрешаем запись в ЭСППЗУ sbi EECR, EEWE out SREG, r16 ; Восстанавливаем значение SREG (бит I) Пример кода на Си char cSREG;

cSREG = SREG; /* Запоминаем значение SREG */ /* Отключение прерываний на время задания временной последовательности */ _CLI();

EECR |= (1EEMWE); /* Старт записи в ЭСППЗУ EEPROM */ EECR |= (1EEWE);

SREG = cSREG; /* Восстанавливаем значение SREG (бит I) */ Для разрешения прерываний используется инструкция SEI, а следующая за SEI инструкция будет выполнена перед отработкой любого отложенного прерывания, как показано в примере .

Пример кода на Ассемблере sei ; Общее разрешение прерываний sleep ; перевод в режим ожидания прерывания ; Прим.: Режим ожидания будет введен прежде чем запустится отработка отложенного прерывания Пример кода на Си _SEI(); /* Общее разрешение прерываний */ _SLEEP(); /* перевод в режим ожидания прерывания */ /* Прим.: Режим ожидания будет введен прежде чем запустится отработка отложенного прерывания */ Время реакции на прерывание Реакция на отработку запроса на прерывание длится минимум 4 машинных цикла. По истечении этого времени программа продолжает свое выполнение с вектора соответствующего прерывания. В течение 4 машинных циклов состояние программного счетчика помещается в стек. Как правило, по адресу вектора прерываний хранится команда перехода на процедуру обработку прерываний, а на данный переход затрачивается еще 3 машинных цикла. Если запрос на прерывание возникает в процессе исполнения инструкции, требующей более 1 машинного цикла на выполнение, то прерывание будет обработано только после выполнения этой инструкции. Если прерывание возникает во время нахождения микроконтроллера в режиме сна, то реакция на прерывание увеличится еще на 4 цикла. Данная задержка связана с временем старта из выбранного режима сна .

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

Память В данном разделе описываются различные виды памяти ATmega128. В соответствии с гарвардской архитектурой память AVR-микроконтроллера разделена на две области: память данных и память программ. Кроме того, ATmega128 содержит память на ЭСППЗУ для энергонезависимого хранения данных. Все три области памяти являются линейными и равномерными .

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

Флэш-память характеризуется износостойкостью не менее 10000 циклов запись/стирание. Программный счетчик РС у ATmega128 является 16-разр., поэтому, позволяет адресоваться к 64 кбайт памяти программ. Работа сектора программы начальной загрузки и связанных с ним бит защиты программы детально описана в разделе Самопрограммирование из сектора начальной загрузки с поддержкой чтения во время записи. В разделе Программирование памяти детально описывается параллельное программирование флэш-памяти и последовательное программирование через интерфейсы SPI, JTAG .

Таблицы констант могут располагаться в пределах всего пространства памяти программ (см. описание инструкции чтения из памяти программ LPM и расширенного чтения из памяти программ ELPM) .

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

Рисунок 8- Карта памяти программ Статическое ОЗУ памяти данных ATmega128 поддерживает две различные конфигурации статического ОЗУ памяти данных (см. табл. 1) .

Таблица 1 Конфигурации памяти Встроенное статическое ОЗУ Внешнее статическое ОЗУ памяти Конфигурация памяти данных данных Нормальный режим 4096 до 64 кбайт Режим совместимости с 4000 до 64 кбайт ATmega103 Рисунок 9 иллюстрирует организацию памяти на статическом ОЗУ у ATmega128 .

ATmega128 сложный микроконтроллер с большим числом периферийных устройств, которые управляются через 64 ячейки памяти, зарезервированных в кодах операций инструкций IN и OUT. Для расширенной области ввода-вывода в статическом ОЗУ по адресам $60 - $FF необходимо использовать только инструкции ST/STS/STD и LD/LDS/LDD. Область расширенного ввода-вывода не существует при переводе ATmega128 в режим совместимости с ATmega103 .

В нормальном режиме первые 4352 ячейки памяти данных относятся к файлу регистров, памяти вводавывода, расширенной памяти ввода-вывода и встроенному статическому ОЗУ данных. В первых 32 ячейках расположен файл регистров, следующие 64 ячейки занимает стандартная память ввода-вывода, а за ними следуют 160 ячеек расширенной памяти ввода-вывода. Замыкают внутреннюю память данных 4096 ячеек внутреннего статического ОЗУ данных .

В режиме совместимости с ATmega103 первые 4096 ячеек памяти данных относятся к файлу регистров, памяти ввода-вывода и внутреннему статическому ОЗУ данных. В первых 32 ячейках расположен файл регистров, затем в 64 ячейках расположена стандартная память ввода-вывода и следующие 4000 ячейки занимает внутреннее ОЗУ данных .

Совместно с ATmega128 по выбору может использоваться статическое ОЗУ. Это статическое ОЗУ будет занимать оставшуюся часть от адресного пространства размером 64 кбайт. Данная часть начинается с адреса следующего за внутренним статическим ОЗУ. Файл регистров, память ввода-вывода, память расширенного ввода-вывода и внутреннее статическое ОЗУ занимают младшие 4352 байта в нормальном режиме и младшие 4096 байта в режиме совместимости с ATmega103. (отсутствует память расширенного ввода-вывода). Таким образом, при использовании внешней памяти размером 64 кбайт (65536 байт) из них будет доступно 61184 байта в нормальном режиме и 61440 байта в режиме совместимости с ATmega103. См. раздел Интерфейс внешней памяти для детального изучения методов использования внешней памяти .

Доступ к внешнему статическому ОЗУ осуществляется автоматически с помощью тех же инструкций, что и для внутреннего ОЗУ, если указанное значение адреса находится за пределами внутренней памяти данных. При адресации внутренней памяти сигналы чтения и записи внешней памяти (выводы PG0 и PG1) неактивны в процессе всего цикла доступа. Работа внешнего статического ОЗУ разрешается путем установки бита SRE в регистре MCUCR .

Доступ к внешнему статическому ОЗУ требует еще одного машинного цикла на байт по сравнению с доступом к внутреннему статическому ОЗУ .

Это означает, что на выполнение команд LD, ST, LDS, STS, LDD, STD, PUSH и POP потребуется один дополнительный цикл. Если стек будет размещен во внешнем статическом ОЗУ, то, соответственно, вызов и возврат из подпрограмм и процедур обработки прерываний будет длиться на три машинных цикла дольше за счет помещения в стек и извлечения из стека двухбайтного счетчика программы и не использования во время доступа к внешней памяти преимущества конвейерного доступа к внутренней памяти. Если интерфейс внешнего статического ОЗУ используется с состояниями ожидания (со сниженным быстродействием), то однобайтный внешний доступ потребует 2, 3 или 4 дополнительных машинных цикла для 1, 2 и 3 состояний ожиданий, соответственно. Таким образом, вызов и возврат из прерываний и подпрограмм потребует еще 5, 7 и 9 машинных циклов (в отличие от значений приведенных в описании набора инструкций) для 1, 2 и 3 состояний ожидания, соответственно .

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

Прямая адресация позволяет адресоваться ко всей памяти данных .

Косвенная адресация со смещением позволяет адресовать 63 ячейки, начиная с адреса указанного в регистрах Y или Z .

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

32 рабочих регистров общего назначения, 64 регистра ввода-вывода и 4096 байт внутреннего статического ОЗУ данных в ATmega128 доступны с помощью всех этих режимов адресации. Файл регистров описывается в разделе Файл регистров общего назначения .

Рисунок 9 Карта памяти данных Временная диаграмма доступа к памяти В данном разделе описывается общая концепция доступа к внутренней памяти .

Доступ к внутреннему статическому ОЗУ выполняется за два машинных цикла в соответствии с рисунком 10 .

Рисунок 10 Временная диаграмма доступа к встроенному статическому ОЗУ данных Память данных на ЭСППЗУ ATmega128 содержит 4 кбайт памяти данных на ЭСППЗУ. Она организована как отдельная область памяти данных, в которой один байт может быть записан и считан. ЭСППЗУ характеризуется износостойкостью 100000 циклов чтения/записи .

В разделе Программирование памяти содержится детальное описание программирование ЭСППЗУ через интерфейсы SPI, JTAG или параллельное программирование .

Чтение и запись ЭСППЗУ Доступ к ЭСППЗУ осуществляется через специальные регистры, расположенные в пространстве вводавывода .

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

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

Когда происходит считывание ЭСППЗУ ЦПУ задерживается на 4 машинных цикла до выполнения следующей инструкции. Во время записи в ЭСППЗУ ЦПУ задерживается на два машинных цикла до выполнения следующей инструкции .

Адресные регистры ЭСППЗУ EEARH и EEARL Разряды 15..12 Резерв Данные зарезервированные разряды считываются как 0. При записи в данных разрядах необходимо указывать нули для совместимости с новыми версиями микроконтроллеров .

Разряды 11..0 EEAR11..0: Адрес ячейки ЭСППЗУ Регистры адреса ЭСППЗУ EEARH и EEARL определяют адрес ячейки ЭСППЗУ в 4 кбайтном пространстве. Байтные ячейки ЭСППЗУ адресуются линейно в диапазоне адресов 04096. Начальное значение EEAR неопределенное. Необходимое значение адреса должно быть записано до начала доступа к ЭСППЗУ .

Регистр данных ЭСППЗУ EEDR Разряды 70 EEDR7.0: Данные ЭСППЗУ Для выполнения записи в ЭСППЗУ в регистр EEDR необходимо указать записываемые данные, которые будут записаны по адресу, указанному в регистре EEAR. После выполнения чтения из ЭСППЗУ в регистре EEDR содержатся считанные данные из ячейки по адресу указанному в EEAR .

Регистр управления ЭСППЗУ EECR Разряды 74 Резерв Данные разряды у ATmega128 зарезервированы и считываются как 0 .

Разряд 3 EERIE: Разрешение прерывания по готовности ЭСППЗУ Запись в EERIE 1 разрешает прерывание по готовности ЭСППЗУ, если кроме того установлен бит I в регистре SREG. Запись в EERIE нуля отключает это прерывание. Прерывание по готовности ЭСППЗУ генерируется, если бит EEWE сброшен .

Разряд 2 EEMWE: Главное разрешение записи в ЭСППЗУ Бит EEMWE разрешает установку бита EEWE, инициирующего запись в ЭСППЗУ. Данные будут записаны в ЭСППЗУ по указанному адресу, если в EEMWE записать 1, а затем в течение 4 машинных циклов записать 1 в EEWE. Если EEMWE=0, то запись в EEWE лог. 1 не вызовет никаких действий .

После программной установки бита EEMWE он автоматически сбрасывается аппаратно по истечении четырех машинных циклов .

Разряд 1 EEWE: Разрешение записи в ЭСППЗУ Сигнал разрешения записи EEWE является стробирующим сигналом записи для ЭСППЗУ. Для записи в ЭСППЗУ после корректной установки адреса и данных необходимо установить бит EEWE. Перед установкой бита EEWE должен быть установлен бит EEWE, иначе запись в ЭСППЗУ не произойдет.

При выполнении операции записи в ЭСППЗУ необходимо руководствоваться следующей последовательностью (порядок шагов 3 и 4 не важен):

1. Ожидание пока EEWE станет равным нулю .

2. Ожидание равенства нулю бита SPMEN в регистре SPMCSR .

3. Запись нового адреса ЭСППЗУ в EEAR (опционально) .

4. Запись новых данных в регистр EEDR для записи в ЭСППЗУ (опционально) .

5. Запись лог. 1 в EEMWE, когда в EEWE регистра EECR записан ноль .

6. Запись лог. 1 в EEWE в течение четырех машинных циклов после установки EEMWE .

ЭСППЗУ нельзя программировать во время записи флэш-памяти из ЦПУ. С учетом этого, перед началом новой записи в ЭСППЗУ необходимо проверить завершение программирования флэш-памяти. Шаг 2 необходимо выполнять, если в приложении используется программирование из загрузочного сектора .

Если программирование флэш-памяти под управлением ЦПУ не предусмотрено, то шаг 2 может быть исключен. См. Самопрограммирование из сектора начальной загрузки с поддержкой чтения во время записи для детального изучения программирования из загрузочного сектора .

Предостережения: Прерывание между шагами 5 и 6 может нарушить цикл записи из-за превышения установленного предела времени на выполнение этих шагов. Если процедура обработки прерывания, осуществляющая доступ к ЭСППЗУ, прерывается другим доступом к ЭСППЗУ, то EEAR или EEDR будут изменены, вызывая сбой прерванного цикла доступа. Во избежание этих проблем рекомендуется сбрасывать флаг общего разрешения прерываний при выполнении последних четырех шагов .

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

Разряд 0 EERE: Разрешение чтения из ЭСППЗУ Сигнал разрешения чтения из ЭСППЗУ EERE является стробом чтения ЭСППЗУ. После записи корректного адреса в регистр адреса EEAR бит EERE должен быть установлен к лог.1 для запуска механизма чтения ЭСППЗУ. Чтение из ЭСППЗУ выполняется одновременно с инструкцией, поэтому, запрашиваемые данные готовы для считывания сразу по ее завершении. После чтения из ЭСППЗУ ЦПУ задерживается на четыре машинных цикла, а только затем выполняет следующую инструкцию .

Пользователь должен опросить флаг EEWE до начала операции чтения. Если осуществляется операция записи, то невозможно не только считать ЭСППЗУ, но и изменить регистр адреса EEAR. Во время доступа к ЭСППЗУ используется калиброванный генератор. В таблице 2 приведено типичное время программирования ЭСППЗУ через ЦПУ .

Таблица 2 Время программирования ЭСППЗУ Количество периодов Операция Типичное время программирования калиброванного RC-генератора (1) .

Запись ЭСППЗУ (через 8448 8.5 мс ЦПУ) Прим 1. Используется частота 1 МГц независимо от установки конфигурационного бита CKSEL Далее представлены примеры кодов функций записи в ЭСППЗУ на языках Ассемблер и Си. В данных примерах предполагается, что прерывания работают таким образом, что ни одно не возникает в процессе выполнения данных функций (например, путем общего отключения прерываний). Кроме того, считается, что из загрузочного сектора не выполняется программирование флэш-памяти. В противном случае функция записи в ЭСППЗУ должна ожидать окончания действия инструкции SPM .

Пример кода на Ассемблере

EEPROM_write:

; Ожидаем окончание предыдущей записи sbic EECR,EEWE rjmp EEPROM_write ; Записываем адрес (r18:r17) в адресный регистр ЭСППЗУ out EEARH, r18 out EEARL, r17 ; Записываем данные (r16) в регистр данных ЭСППЗУ out EEDR,r16 ; Записывает лог. 1 в EEMWE sbi EECR,EEMWE ; Запуск записи в ЭСППУ установкой EEWE sbi EECR,EEWE ret Пример кода на Си void EEPROM_write(unsigned int uiAddress, unsigned char ucData) { /* Ожидаем окончание предыдущей записи */ while(EECR & (1EEWE)) ;

/* Указание адреса и данных */ EEAR = uiAddress;

EEDR = ucData;

/* Запись лог. 1 в EEMWE */ EECR |= (1EEMWE);

/* Запуск записи в ЭСППЗУ путем установки EEWE */ EECR |= (1EEWE);

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

Пример кода на Ассемблере

EEPROM_read:

; Ожидание завершения предыдущей записи sbic EECR,EEWE rjmp EEPROM_read ; Установка адреса (r18:r17) в адресном регистре out EEARH, r18 out EEARL, r17 ; Запуск чтения ЭСППЗУ путем установки EERE sbi EECR,EERE ; Считывание данных из регистра данных ЭСППЗУ in r16,EEDR ret Пример кода на Си unsigned char EEPROM_read(unsigned int uiAddress) { /* Ожидание завершения предыдущей записи*/ while(EECR & (1EEWE)) ;

/* Установка адресного регистра */ EEAR = uiAddress;

/* Разрешение чтения из ЭППЗУ путем установки EERE */ EECR |= (1EERE);

/* Возврат данных из регистра данных ЭСППЗУ*/ return EEDR;

} Запись в ЭСППЗУ в режиме выключения (Power Down) Если микроконтроллер переводится в режим выключения (Power Down) командой sleep в процессе выполнения операции записи в ЭСППЗУ, то операция записи будет продолжена и завершится по истечении требуемого времени доступа для записи. Однако, по завершении операции записи кварцевый генератор будет продолжать работу, и как следствие, микроконтроллер будет переведен в режим снижения мощности не полностью. С учетом этого, рекомендуется проверять окончание операции записи в ЭСППЗУ перед переводом в режим выключения (Power-down) .

Меры предотвращения повреждения данных в ЭСППЗУ В те моменты, когда напряжение VCC находится на уровне недостаточном для корректной работы ЦПУ и ЭСППЗУ, содержимое ЭСППЗУ может быть нарушено. Данные проблемы аналогичны устройствам, использующих отдельное ЭСППЗУ, поэтому, в данном случае необходимо применить те же меры .

При сниженном напряжении питания может быть две причины нарушения содержимого ЭСППЗУ. Первая причина состоит в возможности корректной регулярной записи в ЭСППЗУ только при определенном напряжении питания. Вторая состоит в возможности некорректного выполнения программы микроконтроллером при чрезмерном низком уровне питания .

Повреждение данных в ЭСППЗУ может быть легко предотвращено, если придерживаться следующих рекомендаций:

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

Память ввода-вывода Существующее пространство ввода-вывода для ATmega128 показано в разделе Сводная таблица регистров .

Все порты ввода-вывода и периферийные устройства в ATmega128 размещены в пространстве вводавывода. Доступ ко всем ячейкам ввода-вывода может быть осуществлен с помощью инструкций LD/LDS/ LDD и ST/STS/STD путем передачи данных между одним из 32-х универсальным рабочим регистром и памятью ввода-вывода. Регистры ввода-вывода с адресами $00 - $1F могут побитно адресоваться с помощью инструкций SBI и CBI. Состояние одного из разрядов в этих регистрах может тестироваться с помощью инструкций SBIS и SBIC. При использовании специфических команд ввода-вывода IN и OUT необходимо использовать адреса $00 - $3F. Если адресоваться к регистрам ввода-вывода как к памяти данных с помощью инструкций LD и ST, то к указанным выше адресам необходимо прибавить $20 .

ATmega128 является сложным микроконтроллером, для которого 64 адреса, зарезервированных в кодах операций IN и OUT, не достаточно для поддержки всех имеющихся периферийных устройств. Для расширенной области ввода-вывода, которая находится по адресам $60 - $FF в статическом ОЗУ необходимо использовать только инструкции ST/STS/STD и LD/LDS/LDD. Пространство расширенного ввода-вывода заменяется ячейками статического ОЗУ в режиме совместимости с ATmega103 .

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

Не должна производиться запись в ячейки по зарезервированным адресам в пространстве вводавывода .

Некоторые флаги статуса сбрасываются путем записи в них лог. 1. Инструкции CBI и SBI работают только с регистрами по адресам $00$1F .

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

Интерфейс внешней памяти Характеристики интерфейса внешней памяти позволяет его использовать не только для подключения к внешнему статическому ОЗУ или флэш-памяти, но и в качестве интерфейса с внешними периферийными устройствами, например, ЖК-дисплеи, АЦП и ЦАП.

Его основными отличительными особенностями являются:

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

Возможность установки различных состояний ожидания для разных секторов внешней памяти • (размер сектора конфигурируется) .

Возможность выбора количества задействованных разрядов в старшем адресном байте .

• Устройство запоминания состояния шины для минимизации потребления тока (опционально) .

• Краткий обзор После разрешения внешней памяти (XMEM) становится доступным адресное пространство за пределами внутреннего статического ОЗУ через предопределенные для этой функции выводы (см. рис .

1, табл. 27, табл. 33 и табл. 45). Конфигурация памяти показана на рис. 11 .

Рисунок 11 Внешняя память с выбором сектора Прим. : Когда ATmega128 находится не в режиме совместимости с ATmega103, то доступна конфигурация памяти А ( конфигурация B не доступна), а когда ATmega128 в режиме совместимости с ATmega103, то доступна только конфигурация В .

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

Ограничения на режим совместимости с ATmega103 следующие:

Доступны только две установки состояний ожидания (SRW1n = 0b00 и SRW1n = 0b01) .

• Количество используемых разрядов в старшем адресном байте является фиксированным .

• Внешняя память не может быть поделена на сектора с различными состояниями ожидания .

• Устройство запоминания состояния шины не доступно .

• Выводы RD, WR и ALE могут использоваться только для вывода (Порт G у ATmega128) .

• Использование интерфейса внешней памяти

Интерфейс состоит из:

AD7:0: Мультиплексированная младшая шина адреса/шина данных .

• A15:8: Старшая шина адреса (с конфигурируемым числом разрядов) .

• ALE: Строб адреса внешней памяти .

• RD: Строб чтения из внешней памяти .

• WR: Строб записи во внешнюю память .

• Биты управления интерфейсом внешней памяти расположены в трех регистрах: регистр управления микроконтроллером MCUCR, регистр А управления внешней памятью XMCRA и регистр В управления внешней памятью XMCRB .

После разрешения работы интерфейс XMEM изменит настройки регистров направления данных портов, линии которых предопределены для выполнения функций интерфейса XMEM. Более подробная информация об изменении настроек порта приведена в разделе "Порты ввода-вывода" при рассмотрении альтернативных функций. Интерфейс XMEM автоматически определяет к какой памяти внешней или внутренней осуществляется доступ. Во время доступа к внешней памяти интерфейс XMEM будет формировать сигналы шин адреса, данных и управления на линиях порта в соответствии с рисунком 13 (на рисунке представлены формы сигналов без состояний ожидания). При переходе ALE из 1 в 0 на линиях AD7:0 будут присутствовать действительные адресные сигналы. ALE находится на низком уровне во время передачи данных. После разрешения работы интерфейса XMEM доступ к внутренней памяти будет вызывать изменения на шинах данных и адреса, а также строба ALE, при этом, стробы RD и WR останутся неизменными. После запрета работы интерфейса внешней памяти используются обычные установки выводов и направления данных. Обратите внимание, что после отключения интерфейса XMEM адресное пространство свыше внутреннего ОЗУ не связано с последним .

Рисунок 12 иллюстрирует как подключить внешнее статическое ОЗУ к AVR-микроконтроллеру с помощью 8-разр. регистра (например, 74x573 или аналогичный), который передает данные напрямую при высоком уровне на входе G .

Требования по фиксации адреса Интерфейс XRAM характеризуется высоким быстродействием из-за чего фиксация адреса должна выполняться с осторожностью при частотах свыше 8МГц при 4В и 4МГц при 2.7В .

При использовании более высоких частот применение регистров устаревшей серии 74HC будет неадекватным. Интерфейс внешней памяти разработан для совместимости с регистрами серии 74AHC .

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

К основным параметрам, характеризующих фиксацию адреса, относятся:

Длительность задержки на распространение сигнала с входа D на выход Q (tPD) .

• Время установки данных перед тем как G станет равным 0 (tSU) .

• Время удержания данных (адреса) после установки низкого уровня на входе G (tH) .

• Интерфейс внешней памяти разработан с учетом того, что после приложения низкого уровня на вход регистра G время удержания адреса tH составит до 5 нс. См. временные характеристики tLAXX_LD/tLLAXX_ST в таблицах 137144. Задержка распространения с входа D на выход Q (tPD) должна быть учтена при вычислении требования по времени доступа к внешней памяти. Время установки данных перед тем как G станет равным 0 (tSU) должно не превышать разности времен действительного адреса до низкого уровня ALE (tAVLLC) и задержек в печатных проводниках (определяют емкостную нагрузку) .

Рисунок 12 Подключение внешнего статического ОЗУ к AVR-микроконтроллеру Подтягивающие резисторы и устройство запоминания состояния шины Подтягивающие к плюсу резисторы на линиях AD7:0 могут быть активизированы, если записать единицы в регистр соответствующего порта. Для снижения потребляемой мощности в режиме сна рекомендуется отключать подтягивающие резисторы путем записи нуля в регистр порта непосредственно перед переводом в режим сна .

Интерфейс XMEM также содержит устройство запоминания состояния шины на линиях AD7:0 Устройство запоминания состояния шины может быть программно подключено и отключено как описано в подразделе Управляющий регистр В внешней памяти XMCRB. После активизации устройство запоминания состояния шины будет сохранять предыдущее состояние шины AD7:0 при переводе этих линий интерфейсом XMEM в третье состояние .

Временная диаграмма Микросхемы внешней памяти характеризуются различными параметрами временных диаграмм. Для удовлетворения этих требований интерфейс XMEM у ATmega128 обеспечивает различные состояния ожидания (см. табл. 4). Перед выбором состояний ожидания очень важно уточнить требования к временной диаграмме микросхемы внешней памяти. Самыми главными параметрами являются время доступа к внешней памяти по сравнению с требованием по установке у ATmega128. Время доступа к внешней памяти определяется как промежуток времени с момента выбора микросхемы памяти и установки адреса до появления действительных данных соответствующих указанному адресу на шине .

Время доступа не может превышать времени с момента установки импульса ALE к низкому уровню до стабильного установления данных во время чтении (см. tLLRL+ tRLRH - tDVRH в таблицах 137144) .

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

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

Рисунок 13 Временная диаграмма доступа к внешней памяти без состояний ожидания (SRWn1=0 и SRWn0=0) .

Прим: 1. SRWn1 = SRW11 (верхний сектор) или SRW01 (нижний сектор), SRWn0 = SRW10 (верхний сектор) или SRW00 (нижний сектор). Импульс ALE присутствует на такте T5, только если следующая инструкция осуществляет доступ к ОЗУ (внутреннему или внешнему) .

Рисунок 14 Временная диаграмма доступа к внешней памяти с SRWn1=0 и SRWn0=1 (1) .

Прим: 1. SRWn1 = SRW11 (верхний сектор) или SRW01 (нижний сектор), SRWn0 = SRW10 (верхний сектор) или SRW00 (нижний сектор). Импульс ALE присутствует на такте T5 только если следующая инструкция осуществляет доступ к ОЗУ (внутреннему или внешнему) .

Рисунок 15 Временная диаграмма доступа к внешней памяти с SRWn1=1 и SRWn0=0 (1) .

Прим.: 1. SRWn1 = SRW11 (верхний сектор) или SRW01 (нижний сектор), SRWn0 = SRW10 (верхний сектор) или SRW00 (нижний сектор). Импульс ALE на такте T6 присутствует только если следующая инструкция осуществляет доступ к ОЗУ (внутреннему или внешнему) .

Рисунок 16 Временная диаграмма доступа к внешней памяти с SRWn1=1 и SRWn0=1 (1) .

Прим: 1. SRWn1 = SRW11 (верхний сектор) или SRW01 (нижний сектор), SRWn0 = SRW10 (верхний сектор) или SRW00 (нижний сектор). Импульс ALE на такте T7 присутствует только, если следующая инструкция осуществляет доступ к ОЗУ (внешнему или внутреннему) .

Описание регистра XMEM Регистр управления микроконтроллером MCUCR Разряд 7 SRE: Разрешение внешнего статического ОЗУ/XMEM Запись в SRE лог. 1 разрешает работу интерфейса внешней памяти, после чего выводы AD7:0, A15:8, ALE, WR и RD выполняют свои альтернативные функции. После установки бита SRE игнорируются любые установки в соответствующих регистрах направления данных. Запись в SRE нуля отключает интерфейс внешней памяти, после чего вступают в силу обычные функции выводов и установки направления .

Разряд 6 SRW10: Бит выбора состояния ожидания При работе микроконтроллера не в режиме совместимости с ATmega103 описание действия данного бита подробно описывается ниже при рассмотрении бит SRWn регистра XMCRA. В режиме совместимости с ATmega103 запись в SRW10 лог. 1 разрешает состояние ожидание и один дополнительный период добавляется к стробу чтения/записи как показано на рис. 14 .

Регистр А управления внешней памятью XMCRA Разряд 7 Зарезервированный бит Данный разряд является зарезервированным и всегда читается как 0. Во время записи в данной позиции необходимо указывать 0 для совместимости с последующими микроконтроллерами .

Разряд 6. .

4 SRL2, SRL1, SRL0: Задание границ секторов с состоянием ожидания Имеется возможность установить различные состояния ожидания для различных адресов внешней памяти. Адресное пространство внешней памяти может быть разделено на два сектора, каждый их которых имеет собственные биты выбора состояний ожидания. Биты SRL2, SRL1 и SRL0 определяют разбиение секторов (см. табл. 3 и рис. 11). По умолчанию значение бит SRL2, SRL1 и SRL0 равно нулю и все адресное пространство внешней памяти обслуживается как один сектор. Если все адресное пространство статического ОЗУ конфигурируется как один сектор, то состояния ожидания определяются битами SRW11 и SRW10 .

Таблица 3 Границы секторов памяти при различных настройках SRL2..0

–  –  –

Разряд 7 XMBK: Разрешение работы устройства запоминания состояния шины внешней памяти Запись в XMBK лог. 1 разрешает работу устройства запоминания состояния шины на линиях AD7:0 .

После его активизации AD7:0 будут запоминать последнее установленное состояние, даже если интерфейс XMEM перевел линии в третье состояние. Запись в XMBK лог. 0 означает запрет работы устройства запоминания состояния шины. XMBK не подчинен SRE, так что даже если интерфейс XMEM отключен, то устройство запоминания состояния шины будет активным до тех пор пока XMBK=1 .

Разряды 6. .

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

Разряды 2. .

0 XMM2, XMM1, XMM0: Маска старших адресных разрядов внешней памяти После разрешения внешней памяти все выводы порта С по умолчанию используются в качестве старшего адресного байта. Если нет необходимости адресоваться ко всему 60 кбайтному пространству внешней памяти, то свободные адресные линии возможно использовать в качестве универсального ввода-вывода (см. табл. 5). Использование бит XMMn позволяет адресоваться ко всем 64 кбайт ячейкам внешней памяти (см. Использование всех 64 кбайт ячеек внешней памяти" .

Таблица 5 Использование старших адресных сигналов в качестве линий универсального ввода-вывода после разрешения внешней памяти Число разрядов адреса внешней Освобождаемые адресные XMM2 XMM1 XMM0 памяти линии порта С 0 0 0 8 (Все пространство 60 кбайт) Нет 0 0 1 7 PC7 0 1 0 6 PC7 - PC6 0 1 1 5 PC7 - PC5 1 0 0 4 PC7 - PC4 1 0 1 3 PC7 - PC3 1 1 0 2 PC7 - PC2 Старший байт адреса не 1 1 1 Полностью порт С используется Использование всех ячеек внешней памяти размером менее 64 кбайт Поскольку в соответствии с рисунком 11 адресное пространство внешней памяти следует за адресным пространством внутренней, то к младшим 4352 ячейкам внешней памяти не возможно адресоваться (адреса 0x00000x10FF). Однако, при подключении внешней памяти размером менее 64 кбайт, например, 32 кбайт к этим ячейкам можно легко адресоваться по адресам 0x80000x90FF. Поскольку адресный бит внешней памяти А15 не подключен к внешней памяти, то адреса 0x80000x90FF будут выступать в качестве адресов 0x00000x10FF для внешней памяти. Адресация по адресам свыше 0x90FF не рекомендуется, т.к. может затронуть ячейку внешней памяти, доступ к которой уже осуществлялся по другому (меньшему) адресу. Для прикладной программы 32 кбайта внешней памяти будут представлять линейное адресное пространство с адресами 0x11000x90FF (см. рис. 17) .

Конфигурация памяти В относится к режиму совместимости с ATmega103, а конфигурация памяти А к нормальному режиму работы .

Когда микроконтроллер находится в режиме совместимости с ATmega103 внутренняя память занимает 4096 байт. Это означает, что 4096 байт внешней памяти могут быть доступны по адресам 0x80000x8FFF. Для прикладной программы внешняя память размером 32 кбайт в этом случае будет линейным адресным пространством в диапазоне адресов 0x10000x8FFF .

Рисунок 17 Подключение 32 кбайт внешней памяти Использование всех 64 кбайт ячеек внешней памяти Поскольку, внешняя память располагается после внутренней памяти, как показано на рис. 11, то только 60 кбайт внешней памяти доступно по умолчанию (адресное пространство от 0x0000 до 0x10FF зарезервировано для внутренней памяти). Однако, имеется возможность использовать весь объем внешней памяти путем маскирования старших адресных разрядов к нулю. Это может быть выполнено с помощью бит XMMn и программного управления старшими адресными разрядами. Интерфейс памяти будет иметь диапазон адресов 0x0000 - 0x1FFF, если установить на выходе порта С значение 0x00 и выбрать работу старших адресных разрядов как обычных линий ввода-вывода. См. нижеприведенные примеры .

Пример кода на Ассемблере (1) ; Определено СМЕЩЕНИЕ OFFSET=0x2000 для гарантирования доступа к внешней памяти ; Конфигурируем порт С (старший байт адреса ) на вывод 0x00, после чего настраиваем выводы ; на выполнение функций обычного порта ldi r16, 0xFF out DDRC, r16 ldi r16, 0x00 out PORTC, r16 ; освобождаем PC7:5 от адресных функций ldi r16, (1XMM1)|(1XMM0) sts XMCRB, r16 ; запись 0xAA по адресу 0x0001 внешней памяти ldi r16, 0xaa sts 0x0001+OFFSET, r16 ; Разрешаем снова работу PC7:5 как адресных линий ldi r16, (0XMM1)|(0XMM0) sts XMCRB, r16 ; Запись 0x55 по адресу (OFFSET + 1) внешней памяти ldi r16, 0x55 sts 0x0001+OFFSET, r16 Пример кода на Си (1) #define OFFSET 0x2000 void XRAM_example(void) { unsigned char *p = (unsigned char *) (OFFSET + 1);

DDRC = 0xFF;

PORTC = 0x00;

XMCRB = (1XMM1) | (1XMM0);

*p = 0xaa;

XMCRB = 0x00;

*p = 0x55;

} Прим.: 1. В примере предполагается, что включена часть специфического файла заголовка .

Системная синхронизация и тактовые источники Источники синхронизации и их распределение На рисунке 18 представлены источники синхронизации и распределение синхроимпульсов к встроенным блокам ATmega128. Не обязательно вся синхронизация должна работать в одно и тоже время. В целях снижения энергопотребления тактирование неиспользуемых модулей может быть прекращено путем перевода в различные режимы сна командой sleep (см. Управление энергопотреблением и режимы сна) .

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

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

Синхронизация ввода-вывода clkI/O Синхронизация ввода-вывода используется основными модулями ввода-вывода, в т.ч. таймеры-счетчики, SPI и УСАПП. Она также используется модулем внешних прерываний, но в некоторых случаях внешние прерывания детектируются в асинхронном режиме для поддержки работоспособности внешних прерываний даже при отключенной синхронизации. Также обратите внимание, что после отключения данной синхронизации (во всех режимах сна) двухпроводной интерфейс TWI продолжает наблюдать за передаваемым по шине адресом асинхронно .

Синхронизация флэш-памяти clkFLASH Синхронизация флэш-памяти тактирует работу интерфейса флэш-памяти. Обычно эта синхронизация работает одновременно с синхронизацией ЦПУ .

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

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

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

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

Таблица 6 Выбор опций синхронизации микроконтроллера

–  –  –

Разряды 7. .

0 CAL7..0: Калибровочное значение для генератора Запись значения калибровочного байта в данный регистр приведет к подстройке генератора на номинальную частоту. В процессе сброса калибровочное значение для частоты 1МГц (расположен в старшем байте строки сигнатуры) автоматически записывается в регистр OSCCAL. Если встроенный RCгенератор используется на других частотах, то калибровочный байт необходимо записывать программно .

Для этого необходимо с помощью программатора считать значение калибровочного байта, затем сохранить его значение во флэш-память или ЭСППЗУ. После этого, калибровочное значение может быть считано программно, а затем записано в регистр OSCCAL. Если в регистр OSCCAL записать ноль, то выбирается минимальная частота. Запись ненулевого значения приводит к повышению частоты генератора. Запись $FF к выбору максимальной частоты. Калиброванный генератор используется для синхронизации доступа к ЭСППЗУ и флэш-памяти. Во время выполнения записи в ЭССПЗУ или во флэш-память не следует выполнять калибровку на частоту выше на 10% от номинальной. В противном случае, запись в ЭССПЗУ или во флэш-память может быть некорректной. Обратите внимание, что генератор откалиброван отдельно на частоты 1.0, 2.0, 4.0 или 8.0 МГц. Результат подстройки при записи различных значений приведен в таблице 15 .

Таблица 15 Диапазон частот встроенного RC-генератора Минимальная частота в Максимальная частота в Значение OSCCAL процентах от номинальной, % процентах от номинальной, % $00 50 100 $7F 75 150 $FF 100 200 Внешняя синхронизация Если необходимо тактировать микроконтроллер от внешнего источника, то его необходимо подключить к выводу XTAL1 (см. рисунок 21). В этом случае внешняя синхронизация должна быть разрешена записью в конфигурационные биты CKSEL значения 0000. Если запрограммировать конфигурационный бит CKOPT, то между XTAL1 и GND будет подключен внутренний конденсатор номиналом 36 пФ .

–  –  –

Изменять значение данных разрядов допускается, только если XDIVEN=0. Когда в XDIVEN записывается лог.1, то записываемые одновременно с ней значения XDIV6..XDIV0 будут использоваться как коэффициент деления. Во время записи в XDIVEN лог. 0 одновременно записываемые значения в разряды XDIV6..XDIV0 отклоняются. Поскольку, делитель выполняет снижение входной тактовой частоты микроконтроллера, то после разрешения деления также снижается быстродействие всех периферийных модулей .

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

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

Для перевода микроконтроллера в один из шести режимов сна необходимо предварительно установить бит SE в регистре MCUCR, а затем выполнить инструкцию SLEEP. Биты SM2, SM1 и SM0 регистра MCUCR задают в какой именно режим будет переведен микроконтроллер (холостой ход "Idle", уменьшение шумов АЦП "ADC Noise Reduction", выключение "Power-down", экономичный "Power-save", дежурный "Standby" или расширенный дежурный "Extended Standby") после выполнения команды SLEEP (см. табл. 17). Выход из режима сна происходит при возникновении разрешенного прерывания. В этом случае, помимо времени старта микроконтроллер приостанавливается на 4 машинных цикла, выполняет процедуру обработки прерывания и продолжает выполнять команды следующие за SLEEP. Содержимое файла регистров и статического ОЗУ остается неизменным после выхода из режима сна. Если во время действия режима сна возникает условие сброса, то микроконтроллер пробуждается и исполняет код программы по вектору сброса .

На рисунке 18 представлены различные системы синхронизации микроконтроллера ATmega128 и их распределение. Данный рисунок может быть полезным при выборе соответствующего режима сна .

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

Разряд 5 SE: Разрешение перевода в режим сна В бит SE должна быть записана лог. 1, когда необходимо микроконтроллер перевести в режим сна командой SLEEP. Во избежание незапланированного программистом перевода микроконтроллера в режим сна рекомендуется устанавливать этот бит непосредственно перед выполнением инструкции SLEEP и сбрасывать сразу после пробуждения .

Разряды 4. .

2 SM2..0: Биты 2, 1 и 0 выбора режима сна С помощью данных бит можно выбрать один из шести режимов сна в соответствии с таблицей 17 .

Таблица 17 Выбор режима сна SM2 SM1 SM0 Наименование режима сна 0 0 0 Холостой ход 0 0 1 Уменьшение шумов АЦП 0 1 0 Выключение 0 1 1 Экономичный 1 0 0 Зарезервирован 1 0 1 Зарезервирован 1 1 0 Дежурный (1) 1 1 1 Расширенный дежурный (1) Прим. 1: Дежурный режим и расширенный дежурный режим доступны только при использовании внешних кварцевых или керамических резонаторов .

Режим холостого хода (Idle) Если значение бит SM2..0 равно 000, то после выполнения инструкции SLEEP микроконтроллер переходит в режим холостого хода, в котором останавливается ЦПУ, но продолжают работу SPI, УСАПП, аналоговый компаратор, АЦП, двухпроводной интерфейс, таймеры-счетчики, сторожевой таймер и система прерываний. По сути, в данном режиме останавливается синхронизация ядра ЦПУ и флэшпамяти (clkCPU и clkFLASH), а остальная продолжает работу .

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

Режим уменьшения шумов АЦП (ADC Noise Reduction) Если значениям бит SM2..0 присвоить 001, то выполнение инструкции SLEEP приведет к переводу микроконтроллера в режим уменьшения шумов АЦП, в котором останавливается ЦПУ, но продолжают работу АЦП, внешние прерывания, наблюдение за адресом двухпроводной последовательного шины, таймер-счетчик 0 и сторожевой таймер (конечно, если были предварительно активизированы) .

Фактически в данном режиме прекращается синхронизация ввода-вывода (clkI/O), ядра ЦПУ (clkCPU) и флэш-памяти (clkFLASH), а остальная синхронизация продолжает работу .

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

Если разрешена работа АЦП, то преобразование автоматически запускается при переводе в данный режим. Выход из данного режима допускается не только при генерации запроса на прерывание по завершению преобразования АЦП, но и при внешнем сбросе, сбросе по сторожевому таймеру, сбросе при недопустимом снижении питания, прерывании при обнаружении установленного адреса на двухпроводной последовательной шине, прерывании по таймеру-счетчику 0, прерывании по готовности SPM/EEPROM, прерывании по внешнему уровню на выводах INT7:4 или внешнем прерывании по входам INT3:0 .

Режим выключения (Power-down) Если SM2..0 = 010, то выполнение команды SLEEP означает перевод микроконтроллера в режим выключения. В данном режиме прекращает работу внешний генератор, но в действии остаются внешние прерывания, наблюдение за адресом на двухпроводной последовательной шине и сторожевой таймер (при условии, что они активизированы). Выход из данного режима возможен только по внешнему сбросу, сбросу сторожевым таймером, сбросу супервизором питания, прерывании по обнаружении установленного адреса на двухпроводной последовательной шине, прерывании по внешнему уровню на выводах INT7:4 или внешним прерывании INT3:0. В данном режиме фактически отключена генерация всех тактовых частот, поэтому дальнейшая работа модулей продолжается только в асинхронном режиме .

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

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

Экономичный режим (Power-save) Если установить значения бит SM2..0 равным 011, то действие команды SLEEP приведет к переводу микроконтроллера в экономичный режим.

Данный режим идентичен режиму выключения за некоторыми исключениями:

Если таймер-счетчик 0 тактируется асинхронно, т.е. установлен бит AS0 в регистре ASSR, то таймерсчетчик 0 в режиме сна продолжит работу. Выход из режима сна возможен как по переполнению таймера, так и при выполнении условия сравнения, если соответствующее прерывание для таймерасчетчика разрешено в регистре TIMSK, а также установлен бит общего разрешения прерываний в регистре SREG .

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

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

Дежурный режим (Standby) После установки значения SM2..0 = 110 и выбора опции тактирования от внешнего кварцевого или керамического резонатора выполнение инструкции SLEEP приводит к переходу микроконтроллера в дежурный режим. Данный режим идентичен режиму выключению за исключением того, что генератор продолжает свою работу. Из дежурного режима микроконтроллер выходит за 6 машинных циклов .

–  –  –

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

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

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

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

Встроенный источник опорного напряжения Работа встроенного источника опорного напряжения разрешается, если необходимо использовать супервизор питания, аналоговый компаратор или АЦП. Если данные модули будут отключены, то встроенный ИОН также будет отключен и не будет потреблять мощность. При возобновлении его работы программист должен учесть задержку на установление выходного напряжения ИОН перед его использованием. Если ИОН остается включенным в режиме сна, то его можно использовать сразу после пробуждения (см. также Встроенный источник опорного напряжения для уточнения времени его запуска) .

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

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

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

Избежать этого можно с помощью одного из трех способов:

Сбросить конфигурационный бит OCDEN .

• Сбросить конфигурационный бит JTAGEN .

• Установить бит JTD в регистре MCUCSR .

• После разрешения работы интерфейса JTAG вывод TDO остается плавающим до тех пор пока JTAG TAP-контроллер не начнет сдвигать данные. Если связанная с выводом TDO аппаратная часть не выполняет подтягивание потенциала к плюсу питания, то потребляемая мощность увеличится. Обратите внимание, что вывод TDI следующего микроконтроллера в сканируемой цепи содержит подтягивающий резистор для избежания данной проблемы. Запись в бит JTD регистра MCUCSR лог. 1 приводит к отключению интерфейса JTAG, так же как и незапрограммированное состояние конфигурационного бита JTAGEN .

Сброс микроконтроллера В процессе сброса во все регистры ввода-вывода записываются их начальные значения и выполнение программы начинается с вектора сброса. По вектору сброса должна хранится инструкция абсолютного перехода JMP на метку процедуры обработки сброса. Если в программе не используются источники прерывания, то векторы прерываний не используются, а зарезервированные под них ячейки памяти могут использоваться для равномерного расположения кода программы. Имеется также случай, когда вектор сброса расположен в секции прикладной программы, а векторы прерываний находятся в загрузочном секторе или наоборот. На рисунке 22 показана схема организации логики сброса. В таблице 19 приведены электрические характеристики схемы сброса .

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

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

Источники сброса9

ATmega128 имеет пять источников сброса:

Сброс при подаче питания. Микроконтроллер переходит в состояние сброса, если напряжение • питания ниже порога сброса при подаче питания (VPOT) .

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

Сброс по сторожевому таймеру. Если разрешена работа сторожевого таймера и истек период его • срабатывания, то микроконтроллер сбрасывается .

Сброс при снижении питания. Микроконтроллер сбрасывается, если напряжение питания VCC • становится ниже порогового значения (VBOT) и разрешена работа схемы контроля питания BOD .

Сброс через интерфейс JTAG. Микроконтроллер находится в состоянии сброса до тех пор, пока в • регистре сброса записана лог. 1 в одной из сканируемых цепей JTAG-системы. См. раздел Граничное сканирование IEEE 1149.1 (JTAG) .

Рисунок 22 Логика сброса Таблица 19 Характеристики сброса Единица Обозн. Параметр Условие Мин. Тип. Макс .

измерения Пороговое напряжение сброса при 1.4 2.3 В повышении питания VPOT Пороговое напряжение сброса при 1.3 2.3 В снижении питания (1) Пороговый уровень сброса на выводе 0.85 VRST 0.2 Vcc В RESET Vcc Минимальная длительность импульса tRST 50 нс сброса на выводе RESET схемы BODLEVEL = 1 2.4 2.6 2.9 В Порог напряжения сброса VBOT контроля питания BOD(2) BODLEVEL = 0 3.7 4.0 4.5 В Минимальная длительность снижения BODLEVEL = 1 2 мкс tBOD напряжения для срабатывания схемы BODLEVEL = 0 2 мкс контроля питания Ширина петли гистерезиса схемы VHYST 50 мВ контроля питания

Примечания:

1. Сброс при подаче питания не будет работать, если напряжение питания ниже VPOT .

2. У некоторых микроконтроллеров VBOT может быть ниже минимального рабочего напряжения .

Данные микроконтроллеры на стадии производства испытываются при VCC = VBOT. Этим гарантируется то, что сброс микроконтроллера будет выполнен раньше, чем произойдет снижение питания микроконтроллера на недопустимый для его корректной работы уровень .

Испытание ATmega128L выполнено при BODLEVEL=1, а ATmega128 при BODLEVEL=0. Установка BODLEVEL=1 не применима для ATmega128 .

Сброс при подаче питания Импульс сброса при подаче питания (POR) генерируется встроенной схемой. Пороговый уровень сброса приведен в таблице 19. POR инициируется всякий раз, когда VCC ниже порогового уровня. Схема POR может использоваться для запуска микроконтроллера, а также для выявления нарушения режима питания .

Функцией схемы сброса при подаче питания (POR) является удержание микроконтроллера в состоянии сброса в течение определенного времени после того, как напряжение достигло уровня сброса при подаче питания. Если напряжение питания снизится ниже определенного уровня, то микроконтроллер снова сбросится без всяких задержек .

Рисунок 23 Запускмикроконтроллера (RESET соединен с VCC) .

Рисунок 24 Запуск микроконтроллера (RESET управляется внешне) .

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

Рисунок 25 Внешний сброс микроконтроллера Контроль напряжения питания ATmega128 содержит встроенную схему контроля питания (BOD), которая выполняет сравнение уровня VCC с фиксированным пороговым значением. Порог срабатывания схемы BOD может выбираться с помощью конфигурационного бита BODLEVEL. Порог равен 2.7В, когда BODLEVEL незапрограммирован, или 4.0В, когда BODLEVEL запрограммирован. Для исключения автоколебательного режима схема BOD характеризуется гистерезисом.

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

VBOT+ = VBOT + VHYST/2 и VBOT- = VBOT - VHYST/2 .

Схема BOD может быть включена или отключена с помощью конфигурационного бита BODEN. Если разрешена работа BOD (BODEN запрограммирован) и уровень VCC снизился ниже порога срабатывания (VBOT- на рисунке 26), то схема BOD переводит микроконтроллер в состояние сброса. Когда VCC достигает значения выше порога срабатывания (VBOT+ на рисунке 26), то запускается счетчик задержки и микроконтроллер начнет работу по истечении времени tTOUT .

Схема BOD реагирует на снижение VCC, если напряжение остается меньшим порога срабатывания дольше чем период времени tBOD (см. табл. 19) .

Рисунок 26 Сброс микроконтроллера схемой контроля питания Сторожевой таймер По истечении периода переполнения сторожевого таймера генерируется короткий импульс сброса длительностью равной одному периоду системной синхронизации (1 CK). Падающим фронтом этого импульса запускается счетчик задержки tTOUT .

Рисунок 27 Сброс сторожевым таймером Регистр управления и статуса микроконтроллера MCUCSR В регистре управления и статуса микроконтроллера хранится информация об источнике, который вызвал сброс микроконтроллера .

Обратите внимание, что в режиме совместимости с ATmega103 доступны только биты EXTRF и PORF .

Разряд 4 JTRF: Флаг индикации сброса через JTAG-интерфейс Данный бит принимает единичное состояние, если сброс был вызван записью лог. 1 в регистр JTAG Reset JTAG-инструкцией AVR_RESET. Данный бит сбрасывается автоматически при подаче питания или путем непосредственной записи лог. 0 в данный флаг .

Разряд 3 WDRF: Флаг индикации сброса сторожевым таймером Данный бит устанавливается после сброса сторожевым таймером. Данный бит сбрасывается при подаче питания или путем записи лог. 0 в данный флаг .

Разряд 2 BORF: Флаг индикации сброса схемой контроля напряжения питания Данный флаг принимает единичное состояние, если схема контроля напряжения питания перевела микроконтроллер в состояние сброса. Данный бит сбрасывается при подаче питания и путем записи лог .

0 в данный флаг .

Разряд 1 EXTRF: Флаг внешнего сброса Данный бит устанавливается при возникновении внешнего сброса. Флаг сбрасывается при подаче питания или путем записи лог. 0 в данный флаг .

Разряд 0 PORF: Флаг сброса при подаче питания Данный флаг устанавливается, если сброс был инициирован подачей питания. Данный бит сбрасывается только путем записи лог. 0 в данный флаг .

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

Встроенный источник опорного напряжения ATmega128 содержит встроенный источник опорного напряжения (ИОН). ИОН используется схемой контроля питания и может быть подключен ко входу аналогового компаратора или к АЦП. Опорное напряжение АЦП 2.56В генерируется встроенным ИОН .

Сигналы разрешения и длительность запуска ИОН ИОН характеризуется задержкой при включении, которая может оказать негативное влияние, если не будет учтена. Длительность задержки приведена в таблице 20. Для оптимизации энергопотребления ИОН не всегда находится во включенном состоянии.

ИОН остается во включенном состоянии в следующих случаях:

1. Когда разрешена работа схемы контроля питания BOD (запрограммирован конфигурационный бит BODEN) .

2. Если ИОН подключен ко входу аналогового компаратора (установлен бит ACBG в ACSR) .

3. Если разрешена работа АЦП .

Следовательно, когда работа BOD запрещена и установлен бит ACBG или разрешена работа АЦП, программист должен предусмотреть задержку на время запуска ИОН перед использованием выходных данных аналогового компаратора или АЦП. В целях снижения потребляемой мощности в режиме выключения (Power-down) программист должен избежать приведенных выше трех условий для гарантирования, что ИОН будет отключен после перевода микроконтроллера в режим выключения .

Таблица 20 Характеристики встроенного ИОН Обозн. Параметр Мин. Тип. Макс. Ед.изм .

VBG Напряжение ИОН 1.15 1.23 1.40 В tBG Длительность запуска ИОН 40 70 мкс IBG Потребляемый ток ИОНом 10 мкА Сторожевой таймер Сторожевой таймер тактируется от отдельного встроенного генератора частотой 1 МГц. Данное значение типично для напряжения питания VCC = 5В. Значение частоты при другом напряжении питания см. на рис. 194. Период переполнения сторожевого таймера можно задавать путем управления предделителем (см. табл. 22). Инструкция WDR выполняет сброс сторожевого таймера. Сторожевой таймер также сбрасывается при выключении или во время сброса микроконтроллера. Период переполнения определяют восемь различных коэффициентов деления предделителя. Если инструкция сброса сторожевого таймера WDR не выполняется в течение времени равного периоду переполнения сторожевого таймера, то ATmega128 сбрасывается и начинает выполнение программы по вектору сброса .

Для предотвращения неумышленного изменения периода переполнения или выключения сторожевого таймера могут быть использованы 3 различных уровня безопасности, которые выбираются конфигурационными битами M103C и WDTON в соотв. с табл. 21. Уровень безопасности 0 соответствует установкам в ATmega103. Для разрешения работы сторожевого таймера не требуются какие-либо специальные меры независимо от уровня безопасности (см. Временные последовательности изменения конфигурации сторожевого таймера ) .

Таблица 21 Конфигурация сторожевого таймера при различных настройках бит M103C и WDTON Временная Начальное последовательно Временная последовательность Уровень состояние M103C WDTON сть отключения изменения периода безопасности сторожевого сторожевого переполнения таймера таймера Незапрограмми Незапрограмм 1 Выкл. Есть Есть рован ирован Незапрограмми Запрограммир Отключение 2 Вкл. Есть рован ован невозможно Запрограммиро Незапрограмм 0 Выкл. Есть Нет ван ирован Запрограммиро Запрограммир Отключение 2 Вкл. Есть ван ован невозможно

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

Разряды 7. .

5 Зарезервированы Данные разряды являются зарезервированными и всегда считываются как 0 .

Разряд 4 WDCE: Разрешение изменения сторожевого таймера Данный бит необходимо установить непосредственно перед записью лог. 0 в бит WDE. В противном случае запретить работу сторожевого таймере невозможно. После записи в данный бит лог. 1 он автоматически аппаратно сбросится по истечении четырех тактов синхронизации микроконтроллера. На уровнях безопасности 1 и 2 данный бит необходимо устанавливать также перед изменением настроек предделителя. См. Временные последовательности изменения конфигурации сторожевого таймера .

Разряд 3 WDE: Разрешение сторожевого таймера Работа сторожевого таймера разрешается (запрещается) путем установки (сброса) бита WDE. Сбросить бит WDE возможно, только если предварительно установить бит WDCE.

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

1. Записать лог. 1 в WDCE и WDE одной инструкцией. Лог. 1 должна быть записана в бит WDE, даже если до выполнения данной операции в нем уже была записана лог. 1 .

2. В течение следующих четырех тактов записать лог. 0 в WDE, что приводит к отключению сторожевого таймера .

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

Разряд 2. .

0 WDP2, WDP1, WDP0: Выбор коэффициента деления Биты WDP2, WDP1 и WDP0 задают коэффициент деления частоты генератора сторожевого таймера после разрешения работы последнего. Значения коэффициентов деления и соответствующих периодов переполнения приведены в табл. 22 .

Таблица 22 Настройка предделения генератора сторожевого таймера Количество тактов Типичное время Типичное время WDP2 WDP1 WDP0 генератора сторожевого переполнения при VCC переполнения при таймера = 3.0В VCC = 5.0В 0 0 0 16K (16,384) 17.1 мс 16.3 мс 0 0 1 32K (32,768) 34.3 мс 32.5 мс 0 1 0 64K (65,536) 68.5 мс 65 мс 0 1 1 128K (131,072) 0.14 с 0.13 с 1 0 0 256K (262,144) 0.27 с 0.26 с 1 0 1 512K (524,288) 0.55 с 0.52 с 1 1 0 1,024K (1,048,576) 1.1 с 1.0 с 1 1 1 2,048K (2,097,152) 2.2 с 2.1 с В следующих примерах приведены функции выключения сторожевого таймера на Ассемблере и Си. В примерах предполагается, что система прерываний настроена таким образом, чтобы во время выполнения функции не возникло прерывание (например, с помощью общего запрета прерываний инструкцией cli ) .

Пример кода на Ассемблере

WDT_off:

; Запись лог. 1 в WDCE и WDE ldi r16, (1WDCE)|(1WDE) out WDTCR, r16 ; Выкл. сторожевого таймера ldi r16, (0WDE) out WDTCR, r16 ret Пример кода на Си void WDT_off(void) { /* Запись лог. 1 в WDCE и WDE */ WDTCR = (1WDCE) | (1WDE);

/* Выкл. сторожевого таймера */ WDTCR = 0x00;

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

Уровень безопасности 0 Данный режим совместим с работой сторожевого таймера ATmega103. Сторожевой таймер первоначально отключен, но может быть активизирован путем записи в бит WDE лог. 1 без каких-либо ограничений. Период переполнения таймера также может быть изменен без всяких ограничений. Для выключения активизированного сторожевого таймера должна быть выполнена процедура, описанная при рассмотрении бита WDE .

Уровень безопасности 1 В данном режиме сторожевой таймер первоначально отключен. Его работа может быть разрешена путем записи лог. 1 в бит WDE без каких-либо ограничений. Временная последовательность должна быть соблюдена при изменении периода переполнения сторожевого таймера или выключении разрешенного сторожевого таймера.

В данном случае должна быть выполнена следующая последовательность:

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

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

Уровень безопасности 2 В данном режиме сторожевой таймер всегда включен а значение бита WDE всегда считывается как лог .

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

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

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

Прерывания В данном разделе описывается специфика обработки прерываний, реализованная в ATmega128. Общее описание обработки прерываний приведено в разделе Сброс и обработка прерываний .

–  –  –

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

Адрес Инструкция Комментарий $0000 RESET:ldi r16,high(RAMEND) ; Начало основной программы $0001 out SPH,r16 ; Установка указателя стека в конце ОЗУ $0002 ldi r16,low(RAMEND) $0003 out SPL,r16 $0004 sei ; Разрешение прерываний $0005 xxx ;

.org $F002 $F002 jmp EXT_INT0 ; Переход на обработку прерывания IRQ0 $F004 jmp EXT_INT1 ; Переход на обработку прерывания IRQ1......... ;

$F044 jmp SPM_RDY ; Переход на обработку прерывания по готовности к записи в память программ Если конфигурационный бит BOOTRST запрограммирован и установлен размер загрузочного сектора 8 кбайт, то можно использовать следующий шаблон программы:

Адрес Инструкция Комментарий.org $0002 $0002 jmp EXT_INT0 ; Переход на обработку прерывания IRQ0 $0004 jmp EXT_INT1 ; Переход на обработку прерывания IRQ1......... ;

$0044 jmp SPM_RDY ; Переход на обработку прерывания по готовности к записи в память программ ;

.org $F000 $F000 RESET: ldi r16,high(RAMEND) ; Начало основной программы $F001 out SPH,r16 ; Установка указателя стека в конец ОЗУ $F002 ldi r16,low(RAMEND) $F003 out SPL,r16 $F004 sei ; Разрешение прерываний $F005 xxx Если конфигурационный бит BOOTRST запрограммирован, размер загрузочного сектора установлен 8 кбайт и бит IVSEL в регистре MCUCR установлен перед разрешение любого из прерываний, то распределение адресов в программе следующее:

Адрес Инструкция Комментарий ;

.org $F000 $F000 jmp RESET ; Переход на обработку сброса $F002 jmp EXT_INT0 ; Переход на обработку прерывания IRQ0 $F004 jmp EXT_INT1 ; Переход на обработку прерывания IRQ1......... ;

$F044 jmp SPM_RDY ; Переход на обработку прерывания по готовности записи в память программ $F046 RESET: ldi r16,high(RAMEND) ; Начало основной программы $F047 out SPH,r16 ; Установка указателя стека в конец ОЗУ $F048 ldi r16,low(RAMEND) $F049 out SPL,r16 $F04A sei ; Разрешение прерываний $F04B xxx Перемещение между секторами загрузочной и прикладной программы Общий регистр управления прерываниями задает размещение таблицы векторов прерываний .

Регистр управления микроконтроллером MCUCR Разряд 7 6 5 4 3 2 1 0 SRE SRW10 SE SM1 SM0 SM2 IVSEL IVCE MCUCR Чтение/запись Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп .

Исх. значение 0 0 0 0 0 0 0 0 Разряд 1 IVSEL: Выбор вектора прерывания Если бит IVSEL сброшен (=0), то векторы прерываний размещаются в начале флэш-памяти. Если данный бит установлен (=1), то векторы прерываний перемещаются в начало загрузочного сектора флэш-памяти. Фактический адрес начала загрузочного сектора определяется значением конфигурационных бит BOOTSZ. См. раздел Самопрограммирование из сектора начальной загрузки с поддержкой чтения во время записи для выяснения подробностей.

Во избежание несанкционированных изменений таблицы векторов прерываний необходимо выполнить специальную последовательность записи при изменении бита IVSEL:

1. Записать лог. 1 в бит разрешения изменения вектора прерывания (IVCE) .

2. В течение четырех машинных циклов записать желаемое значение в IVSEL, при этом записывая лог.0 в IVCE .

Прерывания будут автоматически отключены при выполнении такой последовательности. Прерывания отключаются во время установки IVCE и останутся отключенными до перехода к инструкции следующей за инструкцией записи в IVSEL. Если IVSEL не записан, то прерывания будет находиться в отключенном состоянии 4 такта синхронизации. Состояние бита I в регистре статуса не затрагивается при автоматическом отключении прерываний .

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

Разряд 0 IVCE: Разрешение изменения вектора прерывания В бит IVCE должна быть записана лог. 1, чтобы разрешить изменение бита IVSEL. IVCE сбрасывается аппаратно через четыре машинных цикла после записи лог. 1 в IVSEL. Установка бита IVCE приведет к отключению прерываний, что описано при рассмотрении бита IVSEL выше. Ниже приведен пример кода .

Пример кода на Ассемблере

Move_interrupts:

; Разрешение изменения векторов прерываний ldi r16, (1IVCE) out MCUCR, r16 ; Перемещение векторов в загрузочный сектор флэш-памяти ldi r16, (1IVSEL) out MCUCR, r16 ret Пример кода на Си void Move_interrupts(void) { /* Разрешение изменения векторов прерываний */ MCUCR = (1IVCE);

/* Перемещение векторов в загрузочной сектор флэш-памяти */ MCUCR = (1IVSEL);

} Порты ввода-вывода Введение Все порты ввода-вывода (ПВВ) AVR-микроконтроллеров работают по принципу чтение-модификациязапись при использовании их в качестве портов универсального ввода-вывода. Это означает, что изменение направления ввода-вывода одной линии порта командами SBI и CBI будет происходит без ложных изменений направления ввода-вывода других линий порта. Данное распространяется также и на изменение логического уровня (если линия порта настроена на вывод) или на включение/отключение подтягивающих резисторов (если линия настроена на ввод). Каждый выходной буфер имеет симметричную характеристику управления с высоким втекающим и вытекающим выходными токами .

Выходной драйвер обладает нагрузочной способностью, которая позволяет непосредственно управлять светодиодными индикаторами. Ко всем линиям портов может быть подключен индивидуальный выборочный подтягивающий к плюсу питания резистор, сопротивление которого не зависит от напряжения питания. На всех линиях ПВВ установлены защитные диоды, которые подключены к VCC и Общему (GND), как показано на рисунке 29. Подробный перечень параметров ПВВ приведен в разделе "Электрические характеристики" .

Рисунок 29 Эквивалентная схема линии ПВВ Ссылки на регистры и биты регистров в данном разделе даны в общей форме. При этом, символ x заменяет наименование ПВВ, а символ n заменяет номер разряда ПВВ. Однако при составлении программы необходимо использовать точную форму записи. Например, PORTB3, означающий разряд 3 порта B, в данном документе записывается как PORTxn. Адреса физических регистров ввода-вывода и распределение их разрядов приведены в разделе Описание регистров портов ввода-вывода" .

Для каждого порта ввода-вывода в памяти ввода-вывода зарезервировано три ячейки: одна под регистр данных PORTx, другая под регистр направления данных DDRx и третья под состояние входов порта PINx. Ячейка, хранящая состояние на входах портов, доступна только для чтения, а регистры данных и направления данных имеют двунаправленный доступ. Кроме того, установка бита выключения подтягивающих резисторов PUD регистра SFIOR отключает функцию подтягивания на всех выводах всех портов .

Ниже приведено описание порта ввода-вывода для универсального цифрового ввода-вывода .

Большинство выводов портов поддерживают альтернативные функции встроенных периферийных устройств микроконтроллера. Описание альтернативных функций приведено далее в подразделе Альтернативные функции порта (см. также описание функций соответствующих периферийных модулей) .

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

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

Рисунок 30 Организация универсального цифрового ввода-вывода (1) Прим. 1: Сигналы WPx, WDx, RRx, RPx и RDx являются общими в пределах одного порта. Сигналы clkI/O, SLEEP, и PUD являются общими для всех портов .

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

Биты DDxn регистра DDRx определяют направленность линии ввода-вывода. Если DDxn = 1, то Pxn конфигурируется на вывод. Если DDxn=0, то Pxn конфигурируется на ввод .

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

Если PORTxn = 1 при конфигурации линии порта на вывод, то состояние выхода будет определяться значением PORTxn .

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

В таблице 25 подытоживается действие управляющих сигналов на состояние вывода .

Таблица 25 Настройка вывода порта

–  –  –

Рисунок 31 Синхронизация во время опроса приложенного к выводу порта уровня В следующих примерах показано как установить на линиях 0 и 1 порта В уровень лог. 1, а на линиях 2 и 3 лог. 0, а также как настроить линии 47 на ввод с подключением подтягивающих резисторов на линиях 6 и 7. Результирующее состояние линий считываются обратно, но, с учетом сказанного выше, включена инструкция nop для обеспечения возможности обратного считывания только что назначенного состояния некоторых выводов .

Пример кода на Ассемблере (1).. .

; Разрешаем подтягивание и устанавливаем высокие выходные уровни ; Определяем направления данных линий портов ldi r16,(1PB7)|(1PB6)|(1PB1)|(1PB0) ldi r17,(1DDB3)|(1DDB2)|(1DDB1)|(1DDB0) out PORTB,r16 out DDRB,r17 ; Вставляем инструкцию nop для синхронизации nop ; Опрос состояния выводов порта in r16,PINB.. .

Пример кода на Си (1) unsigned char i;

.. .

/* Разрешаем подтягивание и устанавливаем высокие выходные уровни */ /* Определяем направления данных линий портов */ PORTB = (1PB7)|(1PB6)|(1PB1)|(1PB0);

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

/* Вставляем инструкцию nop для синхронизации */ _NOP();

/* Опрос состояния выводов порта*/ i = PINB;

.. .

Прим. 1: В программе на Ассемблере используются два временных регистра для минимизации интервала времени от настройки подтягивающих резисторов на разрядах 0, 1, 6 и 7 до корректной установки бит направления, разрешающих вывод лог. 0 на линиях 2 и 3 и заменяющих высокий уровень на разрядах 0 и 1, образованный за счет подключения подтягивающих резисторов, на высокий уровень сильноточного драйвера .

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

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

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

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

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

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

Рисунок 30 Организация универсального цифрового ввода-вывода (1) Прим. 1: Сигналы WPx, WDx, RRx, RPx и RDx являются общими в пределах одного порта. Сигналы clkI/O, SLEEP, и PUD являются общими для всех портов .

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

Биты DDxn регистра DDRx определяют направленность линии ввода-вывода. Если DDxn = 1, то Pxn конфигурируется на вывод. Если DDxn=0, то Pxn конфигурируется на ввод .

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

Если PORTxn = 1 при конфигурации линии порта на вывод, то состояние выхода будет определяться значением PORTxn .

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

В таблице 25 подытоживается действие управляющих сигналов на состояние вывода .

Таблица 25 Настройка вывода порта DDx PORTx PUD (в Ввод- Подтягивающий Комментарий n n SFIOR) вывод резистор 0 0 X Ввод Нет Третье состояние (Z-состояние) Pxn будет источником тока при подаче 0 1 0 Ввод Да внешнего низкого уровня 0 1 1 Ввод Нет Третье состояние (Z-состояние) 1 0 X Вывод Нет Вывод лог. 0 (втекающий ток) 1 1 X Вывод Нет Вывод лог. 1 (вытекающий ток) Считывание состояние вывода Независимо от значения бита направления данных DDxn состояние вывода порта может быть опрошено через регистровый бит PINxn. Как показано на рисунке 30 регистровый бит PINxn и предшествующая ему триггерная защелка составляют синхронизатор. Данный подход позволяет избежать метастабильности, если изменение состояния на выводе произошло около фронта внутренней синхронизации. Однако такой подход связан с возникновением задержки. На рисунке 31 представлена временная диаграмма синхронизации во время опроса внешне приложенного к выводу уровня. Длительности минимальной и максимальной задержек на распространение сигнала обозначены как tpd,max и tpd,min, соответственно .

Рисунок 31 Синхронизация во время опроса приложенного к выводу порта уровня В следующих примерах показано как установить на линиях 0 и 1 порта В уровень лог. 1, а на линиях 2 и 3 лог. 0, а также как настроить линии 47 на ввод с подключением подтягивающих резисторов на линиях 6 и 7. Результирующее состояние линий считываются обратно, но, с учетом сказанного выше, включена инструкция nop для обеспечения возможности обратного считывания только что назначенного состояния некоторых выводов .

Пример кода на Ассемблере (1).. .

; Разрешаем подтягивание и устанавливаем высокие выходные уровни ; Определяем направления данных линий портов ldi r16,(1PB7)|(1PB6)|(1PB1)|(1PB0) ldi r17,(1DDB3)|(1DDB2)|(1DDB1)|(1DDB0) out PORTB,r16 out DDRB,r17 ; Вставляем инструкцию nop для синхронизации nop ; Опрос состояния выводов порта in r16,PINB.. .

Пример кода на Си (1) unsigned char i;

.. .

/* Разрешаем подтягивание и устанавливаем высокие выходные уровни */ /* Определяем направления данных линий портов */ PORTB = (1PB7)|(1PB6)|(1PB1)|(1PB0);

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

/* Вставляем инструкцию nop для синхронизации */ _NOP();

/* Опрос состояния выводов порта*/ i = PINB;

.. .

Прим. 1: В программе на Ассемблере используются два временных регистра для минимизации интервала времени от настройки подтягивающих резисторов на разрядах 0, 1, 6 и 7 до корректной установки бит направления, разрешающих вывод лог. 0 на линиях 2 и 3 и заменяющих высокий уровень на разрядах 0 и 1, образованный за счет подключения подтягивающих резисторов, на высокий уровень сильноточного драйвера .

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

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

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

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

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

–  –  –

Разряд 2 PUD: Отключение всех подтягивающих резисторов Если в данный разряд записать лог. 1, то подтягивающие резисторы на всех портах будет отключены, даже если регистры DDxn и PORTxn настроены на их подключение ({DDxn, PORTxn} = 0b01). См .

Настройка выводов для детального изучения данной функции .

Альтернативные функции порта A Альтернативной функцией порта А является мультиплексированная младшая шина адреса/шина данных внешнего интерфейса памяти .

Таблица 27 Альтернативные функции выводов порта А

–  –  –

Внешние прерывания Внешние прерывания осуществляются через выводы INT7:0. Обратите внимание, что после разрешения внешние прерывания будут генерироваться, даже если линии INT7:0 настроены как выходы. Данная особенность может использоваться для программной генерации прерывания. Внешние прерывания могут генерироваться по подающему или нарастающему фронту, а также по низкому лог. уровню. Одна из этих установок задается в регистрах управления внешними прерываниями EICRA (INT3:0) и EICRB (INT7:4). Если внешнее прерывание разрешено и настроено на срабатывание при низком уровне, то прерывание будет инициироваться постоянно пока на выводе будет оставаться низкий уровень .

Обратите внимание, что для распознавания падающего или нарастающего фронтов на INT7:4

необходимо наличие синхронизации ввода-вывода, описанной в разделе Источники синхронизации и их распределение". Прерывания по низкому уровню и фронтам на INT3:0 определяются асинхронно. Это означает, что данные прерывания могут использоваться для пробуждения микроконтроллера из режимов глубокого сна. Синхронизация ввода-вывода останавливается во всех режимах сна за исключением режима холостого хода (Idle) .

Обратите внимание, что при использовании прерывания по уровню для пробуждения микроконтроллера из режима выключения (Power-down), только после удержания изменившегося уровня в течение определенного времени генерируется прерывание. Это делает микроконтроллер менее чувствительным к шумам. Оценка изменения состояния уровня выполняется по двум его выборкам с интервалом равным периоду сторожевого таймера, который равен 1 мкс (номинальное значение) при 5.0В и 25?C. Частота сторожевого таймера зависит от напряжения (см. Электрические характеристики). Пробуждение микроконтроллера наступает, если на входе присутствует требуемый уровень в процессе выборок или если он удерживается до окончания задержки при запуске синхронизации (возникает при выходе из режимов сна). Время запуска определяется конфигурационными битами SUT (см. Источники синхронизации и их распределение). Если дважды выполнена выборка уровня с синхронизацией сторожевым таймером, но по истечении времени запуска этот уровень исчез, то пробуждение микроконтроллера наступит, но прерывание не будет сгенерировано. Для того чтобы активизировать прерывание по уровню необходимо, чтобы этот уровень удерживался в течение достаточного для пробуждения микроконтроллера времени .

Регистр А управления внешними прерываниями EICRA Разряд 7 6 5 4 3 2 1 0 ICS31 ICS30 ICS21 ICS20 ICS11 ICS10 ICS01 ICS00 EICRA Чтение/запись Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп .

Исх. значение 0 0 0 0 0 0 0 0 Данный регистр на доступен в режиме совместимости с ATmega103, но исходная установка соответствует настройке на прерывания по низкому уровню на INT3:0, что также как и в ATmega103 .

Разряды 7. .

0 ISC31, ISC30 ISC00, ISC00: Биты выбора условия генерации внешнего прерывания 3 - 0 Внешние прерывания 3 - 0 активизируются через внешние выводы INT3:0, если установлены флаг I в регистре статуса SREG и соответствующая маска прерывания в EIMSK. Выбор уровня или фронта для активизации внешнего прерывания осуществляется в соответствии с таблицей 48. Фронты на INT3..INT0 выявляются асинхронно. Прерывание по выв. INT3:0 будет сгенерировано, если длительность импульса будет больше минимально необходимой (см. табл. 49). При возникновении импульсов меньшей длительности генерация прерывания не гарантируется. Если выбрано прерывание по низкому уровню, то для генерации прерывания необходимо, чтобы этот уровень оставался на прежнем низком уровне до момента завершения выполнения текущей инструкции. После разрешения прерывания по уровню оно будет генерироваться непрерывно до тех пор, пока на входе присутствует низкий уровень. При изменении бит ISCn может возникнуть прерывание. Поэтому, рекомендуется вначале отключить прерывание INTn путем сброса бита разрешения прерывания в регистре EIMSK. После этого, значение бит ISCn может быть изменено. И, наконец, перед возобновлением работы прерываний необходимо сбросить флаг прерывания INTn путем записи лог. 1 во флаг прерывания (INTFn) в регистре EIFR .

Таблица 48 Задание условия генерации запроса на прерывание(1)

–  –  –

ISCn1 ISCn0 Описание 0 0 Низкий уровень на INTn генерирует запрос на прерывание 0 1 Любое изменение логического состояния на INTn генерирует запрос на прерывание Падающий фронт, выявленный по двум выборкам на INTn, генерирует запрос на прерывание .

Нарастающий фронт, выявленный по двум выборкам на INTn, генерирует запрос на прерывание .

Прим. 1: n = 7, 6, 5 или 4 .

Перед изменением бит ISCn1/ISCn0 необходимо запретить работу прерывания путем очистки бита разрешения прерывания в регистре EIMSK. В противном случае прерывание может возникнуть после изменения данных бит .

Регистр маски внешнего прерывания EIMSK Разряд 7 6 5 4 3 2 1 0 INT7 INT6 INT5 INT4 INT3 INT2 INT1 INT0 EIMSK Чтение/запись Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп .

Исх. значение 0 0 0 0 0 0 0 0 Разряды 7. .

0 INT7 INT0: Разрешение запроса на внешнее прерывание 7 - 0 Если в бит INT7 INT0 и в бит I регистра статуса SREG записать лог. 1, то разрешается работа внешнего прерывания по соответствующему выводу. Биты выбора условия генерации прерывания в регистрах управления внешними прерываниями EICRA и EICRB определяют по какому условию генерируется прерывание: по нарастающему фронту, по падающему фронту или по уровню. Любой из данных выводов сохраняет активность, даже если он настроен на вывод. Данная особенность может использоваться для программной генерации прерывания .

Разряд 7 6 5 4 3 2 1 0 INTF7 INTF6 INTF5 INTF4 INTF3 INTF2 INTF1 INTF0 EIFR Чтение/запись Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп .

Исх. значение 0 0 0 0 0 0 0 0 Разряды 7. .

0 INTF7 - INTF0: Флаги внешних прерываний 7 - 0 Если фронт или изменение логического состояния на INT7:0 вызывает прерывание, то соответствующий флаг INTF7:0 принимает единичное состояние. Если установлены бит I регистра статуса SREG и соответствующий бит разрешения прерывания INT7:0 в регистре EIMSK, то микроконтроллер выполнит переход на вектор прерывания. Флаг сбрасывается аппаратно после выполнения процедуры обработки прерывания. Альтернативно флаг может быть сброшен программно путем записи лог. 1 в соответствующий бит. Если INT7:0 настроены на генерацию прерывания по уровню, то флаги постоянно находятся в сброшенном состоянии. Обратите внимание, что при переходе в режим сна с отключенными прерываниями INT3:0 входные буферы этих выводов будут отключенными. В свою очередь это может вызвать изменение внутреннего состояния сигналов, которое приведет к установке флагов INTF3:0. См .

также Разрешение цифрового ввода и режимы сна .

Аналоговый компаратор Аналоговый компаратор сравнивает уровни напряжений на неинвертирующем входе AIN0 и инвертирующем входе AIN1. Если напряжение на неинвертирующем входе AIN0 превышает напряжение на инвертирующем входе AIN1, то выход аналогового компаратора ACO принимает единичное состояние .

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

Рисунок 107 Функциональная схема аналогового компаратора Прим. 1: См. табл. 94 .

Прим. 2: Информация по расположению выводов аналогового компаратора представлена на рисунке 1 и в таблице 30 .

Регистр специальных функций ввода-вывода SFIOR Разряд 3 ACME: Выбор мультиплексора на входе аналогового компаратора Если выключен аналогово-цифровой преобразователь (ADEN=0 в регистре ADCSRA) и в данный разряд записана лог. 1, то к инвертирующему входу аналогового компаратора подключен выход аналогового мультиплексора АЦП. Запись в данный разряд лог. 0 приведет к подключению инвертирующего входа аналогового компаратора к выводу микроконтроллера AIN1. Более подробно об использовании данной настройки см. в разделе Мультиплексированный вход аналогового компаратора .

Регистр состояния и управления аналогового компаратора ACSR Разряд 7 ACD: Отключение аналогового компаратора Запись в данный разряд лог. 1 приводит к снятию питания с аналогового компаратора. Данный разряд можно устанавливать в любой момент при необходимости отключения аналогового компаратора. Его использование позволяет снизить энергопотребление в активном режиме и режиме холостого хода .

Перед изменением бита ACD необходимо отключить прерывание по аналоговому компаратору путем сброса бита ACIE в регистре ACSR. В противном случае может возникнуть прерывание после изменения значения данного бита .

Разряд 6 ACBG: Подключение источника опорного напряжения к аналоговому компаратору После установки данного бита к неинвертирующему входу компаратора подключается источник опорного напряжения. После сброса данного разряда неинвертирующий вход компаратора связан с выводом AIN0 микроконтроллера. См. также Встроенный источник опорного напряжения .

Разряд 5 ACO: Выход аналогового компаратора Данный бит выхода аналогового компаратора связан непосредственно с выходом ACO через цепь синхронизации. Синхронизация реализована как временная задержка на 1 2 машинных цикла .

Разряд 4 ACI: Флаг прерывания аналогового компаратора Данный разряд устанавливается аппаратно, при возникновении события в соответствии с установками бит ACIS1 и ACIS0. Запрос на обработку прерывания аналогового компаратора выполняется, если установлены биты ACIE и I в регистре SREG. ACI сбрасывается аппаратно при переходе на соответствующий вектор обработки прерывания. Альтернативно, бит ACI можно сбросить программно путем записи лог. 1 в данный флаг .

Разряд 3 ACIE: Разрешение прерывания аналогового компаратора Если в данный разряд записана лог. 1 и установлен бит I в регистре статуса, то прерывание по аналоговому компаратору активизируется. Запись в данный разряд лог. 0 приводит к отключению данного прерывания .

Разряд 2 ACIC: Подключение аналогового компаратора к схеме захвата фронтов Установка данного разряда приводит к разрешению совместной работы схемы захвата фронтов таймерасчетчика 1 и аналогового компаратора. В этом случае, выход аналогового компаратора непосредственно подключен к входному каскаду схемы захвата фронтов, позволяя к компаратору добавить функции подавления шумов и настройки фронтов прерывания по захвату фронта таймером-счетчиком 1.После записи в данный разряд лог. 0 связь между аналоговым компаратором и схемой захвата фронтов разрывается. Для активизации прерывания схемы захвата фронтов таймера-счетчика 1 по срабатыванию аналогового компаратора необходимо установить бит TICIE1 в регистре маски прерывания таймера (TIMSK) .

Разряды 1, 0 ACIS1, ACIS0: Выбор события прерывания аналогового компаратора Данные разряды определяют какое событие приводит к генерации запроса на прерывание аналогового компаратора. Варианты установок данных разрядов и их назначение представлены в табл. 93 .

Таблица 93 - Установки разрядов ACIS1, ACIS0 ACIS1 ACIS0 Событие 0 0 Прерывание по любому изменению на выходе компаратора 0 1 Зарезервировано 1 0 Прерывание по падающему фронту на выходе компаратора 1 1 Прерывание по нарастающему фронту на выходе компаратора Перед изменением бит ACIS1/ACIS0 необходимо отключить прерывание по аналоговому компаратору путем сброса бита разрешения прерывания в регистре ACSR. В противном случае может возникнуть прерывание при изменении значений данных бит .

Мультиплексированный вход аналогового компаратора Имеется возможность использовать выводы ADC7..0 в качестве неинвертирующих входов аналогового компаратора. Для организации такого ввода используется мультиплексор АЦП и, следовательно, в этом случае АЦП должен быть отключен. Если установлен бит разрешения подключения мультиплексора к аналоговому компаратору (бит ACME в SFIOR) и выключен АЦП (ADEN=0 в регистре ADCSRA), то состояние разрядов MUX2..0 регистра ADMUX определяют какой вывод микроконтроллера подключен к неинвертирующему входу аналогового компаратора (см. табл. 94). Если ACME сброшен или установлен ADEN, то в качестве неинвертирующего входа аналогового компаратора используется вывод микроконтроллера AIN1 .

Таблица 94 Мультиплексированный вход аналогового компаратора ACME ADEN MUX2..0 Неинвертирующий вход аналогового компаратора 0 x xxx AIN1 1 1 xxx AIN1 1 0 000 ADC0 1 0 001 ADC1 1 0 010 ADC2 1 0 011 ADC3 1 0 100 ADC4 1 0 101 ADC5 1 0 110 ADC6 1 0 111 ADC7 16-разрядные таймеры-счетчики 1 и 3 16-разрядные таймеры-счетчики предназначены для точного задания временных интервалов, генерации прямоугольных импульсов и измерения временных характеристик импульсных сигналов .

Основные отличительные особенности:

16-разрядные счетчики (в т.ч. возможность организации 16-разр. ШИМ) • Три раздельных блока сравнения • Двойная буферизация регистров порога сравнения (OCR) • Один блок захвата • Подавитель шума на входе блока захвата • Режим сброса таймера при совпадении с порогом сравнения (автоматическая перезагрузка) • Широтно-импульсная модуляция без генерации ложных импульсов при записи нового порога • сравнения в OCR (двойная буферизация) и фазовая коррекция Переменный период ШИМ • Частотный генератор • Счетчик внешних событий • 10 самостоятельных источников прерываний (TOV1, OCF1A, OCF1B, OCF1C, ICF1, TOV3, OCF3A, • OCF3B, OCF3C и ICF3) Ограничения на режим совместимости с ATmega103 Обратите внимание, что в режиме совместимости с ATmega103 доступен только один 16-разр. таймерсчетчик (таймер-счетчик 1). Кроме того, в режиме совместимости с ATmega103 таймер-счетчик 1 имеет только два регистра порогов сравнения (OCR1A и OCR1B) .

Введение В виду идентичности таймеров 1 и 3 в данном разделе используется общая форма записи. Так индекс n заменяет номер таймера-счетчика (1 или 3), а x заменяет наименование канала сравнения (A,B или C). Однако при программировании необходимо использовать фактические номера и наименования .

Например, для записи нового состояния таймера-счетчика 1 в программе необходимо указывать TCNT1 .

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

Рисунок 46- Функциональная схема 16-разр. таймера-счетчика Прим.: Расположение и назначение выводов таймеров-счетчиков 1 и 3 см. на рисунке 1, таблице 30 и таблице 39 .

Регистры Регистр таймера-счетчика (TCNTn), регистры порогов сравнения (OCRnA/B/C), a также регистр захвата (ICRn) являются 16-разрядными регистрами. В связи с этим, во время доступа к этим регистрам должна быть соблюдена специальная процедура (см. Доступ к 16-разр. регистрам). Регистры управления таймером (TCCRnA/B/C) являются 8-разр. регистрами, поэтому, доступ к ним со стороны ЦПУ не связан с какими-либо ограничениями. Все сигналы запросов на прерывание представлены в регистре флагов прерываний таймеров (TIFR) и регистре флагов расширенных прерываний (ETIFR). Все прерывания индивидуально маскируются регистром макси прерываний таймеров (TIMSK) и регистром маски расширенных прерываний (ETIMSK). Регистры (E)TIFR и (E)TIMSK не представлены на функциональной схеме, т.к. они совместно используются другими таймерами микроконтроллера .

Таймер-счетчик может тактироваться внутренне через предделитель или внешне тактовым источником, подключенным к выводу Tn. Блок выбора тактового источника позволяет выбрать тактовый источник и фронт, по которому будет изменяться состояние таймера-счетчика. Если тактовый источник не задан, то таймер-счетчик находится в неактивном состоянии. Сигнал на выходе блока выбора тактового источника является тактовым сигналом таймера (clkTn) .

Значение регистров порогов сравнения (OCRnA/B/C) непрерывно сравнивается со значением счетчика .

Результат сравнения может использоваться для генерации прямоугольных импульсов с ШИМ или с переменной частотой на выходах OCnA/B/C. См. также Блоки сравнения. В случае определения совпадения значений сравниваемых регистров устанавливается соответствующий флаг прерываний (OCFnA/B/C), который в свою очередь может служить источником прерывания .

Регистр захвата позволяет запомнить состояние таймера-счетчика при возникновении заданного внешнего события (фронт внешнего сигнала) на входе захвата фронта ICPn или на выводах аналогового компаратора (см. Аналоговый компаратор). На входе захвата фронта предусмотрена схема цифровой фильтрации (подавитель шума) для снижения риска срабатывания схемы захвата от помехи. Верхний предел или максимальное значение таймера-счетчика в зависимости от режима работы таймера могут определяться значением в OCRnA, ICRn или иметь фиксированные значения. Если OCRnA задает верхний предел счета в режиме ШИМ, то он не может использоваться для генерации ШИМ-сигналов .

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

Определения Некоторые определения и их сокращенные наименования, которые интенсивно используются в этом разделе, представлены в таблице 57 .

Таблица 57 Определения НП (нижний предел) Счетчик достигает нулевого значения (0х0000) МАКС (максимальное Счетчик достигает максимального значения 0xFFFF (десятич. 65535) значение) Счетчик достигает верхнего предела счета (вершина счета). В качестве ВП (верхний предел) вершины счета могут выступать фиксированные значения 0x00FF, 0x01FF, 0x03FF или содержимое регистров OCRnA или ICRn .

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

Совместимость этих таймеров соблюдается по следующим позициям:

Адреса всех регистров, связанных с 16-разр. таймером-счетчиком, в т.ч. регистры прерываний • таймеров .

Расположение бит внутри всех регистров 16-разр. таймеров, в т.ч.

регистры прерываний • таймеров Векторы прерываний • У следующих управляющих бит изменены наименования, но сохранено назначение и расположение в регистре:

PWMn0 заменен на WGMn0 .

• PWMn1 заменен на WGMn1 .

• CTCn заменен на WGMn2 .

Ниже приведены регистры, которые были добавлены к 16-разр. таймеру-счетчику:

Регистр управления таймером-счетчиком С (TCCRnC) .

• Регистр С порога сравнения, OCRnCH и OCRnCL (или OCRnC) .

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

COM1C1, COM1C0 добавлены в TCCR1A .

• FOCnA, FOCnB и FOCnC добавлены в новый регистр TCCRnC .

• WGMn3 добавлен в TCCRnB .

• Добавлены флаг прерываний и биты маски прерываний для канала сравнения С. Некоторые • усовершенствования в ряде случаев затрагивают вопрос совместимости .

Доступ к 16-разрядным регистрам Регистры TCNTn, OCRnA/B/C и ICRn являются 16-разрядными, поэтому, доступ к ним через 8-разр. шину данных AVR ЦПУ может быть осуществлен с помощью двух инструкций чтения или записи. У каждого 16разр. таймера имеется свой 8-разр. регистр для временного хранения старшего байта данных. Поэтому, во время доступа к 16-разр. регистрам одного таймера используется один и тот же временный регистр .

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

Не все 16-разрядные регистры используют временный регистр для копирования старшего байта. Чтение 16-разр. регистров OCRnA/B/C не связано с использованием временного регистра .

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

Ниже приведен пример на Ассемблере и Си, показывающие как осуществлять доступ к 16-разр .

регистрам таймера. В примере предполагается, что во время обновления временного регистра не возникает прерываний. Аналогично может быть выполнен доступ к регистрам OCRnA/B/C и ICRn .

Пример кода на Ассемблере(1).. .

; Установка TCNTn = 0x01FF ldi r17,0x01 ldi r16,0xFF out TCNTnH,r17 out TCNTnL,r16 ; Чтение TCNTn в r17:r16 in r16,TCNTnL in r17,TCNTnH.. .

Пример кода на Си(1) unsigned int i;

.. .

/* Установка TCNTn = 0x01FF */ TCNTn = 0x1FF;

/* Чтение TCNTn в i */ i = TCNTn;

.. .

Прим: 1. При разработке примеров предполагалось, что подключен файл специфических заголовков .

Если адресуемый регистр ввода-вывода расположен в расширенной памяти ввода-вывода, то инструкции IN, OUT, SBIS, SBIC, CBI и SBI необходимо заменить на инструкции доступа к расширенной памяти ввода-вывода LDS и STS совместно с инструкциями SBRS, SBRC, SBR, и CBR .

В примере на Ассемблере значение TCNTn возвращается парой регистров r17:r16. При этом следует обратить внимание на проблему, которая связана с необходимостью выполнения двух инструкций для получения доступа к 16-разр. регистру. Если после выполнения первой инструкции доступа 16-разр .

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

регистру необходимо запретить прерывания .

В следующем примере показано как корректно выполнить чтение регистра TCNTn без опасности изменения содержимого временного регистра в прерываниях. Аналогично данный пример следует распространять на доступ к регистрам OCRnA/B/C и ICRn .

Пример кода на Ассемблере (1)

TIM16_ReadTCNTn:

; Запомнили состояние общего флага прерываний in r18,SREG ; Запрет прерываний cli ; Чтение TCNTn в r17:r16 in r16,TCNTnL in r17,TCNTnH ; Восстановили состояние общего флага прерываний out SREG,r18 ret Пример кода на Си (1) unsigned int TIM16_ReadTCNTn( void ) { unsigned char sreg;

unsigned int i;

/* Запомнили состояние общего флага прерываний */ sreg = SREG;

/* Запретили прерывания */ _CLI();

/* Чтение TCNTn в i */ i = TCNTn;

/* Восстановили состояние общего флага прерываний */ SREG = sreg;

return i;

} Прим: 1. При разработке примеров предполагалось, что подключен файл специфических заголовков .

Если адресуемый регистр ввода-вывода расположен в расширенной памяти ввода-вывода, то инструкции IN, OUT, SBIS, SBIC, CBI и SBI необходимо заменить на инструкции доступа к расширенной памяти ввода-вывода LDS и STS совместно с инструкциями SBRS, SBRC, SBR, и CBR .

В коде на Ассемблере значение регистра TCNTn возвращается парой регистров r17:r16. В следующем примере показано как избежать опасного влияния изменения содержимого временного регистра при возникновении прерывания во время записи в регистр TCNTn. На этом же принципе может быть выполнена запись в регистры OCRnA/B/C или ICRn .

Пример кода на Ассемблере (1)

TIM16_WriteTCNTn:

; Запомнили состояние общего флага прерываний in r18,SREG ; Запрет прерываний cli ; Копирование TCNTn в r17:r16 out TCNTnH,r17 out TCNTnL,r16 ; Восстановили состояние общего флага прерываний out SREG,r18 ret Пример кода на Си (1) void TIM16_WriteTCNTn( unsigned int i ) { unsigned char sreg;

unsigned int i;

/* Запомнили состояние общего флага прерываний */ sreg = SREG;

/* Запрет прерываний */ _CLI();

/* Копирование TCNTn в i */ TCNTn = i;

/* Восстановили состояние общего флага прерываний */ SREG = sreg;

} Прим: 1. При разработке примеров предполагалось, что подключен файл специфических заголовков .

Если адресуемый регистр ввода-вывода расположен в расширенной памяти ввода-вывода, то инструкции IN, OUT, SBIS, SBIC, CBI и SBI необходимо заменить на инструкции доступа к расширенной памяти ввода-вывода LDS и STS совместно с инструкциями SBRS, SBRC, SBR, и CBR .

В примере на Ассемблере предполагается, что записываемое значение в TCNTn предварительно записано в пару регистров r17:r16 .

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

выше описание механизма разрешения такой проблемы) .

Тактовые источники таймера-счетчика 1/3 Таймер-счетчик может использовать как внешний, так и внутренний тактовые сигналы. Источник тактового сигнала выбирается соответствующей схемой микроконтроллера под управлением бит выбора синхронизации (CSn2:0), которые находятся в регистре В управления таймером-счетчиком (TCCRnB) .

Более подробная информация по тактовым источникам и предделителю приведена в разделе "Предделители таймера-счетчика 3, таймера-счетчика 2 и таймера-счетчика 1" .

Блок счетчика Основным элементом 16-разр. таймера-счетчика является программируемый реверсивный 16-разрядный счетчик. На рисунке 47 представлена функциональная схема счетчика и окружающих его элементов .

Рисунок 47 Функциональная схема счетчика

Описание внутренних сигналов:

Счет Инкрементирует или декрементирует состояние TCNTn на 1 .

Направление Задает прямой счет (инкрементирование) или обратный счет (декрементирование) .

Сброс Сброс TCNTn (установка всех разрядов к лог. 0) .

clkTn Синхронизация таймера-счетчика .

Верхний предел Сигнализирует о достижении TCNTn максимального значения .

Нижний предел Сигнализирует о достижении TCNTn минимального значения (нуля) .

Содержимое 16-разр. счетчика разбито на две 8-разр. ячейки, расположенных в памяти ввода-вывода:

Старший байт счетчика (TCNTnH), в котором хранятся старшие 8-разрядов счетчика, и младший байт счетчика (TCNTnL), в котором хранятся младшие 8-разрядов. ЦПУ не имеет непосредственного доступа к регистру TCNTnH. Если ЦПУ выполняет доступ к TCNTnH, то фактически обращение происходит к временному регистру. Во временный регистр копируется значение TCNTnH, если выполняется чтение регистра TCNTnL и в TCNTnH копируется содержимое временного регистра, если выполняется запись в TCNTnL. Такой механизм реализован для считывания/записи 16-разр. значения счетчика за один такт ЦПУ в условиях 8-разр. шины данных. Следует обратить внимание, что в некоторых случаях запись в регистр TCNTn во время счета счетчиком будет давать непредсказуемый результат. Такие случаи описаны в последующих параграфах .

В зависимости от используемого режима работы каждый такт синхронизации таймера clkTn счетчик будет сбрасываться, инкрементироваться или декрементироваться. Сигнал clkTn может быть внешним или внутренним, что задается битами выбора синхронизации (CSn2:0). Если тактовый источник не задан (CSn2:0 = 0), то таймер останавливается. Однако содержимое TCNTn остается доступным ЦПУ независимо от наличия синхронизации на clkTn. Если ЦПУ выполняет запись в TCNTn, то тем самым блокируется (запись имеет более высокий приоритет) любое действие счетчика: сброс или счет .

Алгоритм счета определяется значением бит режима работы таймера (WGMn3:0), расположенных в регистрах А и В управления таймером-счетчиком (TCCRnA и TCCRnB). Имеется четкая связь между алгоритмом счета счетчика и формой генерируемого на выходе OCnx сигнала. Боле подробная информация об этом приведена в Режимы работы 16-разр. таймеров-счетчиков .

Установка флага переполнения таймера-счетчика (TOVn) происходит в зависимости выбранного с помощью бит WGMn3:0 режима работы. Флаг TOVn может использоваться для генерации прерывания ЦПУ .

Блок захвата Таймер-счетчик содержит блок захвата, который запоминает состояние счетчика при возникновении внешнего события, тем самым определяя время его возникновения. В качестве события/событий выступает внешний сигнал, подключенный к выводу ICPn. Для таймера-счетчика 1 альтернативно может использоваться аналоговый компаратор в качестве источника внешнего события. Результат захвата состояния таймера может использоваться для вычисления частоты, скважности импульсов и других параметров импульсных сигналов. Альтернативно это значение может использоваться для создания журнала событий .

Функциональная схема блока захвата представлена на рисунке 48. Некоторые блоки на функциональной схеме, которые не относятся напрямую к блоку захвата, залиты серым цветом. Символ n в наименованиях бит и регистров заменяет номер таймера-счетчика .

Рисунок 48 Функциональная схема блока захвата Прим.: Выход аналогового компаратора (ACO) только у таймера-счетчика 1 может выступать в качестве сигнала захвата. У таймера-счетчика 3 эта возможность отсутствует .

Если на входе захвата (ICPn) или альтернативно на выходе аналогового компаратора (ACO) возникает изменение логического уровня (событие), которое соответствует установкам детектора фронта, то выполняется захват состояния таймера. При этом 16-разр. значение содержимого таймера (TCNTn) помещается в регистр захвата (ICRn). Флаг захвата (ICFn) устанавливается на том же такте ЦПУ, на котором произошло копирование значения TCNTn в ICRn. Установка бита TICIEn =1 разрешает прерывание по установке флага захвата. Флаг ICFn автоматически сбрасывается при переходе на вектор прерывания. Альтернативно флаг ICFn сбрасывается программно, если записать в него лог. 1 .

Считывание 16-разр. значения регистра захвата (ICRn) выполняется чтением сначала младшего байта (ICRnL), а затем старшего байта (ICRnH). При выполнении команды чтения младшего байта значение старшего байта автоматически копируется во временный регистр. Если ЦПУ выполняет команду чтения регистра ICRnH, то фактически считывается содержимое временного регистра. Запись в регистр ICRn возможна только в том случае, если битами задания режима работы таймера выбран режим, в котором значение регистра ICRn задает верхний предел счета. В этом случае необходимо выполнить соответствующую установку бит режима работы (WGMn3:0), а только затем выполнить запись значения верхнего предела в регистр ICRn. Запись 16-разр. значения в регистр ICRn выполняется путем записи сначала старшего байта в ICRnH, а только затем младшего байта в ICRnL (см. также Доступ к 16-разр .

регистрам) .

Источник срабатывания механизма захвата Основным источником, инициирующим захват состояния таймер-счетчика, является вывод захвата (ICPn). Таймер-счетчик 1 также альтернативно может использовать выход аналогового компаратора в качестве источника инициации захвата. Для этого необходимо установить бит разрешения захвата аналоговым компаратором (ACIC) в регистре состояния и управления аналогового компаратора (ACSR) .

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

Входные каскады, связанные с выводом захвата (ICPn) и выходом аналогового компаратора (ACO) выполнены по аналогии с каскадом, связанного с выв. Tn (см. рис. 59). Детекторы фронта также идентичны. Однако если разрешена работа подавителя шумов, то последовательно перед детектором фронта включается дополнительная логика, которая реагирует на изменение уровня, если он находился на постоянном уровне не менее 4 тактов ЦПУ. Обратите внимание, что вход подавителя шумов и детектора фронта всегда разрешен, если таймер-счетчик находится в режиме, где ICRn определяет вершину счета .

Захват можно инициировать программно путем управления настройками порта на выводе ICPn .

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

Работа подавителя шума разрешается путем установки бита разрешения подавления шумов на входе захвата (ICNCn) в регистре В управления таймером-счетчиком (TCCRnB). С разрешением работы подавителя шума вводится задержка на 4 такта между возникновением изменения входного уровня и собственно захватом состояния таймера. Подавитель шума использует системную синхронизацию и, следовательно, не зависит от настройки предделителя таймера .

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

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

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

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

Блоки сравнения 16-разрядный цифровой компаратор непрерывно сравнивает значение TCNTn со значением регистра порога сравнения (OCRnx). Если значение TCNT равно OCRnx, то компаратор формирует сигнал совпадения (равенства). Следующий за совпадением такт ЦПУ устанавливает флаг сравнения (OCFnx) .

Если бит OCIEnx = 1, то установка флага сравнения приведет к генерации прерывания по результату сравнения. Флаг OCFnx автоматически сбрасывается после перехода на вектор обработки прерывания .

Альтернативно флаг OCFnx сбрасывается программно, если записать в него лог. 1. Сигнал совпадения используется формирователем выходного сигнала, результирующая форма которого зависит от выбранного с помощью бит WGMn3:0 режима работы таймера и режима формирования импульсов (биты COMnx1:0). Сигналы ВЕРХНИЙ ПРЕДЕЛ и НИЖНИЙ ПРЕДЕЛ используются формирователем импульсов для отработки особых случаев задания экстремальных значений в некоторых режимах работы (см .

Режимы работы 16-разр. таймеров-счетчиков). У канала сравнения А имеется своя отличительная особенность, которая позволяет задать верхний предел счета (т.е. разрешающую способность счетчика) .

В дополнение к разрешающей способности верхний предел определяет период формируемых импульсов. На рисунке 49 показана функциональная схема блока сравнения. Символ n в наименованиях бит и регистров заменяет номер таймера (1 и 3), а x заменяет наименование канала сравнения (A/B/C). Те блоки на функциональной схеме, которые не относятся к блоку сравнения, залиты серым цветом .

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

Доступ к регистру OCRnx хоть и кажется сложным, но выполнен таким образом не случайно. Если двойная буферизация разрешена, то ЦПУ фактически осуществляет доступ к буферному регистру OCRnx. Если же двойная буферизация отключена, то ЦПУ обращается к регистру OCRnx непосредственно. Содержимое регистра OCR1x (в т.ч. и буферного) может измениться только путем непосредственной записи в него (таймер-счетчик не обновляет содержимое данного регистра автоматически аналогично регистрам TCNTn и ICRn). Таким образом, OCRnx считывается напрямую, а не через временный регистр старшего байта. Запись регистров OCRnx происходит через временный регистр, т.к. все 16 разр. участвуют в сравнении непрерывно. Первым необходимо записать старший байт OCRnxH. Если выполняется запись по адресу старшего байта, то содержимое временного регистра обновляется записываемым значением. Если выполняется запись младшего байта (OCRnxL), то параллельно копируется содержимое временного регистра в старшие 8-разрядов буферного регистра OCRnx или регистра порога сравнения OCRnx, тем самым обновляя все 16 разрядов за один такт ЦПУ (см. также "Доступ к 16-разр. регистрам") .

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

Принудительная установка результата сравнения не приводит к установке флага OCFnx или сбросу/перезагрузке таймера, но влияет на состояние вывода OCnx, который будет устанавливаться, сбрасываться или переключаться (инвертироваться) в зависимости от выбранной установки бит COMnx .

Результат сравнения блокируется записью в TCNTn Если ЦПУ осуществляет запись в регистр TCNTn, то результат сравнения будет игнорироваться на следующем такте синхронизации таймера, даже если таймер остановлен. Данная функция позволяет установить в регистре OCRnx то же значение, что и в TCNTn без генерации запроса на прерывание, если разрешено тактирование таймера-счетчика .

Использование блока сравнения Поскольку запись в TCNTn в любом из режимов работы блокирует отработку совпадения на один такт синхронизации таймера, то имеются некоторые опасные ситуации при изменении TCNTn во время использования любого из каналов сравнения, независимо работает таймер-счетчик или нет. Если в TCNTn записано значение равное OCRnx, то возникающее совпадение игнорируется, тем самым вызывая некорректную генерацию импульсов. Следует избегать записи в TCNTn значения равного верхнему пределу в ШИМ-режимах с переменным значением верхнего предела. В этом случае совпадение по достижении верхнего предела игнорируется и счет продолжится до 0xFFFF. Аналогично, следует избегать записи в TCNTn значения равного нижнему пределу, если счетчик работает как вычитающий (обратный счет). Прежде чем настроить вывод OCnx на вывод в регистре направления данных необходимо выполнить инициализацию регистра OCnx. Самым простым способом решения этой задачи является использование бита принудительной установки результата сравнения (FOCnx) при работе таймера в нормальном режиме. Регистр OCnx сохраняет свое состояние даже при изменении режима работы таймера .

Учтите, что биты COMnx1:0 не содержат схемы двойной буферизации и любые их изменения вступают в силу мгновенно .

Блок формирования выходного сигнала Биты задания режима формирования выходного сигнала (COMnx1:0) имеют двойное назначение. С одной стороны биты COMnx1:0 используются формирователем сигнала и определяют какое логическое состояние должно быть на выходе OCnx при возникновении следующего совпадения. С другой стороны, биты COMnx1:0 используются для разрешения/запрета альтернативной функции вывода порта OCnx. На рисунке 50 представлена упрощенная логическая схема, на которую воздействуют биты COMnx1:0. На рисунке показаны только те регистры управления портом ввода-вывода (DDR и PORT), на которые оказывает действие биты COMnx1:0. Если происходит системный сброс, то выход регистра OCnx принимает нулевое состояние .

Рисунок 50 Схема блока формирования выходного сигнала Функция линии универсального порта ввода-вывода заменяется на функцию выхода формирователя сигнала OCnx, если хотя бы один из бит COM01, COM00 установлен (логика ИЛИ). Однако, управление направлением вывода OCnx (вход или выход) в этом случае остается за соответствующим битом регистра направления данных (DDR). Чтобы значение регистра OCnx присутствовало на выводе OCnx необходимо настроить данную линию на вывод (установить соотв. бит в DDRB). Управление вводом альтернативной функции не зависит от режима работы таймера за некоторыми исключениями (см. табл .

58 60) .

Схемотехника выходной логики позволяет инициализировать состояние регистра OCnx перед разрешением настройки вывода OCnx в качестве выхода. Обратите внимание, что в некоторых режимах работы имеются зарезервированные состояния бит COMnx1:0. См. Описание регистров 16-разр .

таймеров-счетчиков. Установки бит COMnx1:0 не оказывают никакого влияния на работу блока захвата .

Режимы генерации импульсов

Установки бит COMnx1:0 оказывают различное влияние в зависимости от выбранного режима работы:

нормального, сброса при совпадении и ШИМ. Общим для всех режимов работы является не выполнение каких-либо действий с регистром OCnx при возникновении совпадения, если COMnx1:0 = 0. В таблице 58 описано действие различных установок этих бит для режимов без ШИМ. Аналогичная информация для режима с быстрой ШИМ приведена в таблице 59, а для ШИМ с фазовой и частотной коррекцией в таблице 60 .

Изменение состояния бит COMnx1:0 вступает в силу при следующем после их записи совпадении. В режимах без ШИМ воздействовать на генерацию импульсов можно с помощью стробирующего бита принудительной установки результата сравнения FOCnx .

Режимы работы Под режимом работы 16-разр. таймера понимается его алгоритм счета и поведение связанного с ним выхода формирователя импульсов, что определяется комбинацией бит, задающих режим работы таймера (WGMn3-0) и режим формирования выходного сигнала (COMnx1:0). При этом биты задания режима формирования выходного сигнала не влияют на алгоритм счета, т.к. алгоритм счета зависит только от состояния бит задания режима работы таймера. В режимах с ШИМ биты COMnx1:0 позволяют включить/отключить инверсию на генерируемом ШИМ-выходе (т.е. выбрать ШИМ с инверсией или ШИМ без инверсии). Для режимов без ШИМ биты COMnx1:0 определяют, какое действие необходимо выполнить при возникновении совпадения: сбросить, установить или инвертировать выход (см. также Блок формирования выходного сигнала и "Временные диаграммы 16-разр. таймеров-счетчиков") .

Нормальный режим работы Самым простым режимом работы является нормальный режим (WGMn3-0 = 0b0000). В данном режиме счетчик работает как суммирующий (инкрементирующий), при этом сброс счетчика не выполняется .

Переполнение счетчика происходит при переходе через максимальное 16-разр. значение (0xFFFF) к нижнему пределу счета (0x0000). В нормальном режиме работы флаг переполнения таймера-счетчика TOVn будет установлен на том же такте синхронизации, когда TCNTn примет нулевое значение .

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

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

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

Режим сброса таймера при совпадении (СТС) В режиме СТС (WGM01, WGM00 =0b10) регистр OCR0 используется для задания разрешающей способности счетчика. Если задан режим CTC и значение счетчика (TCNT0) совпадает со значением регистра OCR0, то счетчик обнуляется (TCNT0=0). Таким образом, OCR0 задает вершину счета счетчика, а, следовательно, и его разрешающую способность. В данном режиме обеспечивается более широкий диапазон регулировки частоты генерируемых прямоугольных импульсов. Он также упрощает работу счетчика внешних событий .

В режиме сброса таймера при совпадении (WGMn3-0 = 0b0100 или 0b1100) разрешающая способность таймера задается регистрами OCRnA или ICRn. В режиме СТС происходит сброс счетчика (TCNTn), если его значение совпадает со значением регистра OCRnA (WGMn3-0 = 0b0100) или с ICRn (WGMn3-0 = 0b1100). Значение регистра OCRnA или ICRn определяет верхний предел счета, а, следовательно, и разрешающую способность таймера. В данном режиме обеспечивается более широкий диапазон регулировки частоты генерируемых прямоугольных импульсов. Он также упрощает работу счетчика внешних событий. Временная диаграмма работы таймера в режиме СТС показана на рисунке 51 .

Счетчик (TCNTn) инкрементирует свое состояние до тех пор, пока не возникнет совпадение со значением OCRnA или ICRn, а затем счетчик (TCNTn) сбрасывается .

Рисунок 51 Временная диаграмма для режима СТС По достижении верхнего предела счета может генерироваться прерывание с помощью флагов OCFnA или ICFn, соответствующим используемым регистрам для задания верхнего предела счета. Если прерывание разрешено, то процедура обработки прерывания может использоваться для обновления верхнего предела счета. Однако, задание значения вершины счета близкого к значению нижнего предела счета, когда счетчик работает без предделения или с малым значением предделения, необходимо выполнять с особой осторожностью, т.к. в режиме СТС нет двойной буферизации. Если значение, записанное в OCRnA или ICRn, меньше текущего значения TCNTn, то сброс счетчика по условию совпадения наступит, когда он достигнет максимального значения (0xFFFF), затем перейдет в исходное состояние 0x0000 и достигнет нового значения OCRnA или ICRn. Во многих случаях возникновение такой ситуации не желательно. В качестве альтернативы может выступить режим быстрой ШИМ, где регистр OCRnA определяет верхний предел счета (WGMn3-0 = 0b1111), т.к. в этом случае OCRnA имеет двойную буферизацию .

Для генерации сигнала в режиме CTC выход OCnA может использоваться для изменения логического уровня при каждом совпадении, для чего необходимо задать режим переключения (COMnA1, COMnA0 = 0b01). Значение OCnA будет присутствовать на выводе порта, только если для данного вывода задано выходное направление. Максимальная частота генерируемого сигнала равна fOC0 = fclk_I/O/2, если OCRnA = 0x0000.

Для других значений OCRn частоту генерируемого сигнала можно определить по формуле:

где переменная N задает коэффициент деления предделителя (1, 8, 32, 64, 128, 256 или 1024) .

Также как и для нормального режима работы, флаг TOV0 устанавливается на том же такте таймера, когда его значение изменяется с 0xFFFF на 0x0000 .

Режим быстрой ШИМ Режим быстрой широтно-импульсной модуляции (ШИМ) (WGMn3-0 = 0b0101, 0b0110, 0b0111, 0b1110, 0b1111) предназначен для генерации ШИМ-импульсов повышенной частоты. В отличие от других режимов работы в этом используется однонаправленная работа счетчика. Счет выполняется в направлении от нижнего к верхнему пределу счета .

Если задан неинвертирующий режим выхода, то при совпадении TCNTn и OCRnx сигнал OCnx устанавливается, а на верхнем пределе счета сбрасывается. Если задан инвертирующий режим, то выход OCnx сбрасывается при совпадении и устанавливается на верхнем пределе счета. За счет однонаправленности счета, рабочая частота для данного режима в два раза выше по сравнению с режимом ШИМ с фазовой коррекцией, где используется двунаправленный счет. Возможность генерации высокочастотных ШИМ сигналов делает использование данного режима полезным в задачах стабилизации питания, выпрямления и цифро-аналогового преобразования. Высокая частота, при этом, позволяет использовать внешние элементы физически малых размеров (индуктивности, конденсаторы), тем самым снижая общую стоимость системы .

Разрешающая способность ШИМ может быть фиксированной 8, 9 или 10 разрядов или задаваться регистром ICRn или OCRnA, но не менее 2 разрядов (ICRn или OCRnA = 0x0003) и не более 16 разрядов (ICRn или OCRnA = 0xFFFF).

Разрешающая способность ШИМ при заданном значении верхнего предела (ВП) вычисляется следующим образом:

В режиме быстрой ШИМ счетчик инкрементируется до совпадения его значения с одним из фиксированных значений 0x00FF, 0x01FF или 0x03FF (если WGMn3:0 = 0b0101, 0b0110 или 0b0111, соответственно), значением в ICRn (если WGMn3:0 = 0b1110) или значением в OCRnA (если WGMn3:0 = 0b1111), а затем сбрасывается следующим тактом синхронизации таймера. Временная диаграмма для режима быстрой ШИМ представлена на рисунке 52. На рисунке показан режим быстрой ШИМ, когда для задания верхнего предела используется регистр OCRnA или ICRn. Значение TCNTn на временной диаграмме показано в виде графика функции для иллюстрации однонаправленности счета. На диаграмме показаны как инвертированный, так и неинвертированный ШИМ-выходы. Короткой горизонтальной линией показаны точки на графике TCNTn, где совпадают значения OCRnx и TCNTnx .

Флаг прерывания OCnx устанавливается при возникновении совпадении .

Рисунок 52 Временная диаграмма для режима быстрой ШИМ Флаг переполнения таймера-счетчика (TOVn) устанавливается всякий раз, когда счетчик достигает верхнего предела. Дополнительно тем же тактовым импульсом вместе с флагом TOVn могут установиться флаги OCnA или ICFn, если для задания верхнего предела используется регистр OCRnA или ICRn, соответственно. Если одно из этих прерываний разрешено, то в процедуре обработки прерывания может быть выполнено обновление верхнего предела счета и порогов сравнения .

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

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

Механизм модификации регистра ICRn отличается от OCRnA в том случае, если он используется для задания верхнего предела. Регистр ICRn не имеет двойной буферизации. Это означает, что если в ICRn записывается малое значение во время работы счетчика с малым предделением или без него, то имеется опасность записи в регистр ICRn значения, которое окажется меньше текущего значения TCNTn .

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

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

Рекомендуется использовать регистр ICRn для задания верхнего предела, если верхний предел счета является константой. В этом случае также освобождается регистр OCRnA для генерации ШИМ-сигнала на выходе OCnA. Однако, если частота ШИМ динамически изменяется (за счет изменения верхнего предела), то в этом случае выгоднее использовать регистр OCRnA для задания верхнего предела, т.к. он поддерживает двойную буферизацию .

В режиме быстрой ШИМ блоки сравнения позволяют генерировать ШИМ-сигналы на выводах OCnx. Если COMnx1:0 =0b10, то задается ШИМ без инверсии выхода, а если COMnx1:0 = 0b11, то задается режим ШИМ с инверсией на выходе (см. таблицу 59). Фактическое значение OCnx можно наблюдать на выводе порта, если для него задано выходное направление (DDR_OCnx). ШИМ-сигнал генерируется путем установки (сброса) регистра OCnx при возникновении совпадения между OCRnx и TCNTn, а также путем сброса (установки) регистра OCnx вместе со сбросом счетчика (переход с верхнего предела на нижний предел) .

Частота ШИМ выходного сигнала для заданного значения верхнего предела (ВП) определяется выражением:

где N переменная, которая задает значение коэффициента предделения (1, 8, 32, 64, 128, 256 или 1024) .

Запись предельных значений в регистр OCRnx связана с особыми случаями в генерации ШИМимпульсов. Если OCRnx установить равным нижнему пределу (0x0000), то на выходе будет возникать короткий импульс каждый (ВП+1)-ый такт синхронизации таймера. Запись в OCRnx значения равного верхнему пределу приведет к установке постоянного уровня лог. 1 или 0 на выходе (зависит от выбранной с помощью бит COMnx1:0 полярности выходного сигнала) .

Если требуется генерация меандра (прямоугольные импульсы со скважностью 2 или заполнением 50%) высокой частоты, то необходимо использовать режим быстрой ШИМ с установкой бит COMnA1:0 = 0b01, которая вызывает переключение (инвертирование) логического уровня на выходе OCnA при каждом совпадении. Данное применимо, только если OCRnA используется для задания верхнего предела (WGMn3-0 =0b1111). Максимальная генерируемая частота меандра в этом случае fOCnA = fclk_I/O/2, если OCRnA =0x0000. Данная особенность аналогична переключению OCnA в режиме СТС за исключением двойной буферизации, которая имеется в режиме быстрой ШИМ .

Режим широтно-импульсной модуляции с фазовой коррекцией Режим широтно-импульсной модуляции с фазовой коррекцией (ШИМ ФК) (WGMn3-0 = 0b0001, 0b010, 0b0011, 0b1010 или 0b1011) предназначен для генерации ШИМ сигнала с фазовой коррекцией и высокой разрешающей способностью. Режим ШИМ ФК основан на двунаправленной работе таймера-счетчика .

Счетчик циклически выполняет счет в направлении от нижнего предела (0x0000) до верхнего предела, а затем обратно от верхнего предела к нижнему пределу. Если задан неинвертирующий режим выхода формирователя импульсов, то выход OCnx сбрасывается/устанавливается при совпадении значений TCNTn и OCRnx во время прямого/обратного счета. Если задан инвертирующий режим выхода, то, наоборот, во время прямого счета происходит установка, а во время обратного сброс выхода OCnx .

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

Разрешающая способность ШИМ в данном режиме может быть либо фиксированной (8, 9 или 10 разрядов) либо задаваться с помощью регистра ICRn или OCRnA. Минимальная разрешающая способность равна 2-м разрядам (ICRn или OCRnA = 0x0003), а максимальная -16-ти разрядам (ICRn или OCRnA =0xFFFF).

Если задан верхний предел, то разрешающая способность ШИМ в данном режиме определяется следующим образом:

В режиме ШИМ ФК счетчик инкрементируется пока не достигнет одного из фиксированных значений 0x00FF, 0x01FF или 0x03FF (соответственно для WGMn3-0 = 0b0001, 0b0010 или 0b0011), а также значения равного ICRn (если WGMn3-0 = 0b1010) или OCRnA (если WGMn3:0 = 0b1011). Далее, при достижении верхнего предела, счетчик изменяет направление счета. Значение TCNTn остается равным верхнему пределу в течение одного такта синхронизации таймера. Временная диаграмма для режима ШИМ ФК представлена на рисунке 53. На рисунке показан режим ШИМ ФК с использованием регистра OCRnA или ICRn для задания верхнего предела. Состояние TCNTn представлено в виде графика функции для иллюстрации двунаправленности счета. На рисунке представлены, как неинвертированный, так и инвертированный ШИМ-выход. Короткие горизонтальные линии указывают точки на графике изменения TCNTn, где возникает совпадение со значением OCRnx. Флаг прерывания OCnx устанавливается при возникновении совпадения .

Рисунок 53 Временная диаграмма для режима ШИМ ФК Флаг переполнения таймера-счетчика (TOVn) устанавливается всякий раз, когда счетчик достигает нижнего предела. Если для задания верхнего предела используется регистр OCRnA или ICRn, то, соответственно устанавливается флаг OCnA или ICFn тем же тактовым импульсом, на котором произошло обновление регистра OCRnx из буферного регистра (на вершине счета). Флаги прерывания могут использоваться для генерации прерывания по достижении счетчиком нижнего или верхнего предела .

При изменении значения верхнего предела счета необходимо следить, чтобы оно было больше или равно значениям во всех регистрах сравнения. В противном случае совпадение между TCNTn и OCRnx никогда не возникнет. Обратите внимание, что при использовании фиксированных значений верхнего предела счета во время записи в регистры OCRnx неиспользуемые разряды обнуляются. Третий период на рисунке 53 иллюстрирует случай, когда динамическое изменение верхнего предела счета приводит к генерации несимметричного импульса. Данная особенность основывается на времени обновления регистра OCRnx. Поскольку, обновление OCRnx возникает на вершине счета, то и период ШИМ начинается и заканчивается на вершине счета. Это подразумевает, что длительность обратного счета определяется предыдущим значением верхнего предела, а прямого новым значением верхнего предела. Если два этих значения разные, то и длительность прямого и обратного счета будет также отличаться. Различие в длительности приводит несимметричности выходных импульсов .

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

В режиме ШИМ ФК блоки сравнения позволяют генерировать ШИМ-сигналы на выводах OCnx. Если установить COMnx1:0 = 0b10, то выход ШИМ будет без инверсии, а если COMnx1:0=0b11, то с инверсией (см. таблицу 60). Фактическое значение OCnx можно наблюдать на выводе порта, если в регистре направления данных для данного вывода порта задано выходное направление (DDR_OCnx). ШИМсигнал генерируется путем установки (сброса) регистра OCnx при совпадении значений OCRnx и TCNTn во время прямого счета, а также путем сброса (установки) регистра OCnx при совпадении между OCRnx и TCNTn во время обратного счета.

Результирующая частота ШИМ-сигнала в режиме ШИМ ФК при заданном верхнем пределе (ВП) может быть вычислена по следующему выражению:

где N коэффициент деления предделителя (1, 8, 32, 64, 128, 256 или 1024) .

Запись предельных значений в регистр OCRnx связано с особыми случаями в генерации ШИМ-сигналов в режиме ШИМ ФК. Если задать режим ШИМ без инверсии и OCRnx установить равным нижнему пределу, то на выходе непрерывно будет установлен лог. 0, а если равным верхнему пределу, то на выходе постоянно присутствует лог. 1. Для ШИМ с инверсией указанные уровни необходимо заменить противоположными .

Если задать использование OCnA в качестве верхнего предела (WGMn3:0 = 0b1011) и установить COMnA1:0 =0b01, то на выходе OCnA будет генерироваться меандр .

Режим широтно-импульсной модуляции с фазовой и частотной коррекцией Режим широтно-импульсной модуляции с фазовой и частотной коррекцией (ШИМ ФЧК) (WGMn3-0 = 0b1000 или 0b1001) предназначен для генерации ШИМ-импульсов высокой разрешающей способности с фазовой и частотной коррекцией. Также как и режим ШИМ ФК режим ШИМ ФЧК основан на двунаправленной работе счетчика. Счетчик циклически считает от нижнего предела (0x0000) до верхнего предела, а затем обратно от верхнего предела к нижнему пределу. Если задан неинвертирующий режим ШИМ, то выход OCnx сбрасывается, если возникает совпадение между TCNTn и OCRnx во время прямого счета, и устанавливается, если возникает совпадение во время обратного счета. В инвертирующем режиме работа инверсная. Двунаправленная работа, по сравнению с однонаправленной, связана с генерацией более низких частот. Однако, благодаря симметричности в режимах ШИМ с двунаправленным счетом, их применение предпочтительно в задачах управления приводами .

Основное отличие между режимами ШИМ ФК и ШИМ ФЧК состоит в моменте обновления регистра OCRnx из буферного регистра OCRnx (см. рисунок 53 и рисунок 54) .

Разрешающая способность ШИМ в этом режиме может задаваться с помощью регистра ICRn или OCRnA. Минимальная разрешающая способность равна 2-ум разрядам (ICRn или OCRnA = 0x0003), а максимальная разрешающая способность - 16-ти разрядам (ICRn или OCRnA = 0xFFFF).

Разрешающая способность ШИМ в разрядах может быть вычислена по следующему выражению:

В режиме ШИМ ФЧК счетчик инкрементируется до совпадения со значением в ICRn (WGMn3:0 = 0b1000) или в OCRnA (WGMn3:0 = 0b1001). Это означает достижение вершины счета, после чего происходит изменение направления счета. Значение TCNTn остается равным вершине счета в течение одного такта синхронизации таймера. Временная диаграмма для режима ШИМ ФЧК показана на рисунке 54. На рисунке показан режим ШИМ ФЧК, когда вершину счета задает регистр OCRnA или ICRn. Значение TCNTn показано в виде графика функции для иллюстрации двунаправленности счета. На диаграмме показан как неинвертирующий, так и инвертирующий ШИМ выходы. Короткие горизонтальные линии указывают на точки график TCNTn, где возникает совпадение между OCRnx и TCNTn. Флаг прерывания OCnx устанавливается после возникновения совпадения .

Рисунок 54 Временная диаграмма режима ШИМ с фазовой и частотной коррекцией Флаг переполнения таймера-счетчика (TOVn) устанавливается тем же тактом, когда произошло обновление регистров значением из буферного регистра (на нижнем пределе счета). Если для задания верхнего предела используется регистр OCRnA или ICRn, то по достижении счетчиком верхнего предела устанавливается флаг OCnA или ICFn, соответственно. Флаги прерывания могут использоваться для генерации прерывания при достижении счетчиком верхнего или нижнего предела .

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

На рисунке 54 показано, что в отличие от режима ШИМ ФК, генерируемый выходной сигнал симметричен на всех периодах. Поскольку, регистры OCRnx обновляются на нижнем пределе счета, то длительности прямого и обратного счетов всегда равны. В результате выходные импульсы имеют симметричную форму, а, следовательно, и откорректированную частоту .

Использование регистра ICRn для задания верхнего предела рекомендуется, если значение верхнего предела является константой. В этом случае также освобождается регистр OCRnA для широтноимпульсной модуляции импульсов на выводе OCnA. Однако если требуется динамическое изменение частоты ШИМ за счет изменения верхнего предела, то для задания верхнего предела рекомендуется использовать регистр OCRnA за счет наличия у него двойной буферизации .

В режиме ШИМ ФЧК блоки сравнения позволяют генерировать ШИМ-импульсы на выводе OCnx. Если COMnx1:0 = 0b10, то задается неинвертирующий ШИМ выход, а, если COMnx1:0=0b11, то инвертирующий (см. таблицу 60). Значение OCnx будет присутствовать на соответствующем выводе порта только в случае, если для него задано выходное направление. ШИМ сигнал генерируется путем установки (сброса) регистра OCnx при совпадении между OCRnx и TCNTn во время прямого счета и сброса (установки) регистра OCnx при совпадении между OCRnx и TCNTn во время обратного счета .

Частота ШИМ в данном режиме при заданном верхнем пределе (ВП) счета определяется следующим образом:

где N коэффициент деления предделителя (1, 8, 32, 64, 128, 256 или 1024) .

Запись предельных значений в регистр OCRnx связана с особыми случаями в генерации ШИМ-сигналов в данном режиме. Если задать OCRnx равным нижнему пределу (0x0000), то в неинвертирующем режиме на выходе будет постоянного присутствовать низкий логический уровень, а при записи значения равного верхнему пределу на выходе будет длительно присутствовать высокий логический уровень. В инвертирующем режиме приведенные уровни будут противоположными .

Если OCRnA используется для задания верхнего предела (WGMn3:0 = 0b1001) и COMnA1:0 = 0b01, то на выходе OCnA будет генерироваться меандр .

Временные диаграммы 16-разрядных таймеров-счетчиков 16-разрядные таймеры выполнены по синхронной схеме, поэтому, сигнал синхронизации таймера (clkTn) на следующих рисунках показан как разрешающий сигнал. На рисунках также представлена информация по моментам установки флагов прерываний и обновления регистра OCRnx значением из буферного регистра OCRnx (только для режимов с двойной буферизацией). На рисунке 55 представлена временная диаграмма с установкой флага OCFnx. На рисунке 56 представлена аналогичная диаграмма, но с разрешенным предделением. На рисунке 57 иллюстрируется алгоритм счета в районе верхнего предела в различных режимах. Если используется режим ШИМ ФЧК, то регистр OCRnx обновляется на нижнем пределе. В этом случае временная диаграмма будет такой же, но ВП необходимо заменить на НП, ВП-1 на НП+1 и т.д. Аналогичные переименования необходимо применить в режимах, где флаг TOVn устанавливается на нижнем пределе. На рисунке 58 приведена аналогичная предыдущей временная диаграмма, но с разрешенным предделением .

Рисунок 55 Временная диаграмма таймера-счетчика без предделения с установкой OCFnx Рисунок 56 Временная диаграмма таймера-счетчика с предделением на 8 (fclk_I/O/8) и установкой OCFnx Рисунок 57 Временная диаграмма таймера-счетчика без предделения Рисунок 58 - Временная диаграмма таймера-счетчика с предделением на 8 (fclk_I/O/8) Описание регистров 16-разрядных таймеров-счетчиков Регистр А управления таймером-счетчиком 1 TCCR1A Разряд 7 6 5 4 3 2 1 0 COM1A1 COM1A0 COM1B1 COM1B0 COM1C1 COM1C0 WGM11 WGM10 TCCR1A Чтение/за Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп .

пись Исх .

значение Регистр А управления таймером-счетчиком 3 TCCR3A Разряд 7 6 5 4 3 2 1 0 COM3A1 COM3A0 COM3B1 COM3B0 COM3C1 COM3C0 WGM31 WGM30 TCCR3A Чтение/за Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп .

пись Исх .

значение Разряды 7:6 COMnA1:0: Режим формирования выходного сигнала канала A Разряды 5:4 COMnB1:0: Режим формирования выходного сигнала канала В Разряды 3:2 COMnC1:0: Режим формирования выходного сигнала канала С Биты COMnA1:0, COMnB1:0 и COMnC1:0 влияют на работу выводов OCnA, OCnB и OCnC, соответственно. Если один или оба бита COMnA1:0 равны 1, то вывод OCnA переходит к выполнению альтернативной функции, запрещая его работу как обычного порта ввода-вывода. Аналогичные изменения происходят с выводами OCnB и OCnC во время записи лог. 1 в один из битов COMnB1:0 и COMnC1:0, соответственно. Однако необходимо учитывать, что остается влияние на работу данных выводов со стороны регистра направления данных (DDR) и в соответствующих разрядах этого регистра должно быть задано выходное направление для выводов OCnA, OCnB или OCnC .

Если выбрано подключение сигналов OCnA, OCnB или OCnC к выводам микроконтроллера, то назначение бит COMnx1:0 определяется выбранным с помощью бит WGMn3:0 режима работы таймерасчетчика. В таблице 58 показано назначение бит COMnx1:0, когда битами WGMn3:0 выбран режим сброса при совпадении (СТС) или нормальный режим, т.е. режимы без ШИМ .

Таблица 58 Режимы формирования выходного сигнала в режимах работы таймера без ШИМ

–  –  –

Разряд 7 6 5 4 3 2 1 0 ICNC3 ICES3 - WGM33 WGM32 CS32 CS31 CS30 TCCR3B Чтение/запись Чт./Зп. Чт./Зп. Чт. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп .

Исх. значение 0 0 00 0 0 0 0 Разряд 7 ICNCn: Подавитель шума на входе захвата Установка данного бита (запись лог. 1) активизирует подавитель шума на входе захвата. После активизации подавителя шумов сигнал с вывода ICPn пропускается через фильтр. Логика работы фильтра состоит в определении четырех подряд равных по значению выборок и только в этом случае изменении своего выходного состояния. Следовательно, после разрешения подавления шумов сигнал с входа захвата будет задерживаться на 4 такта системной синхронизации .

Разряд 6 ICESn: Выбор детектируемого фронта на входе захвата Данный бит позволяет задать, какой фронт на входе захвата ICPn приведет к захвату состояния таймера .

Если ICESn =0, то падающий (отрицательный) фронт приводит к захвату состояния таймера, а если же ICESn = 1, то нарастающий (положительный) фронт приводит к возникновению захвата .

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

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

Разряд 5 Зарезервированный бит Данный бит зарезервирован для дальнейшего использования. В целях совместимости с будущими разработками рекомендуется во время записи в регистр TCCRnB в данном разряде указывать лог. 0 .

Разряд 4:3 WGMn3:2: Режим работы таймера-счетчика См. описание регистр TCCRnA .

Разряд 2:0 CSn2:0: Выбор тактового источника Данный три бита позволяют выбрать тактовый источник для таймера-счетчика (см. рисунок 55 и рисунок 56) .

Таблица 62 Описание бит выбора тактового источника

–  –  –

Разряд 7 6 5 4 3 2 1 0 FOC1A FOC1B FOC1C - - - - - TCCR1C Чтение/запись Зп. Зп. Зп. Чт. Чт. Чт. Чт. Чт .

Исх. значение 0 0 0 0000 0 Регистр С управления таймером-счетчиком 3 TCCR3C Разряд 7 6 5 4 3 2 1 0 FOC3A FOC3B FOC3C - - - - - TCCR3C Чтение/запись Зп. Зп. Зп. Чт. Чт. Чт. Чт. Чт .

Исх. значение 0 0 0 00000 Разряд 7 FOCnA: Бит принудительной установки результата сравнения для канала A Разряд 6 FOCnB: Бит принудительной установки результата сравнения для канала B Разряд 5 FOCnC: Бит принудительной установки результата сравнения для канала C Биты FOCnA/FOCnB/FOCnC становятся активными, когда с помощью бит WGMn3:0 выбран режим без ШИМ. В этом случае запись в FOCnA/FOCnB/FOCnC лог. 1 приводит к немедленной установке результата сравнения на входе блока формирователя сигнала. Выход OCnA/OCnB/OCnC изменяется в соответствии с установками бит COMnx1:0. Обратите внимание, что биты FOCnA/FOCnB/FOCnC реализованы как стробы. Стробы FOCnA/FOCnB/FOCnC не генерируют каких-либо прерываний и сбрасывают счетчик в режиме сброса таймера при совпадении (CTC), где OCRnA используется для задания вершины счета .

При чтении бит FOCnA/FOCnB/FOCnB всегда возвращается нулевое значение .

Разряды 4:0 Зарезервированные биты Данные биты зарезервированы для дальнейшего использования. В целях совместимости с последующими разработками во время записи в регистр TCCRnC необходимо записывать лог. 0 .

Таймер-счетчик 1 TCNT1H и TCNT1L

–  –  –

Разряд 7 6 5 4 3 2 1 0 OCR3C [15:8] OCR3CH OCR3C [7:0] OCR3CL Чтение/запись Зп./Чт. Зп./Чт. Зп./Чт. Зп./Чт. Зп./Чт. Зп./Чт. Зп./Чт. Зп./Чт .

Исх. значение 0 0 0 0 0 0 0 0 В регистрах сравнения хранится 16-разр. значение, которое непрерывно сравнивается со значением счетчика (TCNTn). Возникающее совпадение может использоваться для генерации прерывания по результату сравнения и генерации прямоугольных импульсов на выводе OCnx .

Регистры сравнения являются 16-разрядными, поэтому, одновременность записи младшего и старшего байтов достигнута за счет использования 8-разр. временного регистра старшего байта (TEMP) .

Временный регистр является общим для всех 16-разрядных регистров таймера (см. также Доступ к 16разр. регистрам) .

Регистр захвата 1 ICR1H и ICR1L Разряд 7 6 5 4 3 2 1 0 ICR1C [15:8] ICR1CH ICR1C [7:0] ICR1CL Чтение/запись Зп./Чт. Зп./Чт. Зп./Чт. Зп./Чт. Зп./Чт. Зп./Чт. Зп./Чт. Зп./Чт .

Исх. значение 0 0 0 0 0 0 0 0 Регистр захвата 3 ICR3H и ICR3L Разряд 7 6 5 4 3 2 1 0 ICR3C [15:8] ICR3CH ICR3C [7:0] ICR3CL Чтение/запись Зп./Чт. Зп./Чт. Зп./Чт. Зп./Чт. Зп./Чт. Зп./Чт. Зп./Чт. Зп./Чт .

Исх. значение 0 0 0 0 0 0 0 0 Регистры захвата обновляются содержимым соответствующего счетчика (TCNTn) при каждом определении условия захвата на входе ICPn (или альтернативно на выходе аналогового компаратора для таймера-счетчика 1) .

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

Регистры захвата также являются 16-разрядными, поэтому, одновременность записи младшего и старшего байтов достигнута за счет использования 8-разр. временного регистра старшего байта (TEMP) .

Временный регистр является общим для всех 16-разрядных регистров таймера (см. также Доступ к 16разр. регистрам) .

Регистр маски прерываний таймера-счетчика TIMSK Разряд 7 6 5 4 3 2 1 0 OCIE2 TOIE2 TICIE1 OCIE1A OCIE1B TOIE1 OCIE0 TOIE0 TIMSK Чтение/запись Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп .

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

Разряд 5 TICIE1: Разрешение прерывания по захвату состояния таймера-счетчика 1 Если в данный бит записана лог. 1, а также установлен флаг I в регистре статуса (активно общее разрешение прерываний), то разрешается прерывание по захвату состояния таймера-счетчика 1. Если устанавливается флаг в регистре TIFR, программа переходит на соответствующий вектор прерывания (см. раздел "Прерывания") .

Разряд 4 OCIE1A: Разрешение прерывания по результату сравнения канала А таймера-счетчика 1 Если в данный бит записана лог. 1 и установлен флаг I в регистре статуса, то разрешается работа прерывания по результату сравнения канала A. Если устанавливается флаг OCF1A в регистре TIFR, то программа переходит на соответствующий вектор прерываний (см. раздел "Прерывания") .

Разряд 3 OCIE1В: Разрешение прерывания по результату сравнения канала В таймера-счетчика 1 Действие аналогично предыдущему, но в отношении канала сравнения В .

Разряд 2 TOIE1: Разрешение прерывания при переполнении таймера-счетчика 1 Если в данный бит записана лог. 1 и установлен флаг I в регистре статуса, то разрешается прерывание по переполнению таймера-счетчика 1. После этого, установка флага TOV1 в регистре TIFR приведет к переходу на соответствующий вектор прерывания .

Расширенный регистр маски прерываний таймера-счетчика ETIMSK Разряд 7 6 5 4 3 2 1 0

- - TICIE3 OCIE3A OCIE3B TOIE3 OCIE3C TOIE3C ETIMSK Чтение/запись Чт. Чт. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп .

Исх. значение 0 0 0 0 0 0 0 0 Прим.: Данный регистр не доступен в режиме совместимости с ATmega103 .

Разряд 7:6 Зарезервированные биты Данные биты зарезервированы для дальнейшего использования. В целях совместимости с последующими версиями во время записи в регистр в данный бит необходимо записывать лог. 0 .

Разряд 5 TICIE3: Разрешение прерывания по захвату состояния таймера-счетчика 3 Если в данный бит записана лог. 1 и установлен флаг I в регистре статуса, то разрешается работа прерывания по захвату состояния таймера-счетчика 3. Если устанавливается флаг ICF3 в регистре ETIFR, то программа переходит на соответствующий вектор прерывания (см. раздел "Прерывания") .

Разряд 4 OCIE3A: Разрешение прерывания по результату сравнения канала А таймера-счетчика 3 Если данный бит равен 1 и установлен флаг I в регистре статуса, то разрешается работа прерывания по результату сравнения канала А таймера-счетчика 3. Если устанавливается флаг OCF3A в регистре ETIFR, то программа переходит на соответствующий вектор прерывания (см. раздел "Прерывания") .

Разряд 3 OCIE3B: Разрешение прерывания по результату сравнения канала B таймера-счетчика 3 Аналогично предыдущему, но по отношению к каналу В .

Разряд 2 TOIE3: Разрешение прерывания по переполнению таймера-счетчика Если в данный бит записана лог. 1 и установлен флаг I в регистре статуса, то разрешается прерывание по переполнению таймера-счетчика 3. После этого, установка флага TOV3 в регистре ETIFR приведет к переходу на соответствующий вектор прерывания (см. раздел "Прерывания") .

Разряд 1 OCIE3C: Разрешение прерывания по результату сравнения канала С таймера-счетчика 3 Если данный бит равен 1 и установлен флаг I в регистре статуса, то разрешается работа прерывания по результату сравнения канала С таймера-счетчика 3. Если устанавливается флаг OCF3C в регистре ETIFR, то программа переходит на соответствующий вектор прерывания (см. раздел "Прерывания") .

Разряд 0 OCIE3C: Разрешение прерывания по результату сравнения канала С таймера-счетчика 1 Если данный бит равен 1 и установлен флаг I в регистре статуса, то разрешается работа прерывания по результату сравнения канала С таймера-счетчика 1. Если устанавливается флаг OCF1C в регистре ETIFR, то программа переходит на соответствующий вектор прерывания (см. раздел "Прерывания") .

Регистр флагов прерываний таймеров-счетчиков TIFR Разряд 7 6 5 4 3 2 1 0 OCF2 TOV2 ICF1 OCF1A OCF1B TOV1 OCF0 TOF0 TIFR Чтение/запись Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп .

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

Разряд 5 ICF1: Флаг захвата состояния таймера-счетчика 1 Флаг устанавливается, если на входе ICP1 определяется условие захвата. Если регистр захвата ICR1 выбран с помощью бит WGMn3:0 в качестве источника верхнего предела счета, флаг ICF1 устанавливается по достижении верхнего предела счета .

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

Разряд 4 OCF1A: Флаг результата сравнения канала А таймера-счетчика 1 Данный флаг устанавливается следующим тактом после совпадения значения TCNT1 с регистром А порога сравнения (OCR1A) .

Обратите внимание, что строб принудительной установки результата сравнения (FOC1A) не устанавливает флаг OCF1A. Флаг OCF1A автоматически сбрасывается при переходе на соответствующий вектор прерывания. Альтернативно, флаг OCF1A сбрасывается путем записи в него лог. 1 .

Разряд 3 OCF1B: Флаг результата сравнения канала B таймера-счетчика 1 Данный флаг действует аналогично предыдущему, но в отношении канала сравнения В .

Разряд 2 TOV1: Флаг переполнения таймера-счетчика 1 Установка данного флага зависит от значений бит WGMn3:0. В нормальном режиме и режиме СТС флаг TOV1 устанавливается при переполнении таймера-счетчика. См. табл. 61 для изучения поведения флага TOV1 при задании других значений WGMn3:0. Флаг TOV1 автоматически сбрасывается при переходе на вектор прерывания по переполнению таймера-счетчика 1. Альтернативно флаг TOV1 сбрасывается путем записи в него лог. 1 .

Расширенный регистр флагов прерываний таймеров-счетчиков ETIFR Разряд 7 6 5 4 3 2 1 0

- - ICF3 OCF3A OCF3B TOV3 OCF3C OCF1C ETIFR Чтение/запись Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп .

Исх. значение 0 0 0 0 0 0 0 0 Разряды 7:6 Зарезервированные биты Данные биты зарезервированы для дальнейшего использования. В целях совместимости с последующими версиями необходимо в данные разряды записывать лог. 0 во время записи в регистр ETIFR .

Разряд 5 ICF3: Флаг захвата состояния таймера-счетчика 3 Флаг устанавливается, если на входе ICP3 определяется условие захвата. Если регистр захвата ICR3 выбран с помощью бит WGM3:0 в качестве источника верхнего предела счета, то флаг ICF3 устанавливается по достижении верхнего предела счета .

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

Разряд 4 OCF3A: Флаг результата сравнения канала А таймера-счетчика 3 Данный флаг устанавливается следующим тактом после совпадения значения TCNT3 с регистром А порога сравнения (OCR3A) .

Обратите внимание, что строб принудительной установки результата сравнения (FOC3A) не устанавливает флаг OCF3A. Флаг OCF3A автоматически сбрасывается при переходе на соответствующий вектор прерывания. Альтернативно, флаг OCF3A сбрасывается путем записи в него лог. 1 .

Разряд 3 OCF3B: Флаг результата сравнения канала B таймера-счетчика 3 Действует аналогично предыдущему, но в отношении канала В таймера-счетчика 3 .

Разряд 2 TOV3: Флаг переполнения таймера-счетчика 3 Установка данного флага зависит от значений бит WGM3:0. В нормальном режиме и режиме СТС флаг TOV3 устанавливается при переполнении таймера-счетчика. См. табл. 61 для изучения поведения флага TOV3 при задании других значений WGM3:0. Флаг TOV3 автоматически сбрасывается при переходе на вектор прерывания по переполнению таймера-счетчика 3. Альтернативно флаг TOV3 сбрасывается путем записи в него лог. 1 .

Разряд 1 OCF3C: Флаг результата сравнения канала С таймера-счетчика 3 Данный флаг устанавливается следующим тактом после совпадения значения TCNT3 с регистром С порога сравнения (OCR3С) .

Обратите внимание, что строб принудительной установки результата сравнения (FOC3С) не устанавливает флаг OCF3С. Флаг OCF3С автоматически сбрасывается при переходе на соответствующий вектор прерывания. Альтернативно, флаг OCF3С сбрасывается путем записи в него лог. 1 .

Разряд 0 OCF1C: Флаг результата сравнения канала С таймера-счетчика 1 Действует аналогично предыдущему, но в отношении TCNT1 и канала С таймера 1 .

Предделители таймеров-счетчиков 1, 2 и 3 Таймеры-счетчики 1, 2 и 3 используют один и тот же модуль предделителя, но могут использовать различные установки предварительного деления. Приведенное ниже описание распространяется на все упомянутые таймеры .

Внутренний тактовый источник Тактовый вход таймера-счетчика может быть непосредственно связан с системной синхронизацией, если установить CSn2:0 = 1. В данном случае достигается максимально быстрая работа таймера-счетчика на системной частоте fCLK_I/O. Альтернативно четыре производных тактовых сигнала на выходе предделителя могут использоваться в качестве тактового источника. Поделенный тактовый сигнал имеет частоту fCLK_I/O/8, fCLK_I/O/64, fCLK_I/O/256 или fCLK_I/O/1024 .

Сброс предделителя Предделитель является самым простым нереверсивным счетчиком, т.е. работает независимо от логики выбора синхронизации таймера-счетчика и является общим для таймеров 1, 2 и 3. Поскольку логика выбора синхронизации не влияет на таймер-счетчик, то в случае использования предделителя его состояние будет неопределенным. Как пример можно привести неопределенность, которая возникает после разрешения работы таймера, тактируемого через предделитель с настройкой (6 CSn2:0 1) .

Количество системных тактов с момента разрешения работы таймера до возникновения первого счетного импульса может быть от 1 до N+1, где N коэффициент деления предделителя (8, 64, 256 или 1024) .

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

Внешний тактовый источник Внешний сигнал, подключенный к выводу Tn, может использоваться как тактовый для таймеровсчетчиков (clkT1/clkT2/clkT3). Вывод Tn опрашивается каждый такт системной синхронизации логикой синхронизации данного вывода. Считанный таким образом сигнал проходит через детектор фронта. На рисунке 59 представлена функциональная схема синхронизации Tn и логики детектора фронта. Регистры тактируются положительным фронтом внутренней системной синхронизации (clkI/O). Детектор фронта генерирует один тактовый импульс clkT1/clkT2/clkT3 при определении положительного (CSn2:0 = 7) или отрицательного (CSn2:0 = 6) фронта .

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

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

Для корректной работы логики преобразования каждый полупериод внешнего тактового сигнала должен быть больше одного периода системной синхронизации. Таким образом, внешний тактовый сигнал должен быть меандром (скважность 2) с частотой минимум вдвое меньшей системной (fExtClk fclk_I/O/ 2). Т.к. детектор фронта использует преобразование, то максимальная частота, которую он может определить, равна половине частоты преобразования (теорема преобразования Найквиста). Однако, вследствие изменения частоты системной синхронизации и скважности, вызванных погрешностями тактового генератора (погрешности кварцевого резонатора, керамического резонатора или конденсаторов) рекомендуется, чтобы максимальная частота внешнего тактового сигнала была не более fclk_I/O/2.5 .

Частота внешнего тактового сигнала не может быть поделена внутренним предделителем .

Рисунок 60 Предделитель таймеров-счетчиков 1, 2 и 3 Прим.: логика синхронизации на входах T3/T2/T1 показана на рисунке 59 .

Регистр специальных функций ввода-вывода SFIOR Разряд 7 6 5 4 3 2 1 0 TSM - - - ACME PUD PSR0 PSR321 SFIOR Чтение/запись Чт./Зп. Чт. Чт. Чт. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп .

Исх. значение 0 0000 0 0 0 Разряд 7 TSM: Режим синхронизации таймеров-счетчиков Запись в данный бит лог. 1 активизирует режим синхронизации таймеров-счетчиков. В этом режиме запоминаются значения, записанные в биты PSR0 и PSR321, следовательно, запоминаются состояния соответствующих сигналов сброса предделителей. Этим гарантируется, что все соответствующие таймеры будут остановлены и им можно присвоить одинаковые значения без опасности их модификации в процессе конфигурации. Если в бит TSM записать лог. 0, то биты PSR0 и PSR321 сбросятся аппаратно и таймеры-счетчики начнут счет одновременно .

Разряд 0 PSR321: Сброс предделителя таймеров-счетчиков 1, 2 и 3 Если данный бит равен лог. 1, то предделитель таймеров-счетчиков 1, 2 и 3 будет сброшен. Данный бит обычно сразу сбрасывается аппаратно за исключением, когда установлен бит TSM. Обратите внимание, что таймеры-счетчики 1, 2 и 3 используют один и тот же предделитель и сброс этого предделителя оказывает влияние на все три таймера .

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

Отличительные особенности:

10-разрядное разрешение • Интегральная нелинейность 0.5 мл. разр .

• Абсолютная погрешность 2 мл. разр .

• Время преобразования 65 - 260 мкс .

• Частота преобразования до 15 тыс. преобр. в сек. при максимальном разрешении • 8 мультиплексированных однополярных входов • 7 дифференциальных входных каналов • 2 дифференциальных входных канала с опциональным усилением на 10 и 200 • Представление результата с левосторонним или правосторонним выравниванием в 16-разр .



Pages:   || 2 | 3 |



Похожие работы:

«Российский государственный гуманитарный университет Russian State University for the Humanities R S U H/R G G U B U L L E T I N № 11 (133) Academic Journal Series: Computer Science. Data Protection. Mathematics Moscow 2014 ВЕСТНИК РГГУ № 11 (133...»

«ИНФОРМАЦИОННАЯ СИСТЕМА КАК ПРЕДМЕТ СЕМИОТИКИ Н.А. Тарабанов В статье определяются специфика и основные принципы семиотического подхода к исследованию информационных (компьютерных) систем, которые предлагается рассматривать в единстве организационного, концептуального и технологического уровней изучения. INFOR...»

«Продукты Серии 6200 Ред. AA Обзор µflo 6213 Totalflow последовательно разрабатывает новые и ВВЕДЕНИЕ новейшие продукты и системы для точного, достоверного Базирующийся на технологии X Серии подразделения и подтверждаемого измерения газа. Кроме того, µflo 6213 Totalflow ABB, µflo 6213 (microflow 6213) является включает функции, необходимы...»

«1 УДК 004(075.3=161.3=161.1) ББК 32.81я721 П88 Пупцев, А. Е. Мультимедиа в современной жизни: 11-й кл. : пособие П88 для учащихся учреждений общ. сред. образования с белорус. и рус. яз....»

«Вестник Башкирского университета. 2017. Т. 22. №1 ISSN 1998-4812 205 УДК 81-13 РАСПРЕДЕЛЕНИЕ ИНФОРМАЦИИ В ТЕКСТЕ В АСПЕКТЕ ЭКСПЕРИМЕНТАЛЬНОГО ПОДХОДА © Д . А. Ичкинеева Башкирский государственный университет Россия, Республика Башкортостан, 450076 г. Уфа, у...»

«Міжнародна конференція Високопродуктивні обчислення HPC-UA’2011 (Україна, Київ, 12-14 жовтня 2011 року) ГРИД-СЕРВИС РЕШЕНИЯ ЗАДАЧ СТАТИСТИЧЕСКОГО ПРОГНОЗИРОВАНИЯ PREDICTOR Лавренюк С.И., Перевозчикова О. Л., Тульчинский В.Г. Институт кибернетики им. В.М.Глушкова НАН Украины, пр. Глушкова, 40, Киев, Украина de...»

«Санкт-Петербургский государственный университет Кафедра Системного Программирования Болотов Сергей Сергеевич Разработка компилятора для языка РуСи на платформу MIPS Бакалаврская работа Научный руководитель: д. ф.-м. н., профессор Терехов А. Н.Рецензент: Тиунова А. Е. Санкт-Петербург SAINT-PETERSBURG STATE UNIVERSITY Depa...»

«-1РУКОВОДСТВО по эсплуатации панели управления МС 2 www.abac.ru -2Содержание 7.0 ПУСК И ЭКСПЛУАТАЦИЯ КОМПРЕССОРА 3 7.1 Проверки, которые следует произвести до пуска 3 7.2 Панель управления “mc2” 4 7.2.1 Секция блока управления “mc2” компрес...»

«Формат и структура email-рассылок Формат и структура email-рассылок Электронные письма от портала госуслуг Руководство по использованию формата и структуры e-mail сообщений Поводы для писем Портал госуслуг может отправлять подписчикам письма в четырех ситуациях: 1. После регистрации — отправляется приветс...»

«Федеральное государственное бюджетное образовательное учреждение высшего образования ПОВОЛЖСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ И ИНФОРМАТИКИ РУКОВОДЯЩИЙ РД ПГУТИ 4.27.6 – 2016 ДОКУМЕНТ Система менеджмента качества ЦЕНТР ОБЩЕСТВЕННОГО ПИТА...»

«МИНИСТЕРСТВО ПУТЕЙ СООБЩЕНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ПУТЕЙ СООБЩЕНИЯ (МИИТ) Кафедра “САПР транспортных конструкций и сооружений” С. Н. НАЗАРЕНКО М.А. ГУРКОВА Утверждадено редакционно-издательским советом университета ПРОГРАММИРОВАНИЕ В СИСТЕМЕ АВТОК...»

«ДОКЛАДЫ БГУИР ТОМ 1, № 3 ИЮЛЬ–СЕНТЯБРЬ УДК 621.396.96 МЕЖПАЧЕЧНОЕ КОГЕРЕНТНОЕ НАКОПЛЕНИЕ — СПОСОБ ПОВЫШЕНИЯ КАЧЕСТВА ОЦЕНИВАНИЯ СПЕКТРАЛЬНЫХ ХАРАКТЕРИСТИК РАДИОЛОКАЦИОННЫХ СИГНАЛОВ С.Р. ГЕЙСТЕР, К.Н. ЧУГАЙ Военная академия Республики Беларусь ВА РБ, Минск, 220057, Беларусь Поступила в редакцию 23 сентября 2003 В настоящее время оценива...»

«ВЕСТНИК ТОМСКОГО ГОСУДАРСТВЕННОГО УНИВЕРСИТЕТА 2013 Управление, вычислительная техника и информатика № 2(23) УДК 004.312.4 А.Ю. Матросова, Е.В. Митрофанов СИНТЕЗ ЛЕГКО ТЕСТИРУЕМЫХ ПОСЛЕДОВАТЕЛЬНОСТНЫХ С...»

«Мультимедийный навигационный центр Prology MPC-50 Произведено в Китае Изготовитель и импортер: АО "Фирма "ММС" 127220, г. Москва, Писцовая, д. 1А СОДЕРЖАНИЕ Назначение устройства Комплект поставки Рекомендации по эксплуатации и меры предосторожности Внешний вид устройства Операционная система Android...»

«АРУТЮНОВА НАТАЛЬЯ КОНСТАНТИНОВНА МЕТОДЫ ПРОЕКТИРОВАНИЯ ТОЧКИ В НОРМИРОВАННЫХ ПРОСТРАНСТВАХ И ИХ ПРИЛОЖЕПИЯ Специальность: 01.01.07 Вычислительная математика ^ ОШ1 Щ АВТОРЕФЕРАТ диссертации па соискание ученой степени канднд...»

«Библиографический список 1. Михеев М.А. Основы теплопередачи: Изд. 2-е, перераб. М., Государственное энергетическое издательство. 1 9 4 9.-3 9 6 с.2. Исаченко В.П., Осипова В.А., Сукомел A.C. Теплопередача: Изд....»

«УДК 378.02 ФОРМИРОВАНИЕ УЧЕБНОЙ МОТИВАЦИИ В КУРСЕ ДИСТАНЦИОННОГО ОБУЧЕНИЯ Антипова Т.А. научный руководитель доцент кафедры ППО Чурилова Е.Ю. Сибирский Федеральный университет В статье рассматриваются средства и спо...»

«Быстрый алгоритм минимизации высоты графа зависимостей В.Ю. Волконский, В.Д. Гимпельсон, Д.М. Масленников Аннотация. В работе представлен быстрый алгоритм разрыва зависимостей на предикатном коде для архитектур с явно выраженным параллелизмом. Алгоритм имеет линейную сложность по числу возможных разрывов и, благодаря этому свойств...»

«Российская академия сельскохозяйственных наук ГНУ Всероссийский институт аграрных проблем и информатики имени А.А. Никонова УТВЕРЖДАЮ СОГЛАСОВАНО СОГЛАСОВАНО Вице-президент Россельхозакадемии Начальник Управления Академиксводного планирования секретарь и координа...»

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




 
2019 www.mash.dobrota.biz - «Бесплатная электронная библиотека - онлайн публикации»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.