Основы работы с таймерами/счетчиками
Покупка
Основная коллекция
Тематика:
Электроэнергетика. Электротехника
Издательство:
НИЦ ИНФРА-М
Авторы:
Варламов Дмитрий Олегович, Зуев Сергей Михайлович, Шматков Юрий Михайлович, Лавриков Алексей Александрович, Тимошенко Артем Александрович
Год издания: 2020
Кол-во страниц: 64
Дополнительно
Вид издания:
Учебное пособие
Уровень образования:
ВО - Бакалавриат
ISBN-онлайн: 978-5-16-109356-6
Артикул: 747177.01.99
В учебном пособии изложены сведения по работе с таймерами/счетчиками, описана работа модуля Таймеров/Счетчиков микроконтроллера Atmega32 компании Atmel, достаточно подробно, на примерах, разобрана работа с таймерами Т0 и Т2, оптическим энкодером, управлением электронным двигателем с помощью ШИМ-сигнала.
Учебное пособие по дисциплине «Проектирование микроконтроллерных систем» предназначено для студентов, обучающихся по направлению 13.03.02 «Электроэнергетика и электротехника».
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Высшее образование — Бакалавриат МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «МОСКОВСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ» (МОСКОВСКИЙ ПОЛИТЕХ) Д.О. ВАРЛАМОВ С.М. ЗУЕВ Ю.М. ШМАТКОВ А.А. ЛАВРИКОВ А.А. ТИМОШЕНКО ОСНОВЫ РАБОТЫ С ТАЙМЕРАМИ/ СЧЕТЧИКАМИ Учебное пособие Москва ИНФРА-М 2020
УДК 004.312(075.8) ББК 32.85я73 В18 Рекомендовано к изданию на заседании кафедры «Электрооборудование и промышленная электроника», протокол № 10 от 18.06.2019 Варламов Д.О. В18 Основы работы с таймерами/счетчиками : учебное пособие / Д.О. Варламов, С.М. Зуев, Ю.М. Шматков, А.А. Лавриков, А.А. Тимошенко. — Москва : ИНФРА-М, 2020. — 64 с. — (Высшее образование: Бакалавриат). ISBN 978-5-16-109356-6 (online) В учебном пособии изложены сведения по работе с таймерами/счетчиками, описана работа модуля Таймеров/Счетчиков микроконтроллера Atmega32 компании Atmel, достаточно подробно, на примерах, разобрана работа с таймерами Т0 и Т2, оптическим энкодером, управлением электронным двигателем с помощью ШИМсигнала. Учебное пособие по дисциплине «Проектирование микроконтроллерных систем» предназначено для студентов, обучающихся по направлению подготовки 13.03.02 «Электроэнергетика и электротехника». УДК 004.312(075.8) ББК 32.85я73 ISBN 978-5-16-109356-6 (online) © Варламов Д.О., Зуев С.М., Шматков Ю.М., Лавриков А.А., Тимошенко А.А., 2020 ФЗ № 436-ФЗ Издание не подлежит маркировке в соответствии с п. 1 ч. 2 ст. 1
Оглавление 1. Общие сведения ..................................................................................5 2. Назначение выводом таймеров/счетчиков.......................................6 3. Прерывания от таймеров/счетчиков .................................................7 4. Предделители таймеров/счетчиков...................................................9 5. Восьмибитные таймеры/счетчики...................................................13 6. Управление тактовым сигналом......................................................17 7. Режимы работы таймеров/счетчиков..............................................18 8. Формирование выходных сигналов 8-битных таймеров Т0 и Т2 в режиме работы Normal .........................................................................28 9. Формирование выходных сигналов 8-битных таймеров Т0 и Т2 в режиме работы СТС..............................................................................31 10. Формирование выходных сигналов таймеров/счетчиков Т0 и Т2 в режимах работы Fast PWM и Phase Correct PWM..........................36 11. Использование прерываний по совпадению и переполнению таймера/счетчика Т0 .............................................................................41 12. Часы реального времени на таймере/счетчике Т2. .....................45 13. Измерение скорости вращения вала электродвигателя по оптическому энкодеру с использованием двух 8-битных таймеров/счетчиков ..............................................................................49 14. Измерение скорости вращения вала электродвигателя по оптическому энкодеру с использованием одного 8-битного таймера/счетчика и внешнего прерывания ........................................54 Заключение ............................................................................................60 Приложение ...........................................................................................61 Список использованной литературы ..................................................65
1. Общие сведения Микроконтроллеры семейства в зависимости от модели имеют в своем составе от двух до шести таймеров/счетчиков общего назначения (Табл.1). Таблица 1. Таймеры/счетчики общего назначения. Как видно из таблицы, во всех моделях микроконтроллеров семейства присутствуют как минимум два таймера/счетчика — ТО и Т1. Таймер/счетчик ТО имеет минимальный набор функций, зависящий, тем не менее, от модели микроконтроллера. В одних моделях он может использоваться только для отсчета и измерения временных интервалов или как счетчик внешних событий. В других моделях к этим функциям добавляется возможность генерации сигналов с широтно-импульсной модуляцией (ШИМ) фиксированной разрядности (один или два канала), а также возможность работать в асинхронном режиме в качестве часов реального времени (в моделях ATmega64x/128x).
Таймер/счетчик Т1 тоже может использоваться для отсчета временных интервалов и как счетчик внешних событий. Кроме того, он может осуществлять запоминание своего состояния по внешнему сигналу. Как и таймер/счетчик ТО, он может работать в качестве 2- или 3-канального широтно-импульсного модулятора, но уже переменной разрядности. Количество каналов ШИМ зависит от модели [1]. Таймер/счетчик Т2 практически полностью аналогичен таймеру/счетчику ТО. Во всех моделях, кроме ATmega64x/128x, таймер/счетчик Т2 может работать в асинхронном режиме. Таймеры/счетчики ТЗ...Т5 по функциональным возможностям идентичны таймеру/счетчику T1. В составе всех микроконтроллеров семейства имеется также сторожевой таймер, являющийся непременным атрибутом всех современных микроконтроллеров. Этот таймер позволяет избежать несанкционированного зацикливания программы, возникающего по тем или иным причинам. 2. Назначение выводов таймеров/счетчиков Каждый таймер/счетчик использует один или более выводов микроконтроллера. Как правило, эти выводы — линии портов ввода/вывода общего назначения, а функции, реализуемые этими выводами при работе совместно с таймерами/счетчиками, являются их альтернативными функциями [2]. Все выводы микроконтроллера Atmega32, используемые таймерами/счетчиками общего назначения, приведены в Табл.2. Там же указаны функции этих выводов. Таблица 2. Назначение выводов таймеров/счетчиков. Вывод таймера/ счетчика Вывод общего назначения Описание назначения вывода Т0 PB0 Вход внешнего сигнала таймера T0 OC0 PB3 Выход схемы сравнения таймера T0 Т1 PB1 Вход внешнего сигнала таймера T1 ICP1 PD6 Вход захвата таймера T1 OC1A PD5 Выход A схемы сравнения таймера T1 OC1B PD4 Выход B схемы сравнения таймера T1 OC2 PD7 Выход схемы сравнения таймера T2
Не забывайте о том, что при использовании альтернативных функций линий портов ввода/вывода необходимо, как правило, самостоятельно сконфигурировать эти выводы в соответствии с их функциональным назначением. 3. Прерывания от таймеров/счетчиков В микроконтроллере Atmega32 для разрешения/запрещения прерываний от таймеров/счетчиков используется регистр TIMSK. В регистре TIFR содержатся флаги прерываний. Формат регистра TIMSK показан на Рис.1, а описание его битов приведено в Табл.3. Рис.1 Формат регистра TIMSK. Таблица 3. Биты регистра TIMSK. Название бита Описание TOIE0 Флаг разрешения прерывания для события “переполнение” Таймер 0 OCIE0 Флаг разрешения прерывания для события “совпадение” Таймер 0 TOIE1 Флаг разрешения прерывания для события “переполнение” Таймер 1 OCIE1B Флаг разрешения прерывания для события “совпадение B” Таймер 1 OCIE1A Флаг разрешения прерывания для события “совпадение A” Таймер 1 TICIE1 Флаг разрешения прерывания по событию “захват” Таймер 1 TOIE2 Флаг разрешения прерывания для события “переполнение” Таймер 2 OCIE2 Флаг разрешения прерывания для события “совпадение” Таймер 2
Для разрешения какого-либо прерывания от таймера/счетчика необходимо установить в 1 соответствующий бит регистра TIMSK и, разумеется, флаг I регистра SREG (выполняется командой sei()). Формат регистра TIFR, используемый для индикации наступления прерываний от таймеров/счетчиков, показан на Рис.2, а описание его битов приведено в Табл.4. Рис.2 Формат регистра TIFR. Таблица 4. Биты регистра TIFR. Название бита Описание TOV0 Флаг прерывания для события “переполнение” Таймер 0 OCF0 Флаг прерывания для события “совпадение” Таймер 0 TOV1 Флаг прерывания для события “переполнение” Таймер 1 OCF1B Флаг прерывания для события “совпадение B” Таймер 1 OCF1A Флаг прерывания для события “совпадение A” Таймер 1 ICF1 Флаг прерывания по событию “захват” Таймер 1 TOV2 Флаг прерывания для события “переполнение” Таймер 2 OCF2 Флаг прерывания для события “совпадение” Таймер 2 При наступлении какого-либо события соответствующий флаг регистра TIFR устанавливается в 1. При запуске подпрограммы обработки прерывания он аппаратно сбрасывается в 0. Любой флаг может быть также сброшен программно, записью в него лог. 1.
4. Предделители таймеров/счетчиков Блоки предделителей предназначены для формирования тактовых сигналов таймеров/счетчиков clkTO, clkT1, clkT2. Упрощенная структурная схема блока предделителя таймеров/счетчиков, не имеющих асинхронного режима работы, приведена на Рис.3. Структурная схема блока предделителя таймеров/счетчиков, имеющих возможность работы в асинхронном режиме, приведена на Рис.4. Рис.3 Блок предделителя таймера счетчика без возможности асинхронного режима работы.
Рис.4 Блок предделителя таймера счетчика c возможностью асинхронного режима работы. Как показано на рисунке, в состав каждого блока входят собственно 10-битный предделитель, выходной мультиплексор (селектор тактового сигнала), а для таймеров, имеющих возможность работы в асинхронном режиме - еще и входной мультиплексор исходного тактового сигнала. По последней схеме выполнен предделитель таймера/счетчика Т2 микроконтроллеров Atmega8x/16x/32x. Следует иметь в виду, что все таймеры/счетчики каждой модели семейства, не имеющие асинхронного режима работы, используют один и тот же 10-битный предделитель. При этом управление тактовым сигналом каждого таймера/счетчика осуществляется индивидуально [6]. Предделители работают независимо от таймеров/счетчиков. Следствием этого является, в частности, неопределенный промежуток времени (1...N+1 тактов исходного сигнала, где N — коэффициент деления предделителя) между разрешением таймера/счетчика и первым его отсчетом при работе совместно с предделителем. Чтобы уйти от этой неопределенности, можно воспользоваться возможностью сброса предделителей.
Помимо управления тактовым сигналом таймера/счетчика, все микроконтроллеры семейства позволяют осуществлять сброс предделителей. Для этого используются биты PSRx регистра специальных функций SFIOR. Формат этого регистра для микроконтроллера Atmega32 приведен на Рис.5 (биты, не используемые для управления предделителями таймеров/счетчиков, указаны на рисунке как "Х"). Рис.5 Формат регистра SFIOR. При записи в бит PSR10 лог. 1 синхронный предделитель, общий для первого и нулевого таймера/счетчика переводится в исходное состояние. PSR2 отвечает за второй таймер/счетчик, имеющий возможность асинхронной работы. Биты сбрасываются в 0 аппаратно после выполнения операции сброса. Таймеры/счетчики 0 и 1, не имеющие асинхронного режима работы, могут тактироваться от внешнего сигнала. Внешний сигнал, поступающий на вход Т0 или T1 микроконт роллера, прежде чем поступить на вход селектора тактового сигнала, проходит через специальный узел, включающий схему синхронизации и детектор фронтов. В общем виде схема этого узла приведена на Рис.6. Рис.6 Входной каскад для выводов T0 и T1.