реклама на сайте
подробности

 
 
> Проблема с таймером на Atmega168, Не получается установить режим FastPWM
CatMurr
сообщение Dec 26 2010, 12:16
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 26-10-09
Пользователь №: 53 223



Итак, есть девайс, Atmega168. Задачу можно свести к следующему минимуму:

Необходимо установить режим FastPWM и дрыгать ножкой - устанавливать низкий уровень по совпадению с регистром сравнения, высокий по переполнению счетного регистра таймера. Используется Timer1 16bit.

Проблема заключается в том, что по идее в режиме FastPWM таймер должен дотикать до FF, сбросить счетчик в 0, выдать прерывание по переполнению, и продолжить по кругу. При отладке программы в симуляторе avrstudio, таймер тикает до FF, затем тикает обратно до 0, и только тогда выдает прерывание, как в режиме PWM Phase Correct.

Инициализация следующая:

COM1A1..0 = 00
COM1B1..0 = 00
WGM13..0 = 0101 ; FastPWM 8bit
CS12..0 = 001 ; без предделителя
OCIE1A = 1 ; прерывание по совпадению
TOIE1 = 1 ; прерывание по переполнению

В OCR1A пришу, например, 0x003F.

Притом флаги OCF1A и TOV1 вообще не выставляются по соответствующим событиям, но прерывания исправно отрабатываются. Итого имеем PWM Phase Correct при настройках для FastPWM.

Где собака зарыта? Глюк в симуляторе, или (скорее всего), я что-то делаю неправильно?

Проект на всякий случай прилагаю.
Прикрепленные файлы
Прикрепленный файл  Timer_PWM.rar ( 6.81 килобайт ) Кол-во скачиваний: 17
 
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 08:45
Рейтинг@Mail.ru


Страница сгенерированна за 0.01379 секунд с 7
ELECTRONIX ©2004-2016