Выход из программы обслуживания прерывания занимает 4 периода актовой частоты. За эти 4 периода из стека восстанавливается программный счетчик. После выхода из прерывания процессор всегда выполняет еще одну команду, прежде чем обслужить любое отложенное прерывание.
Таймер/счетчик в режиме ШИМ
При выборе режима широтно-импульсной модуляции (ШИМ), таймер / счетчик 1 и регистр совпадения OCR1A формируют 8, 9 или 10-разрядный непрерывный свободный от «дрожания» и правильный по фазе сигнал, выводимый на вывод PB3 (OC1). Таймер/счетчик 1 работает как реверсивный счетчик считающий от 0 до конечного значения (Таблица 5.1). При достижении конечного значения счетчик начинает считать в обратную сторону до нуля, после чего рабочий цикл повторяется. Когда значение счетчика совпадает с 8, 9 или 10-ю младшими битами регистра OCR1A, вывод PD1 (OC1) устанавливается или сбрасывается в соответствии с установками бит COM1A1 и COM1A0 в регистре TCCR1 (Таблица 3.5).
Таблица 3.5. Конечное значение таймера и частота ШИМ
Разрешение ШИМ | Конечное значение таймера | Частота ШИМ |
8 бит | $00FF (255) | Ftc1/510 |
9 бит | $01FF (511) | Ftc1/1022 |
10 бит | $03FF (1023) | Ftc1/2046 |
В режиме ШИМ, при записи в регистр OCR1A, 10 младших бит передаются во временный регистр и переписываются только при достижении таймером / счетчиком конечного значения. При этом устраняется появление несимметричных импульсов (дрожания), которые неизбежны при асинхронной записи OCR1A.
Таблица 3.6. Установка режима совпадения при работе ШИМ
COM1A1 | COM1A1 | Влияние на вывод OC1 |
0 | 0 | Не подключен |
0 | 1 | Не подключен |
1 | 0 | Очищается при совпадении, для возрастания счетчика и сбрасывается для уменьшения (неинвертирующий ШИМ) |
1 | 1 | Очищается при совпадении, для уменьшения счетчика и сбрасывается для возрастания (инвертирующий ШИМ) |
Если OCR1A содержит значение $0000 или конечное значение (TOP), вывод OC1 остается в том состоянии, которое определяется установками COM1A1 и COM1A0. Это показано в Таблице 3.7.
Таблица 3.7. Выход ШИМ для OCR=$0000 или TOP
COM1A1 | COM1A1 | OCR1A | вывод OC1 |
1 | 0 | $0000 | Низкий |
1 | 0 | TOP | Высокий |
1 | 1 | $0000 | Высокий |
1 | 1 | TOP | Низкий |
В режиме ШИМ флаг переполнения таймера 1 (TOV1) устанавливается, когда счетчик изменяет направление счета в точке $0000. Прерывание по переполнению таймера 1 работает как при нормальном режиме работы таймера / счетчика, т.е. оно выполняется, если установлен флаг TOV1 и разрешены соответствующие прерывания. То же самое касается флага совпадения и прерывания по совпадению. Перейти на страницу: 1 2 3 4 5
Другое по теме:
Алгоритмы сбора и предварительной обработки измерительной информации Тема контрольной работы "Алгоритмы сбора и предварительной обработки измерительной информации" по дисциплине "Измерительные информационные системы (ИИС)". Программно-математическое обеспечение ИИС является не менее важ ...