Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1 практика микронтроллеры

.docx
Скачиваний:
0
Добавлен:
25.11.2025
Размер:
2.74 Mб
Скачать

Министерство науки и высшего образования Российской Федерации Федеральное государственное автономное образовательное учреждение высшего образования «Омский государственный технический университет» Кафедра” Автоматизация и робототехника”

Практическое задание №1

Тема: «Программирование таймера-счетчика в режиме «NORMAL»

Вариант 13

Выполнил:

Студент группы АТП-222

Пискунов А.И.

Проверил:

Доц., к. н. Пешко М.С.

Омск 2025

Цель: Обеспечьте переключение внешнего светодиода, подключенного к заданному выводу микроконтроллера, с полупериодом работы согласно индивидуальному варианту с помощью таймера-счетчика в режиме «normal».

Теоретическая справка

Рассмотрим работу таймера-счетчика в режиме «normal». Данный режим является самым простым, и его настройка осуществляется следующим образом. Согласно сводной таблице режимов работы все флаги WMG должны быть опущены, а флаги регистра сравнения СОM1A0:1 и COM1B0:1 не используются, тогда регистрам управления ТCCR1A и TCCR1B можно присвоить нули. Для обнаружения окончания счета в режиме «normal» можно считывать значение флага TOV1 или разрешить прерывание по переполнению через флаг TOIE1 в регистре TIMSK1. Последним шагом будет запуск таймера-счетчика после конфигурации предделителя на заданный коэффициент или от внешнего сигнала. Если выбрать коэффициент предделителя 1 и переключать внешний светодиод в обработчике прерывания по каждому переполнению, то период переключения светодиода составит примерно 4 мс.

Ход работы

Рисунок 1 – Алгоритм работы

Описание алгоритма:

  1. Подключение библиотек <avr/io.h> и <avr/interrupt.h>

  2. Инициализация порта PB1 как выход

  3. Отключение глобальных прерываний:

  4. Обнуление регистра TCCR1A

  5. Обнуление регистра TCCR1B

  6. Установка предделителя таймера на 1024, благодаря включению флагов CS10 и CS12

Рисунок 2 – Таблица предделителя и нужных флагов

  1. Устанавливаем начальное значение в счётчик таймера для генерации прерывания через определённый интервал.

  2. Разрешение прерывания по переполнению таймера, то есть выбранного нами времени

  3. Включение глобальных прерываний

  4. Включение основного пустого цикла

  5. Выключение цикла

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

  7. Вновь устанавливаем значение таймера для следующего цикла

  8. Условие, проверяющие какое значение у PB1

  9. Если условию не удовлетворяет, PB1 =0, то необходимо установить 1

  10. Если условию удовлетворяет, PB1 =1, то необходимо установить 0

Рисунок 3 – Пример работы

Расчёт значения TCNT1 для прерывания таймера (TIMER1) с периодом 2.75 секунды и предделителем 1024 на ATmega328p

Исходные данные:

  • Тактовая частота: 8 МГц = 8 000 000 Гц

  • Предделитель : 1024

  • Разрядность таймера: 16 бит → максимальное значение TCNT1 = 65535

  • Желаемый период : 2.75 секунды

Формула для расчёта:

Период прерывания определяется по формуле:

Вывод: В ходе выполнения работы была разработана программа для микроконтроллера AVR, обеспечивающая периодическое переключение внешнего светодиода, подключённого к выводу PB1, с заданным периодом.