1 практика микронтроллеры
.docx
Министерство
науки и высшего образования Российской
Федерации Федеральное государственное
автономное образовательное учреждение
высшего образования
«Омский
государственный
технический
университет» Кафедра” Автоматизация
и робототехника”
Практическое задание №1
Тема: «Программирование таймера-счетчика в режиме «NORMAL»
Вариант 13
Выполнил:
Студент группы АТП-222
Пискунов А.И.
Проверил:
Доц., к. н. Пешко М.С.
Омск 2025
Цель: Обеспечьте переключение внешнего светодиода, подключенного к заданному выводу микроконтроллера, с полупериодом работы согласно индивидуальному варианту с помощью таймера-счетчика в режиме «normal».
Теоретическая справка
Рассмотрим работу таймера-счетчика в режиме «normal». Данный режим является самым простым, и его настройка осуществляется следующим образом. Согласно сводной таблице режимов работы все флаги WMG должны быть опущены, а флаги регистра сравнения СОM1A0:1 и COM1B0:1 не используются, тогда регистрам управления ТCCR1A и TCCR1B можно присвоить нули. Для обнаружения окончания счета в режиме «normal» можно считывать значение флага TOV1 или разрешить прерывание по переполнению через флаг TOIE1 в регистре TIMSK1. Последним шагом будет запуск таймера-счетчика после конфигурации предделителя на заданный коэффициент или от внешнего сигнала. Если выбрать коэффициент предделителя 1 и переключать внешний светодиод в обработчике прерывания по каждому переполнению, то период переключения светодиода составит примерно 4 мс.
Ход работы
Рисунок 1 – Алгоритм работы
Описание алгоритма:
Подключение библиотек <avr/io.h> и <avr/interrupt.h>
Инициализация порта PB1 как выход
Отключение глобальных прерываний:
Обнуление регистра TCCR1A
Обнуление регистра TCCR1B
Установка предделителя таймера на 1024, благодаря включению флагов CS10 и CS12
Рисунок 2 – Таблица предделителя и нужных флагов
Устанавливаем начальное значение в счётчик таймера для генерации прерывания через определённый интервал.
Разрешение прерывания по переполнению таймера, то есть выбранного нами времени
Включение глобальных прерываний
Включение основного пустого цикла
Выключение цикла
Вход в обработчик прерывания при переполнении таймера.
Вновь устанавливаем значение таймера для следующего цикла
Условие, проверяющие какое значение у PB1
Если условию не удовлетворяет, PB1 =0, то необходимо установить 1
Если условию удовлетворяет, PB1 =1, то необходимо установить 0
Рисунок 3 – Пример работы
Расчёт значения TCNT1 для прерывания таймера (TIMER1) с периодом 2.75 секунды и предделителем 1024 на ATmega328p
Исходные данные:
Тактовая частота: 8 МГц = 8 000 000 Гц
Предделитель : 1024
Разрядность таймера: 16 бит → максимальное значение TCNT1 = 65535
Желаемый период : 2.75 секунды
Формула для расчёта:
Период прерывания определяется по формуле:
Вывод: В ходе выполнения работы была разработана программа для микроконтроллера AVR, обеспечивающая периодическое переключение внешнего светодиода, подключённого к выводу PB1, с заданным периодом.
