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

 
 
> Изменение периода таймера внутри прерывания, можно ли?
//Nikson
сообщение Feb 1 2006, 16:11
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 43
Регистрация: 26-01-06
Из: Минск, Беларусь
Пользователь №: 13 651



Можно ли изменять регистр периода таймера внутри процедуры обработки прерывания этого самого таймера ? "Тикнул" таймер, изменили период, снова тикнул - опять изменили. Вообще во время работы таймера его период менять можно. А именно в этом месте? Если нельзя, то как по-человеески организовать постоянно меняющиеся временные интервалы?

Сообщение отредактировал //Nikson - Feb 1 2006, 16:12
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rezident
сообщение Feb 1 2006, 16:38
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Можно, если осторожно smile.gif Все дело в том, что если в режиме счета Count_Up период, задаваемый регистром CCR0, вы установите больше текущего, то все отработает нормально. Но если задаваемый период будет меньше текущего, то таймер сначала досчитает до переполнения 0xFFFF и только затем будет отрабатывать заданный период. Так что в последнем случае, кроме установки CCR0 нужно еще и сбрасывать счетчик таймера (TAR).
Если вы используете таймер для формирования сигнала ШИМ, периодом которого желаете управлять, то можно использовать таймер в режиме Continuous и каждый раз по прерыванию CCR0 простым суммированием невзирая на переполнение добавлять новый период с текущему содержимому CCR0. Кстати, для Timer_B это выглядит еще проще. У него уже предусмотрена двойная буферизация регисторов сравнения CCRx.
Резюмируя: читайте User's Guide, там все написано. Перевод см. тут.
P.S. ну и совсем очевидную вещь добавлю. Учитывайте скорость выполнения программы (частоту сигнала MCLK) и частоту тактирования собственно таймера. Естественно, если они равны, то вы не сможете манипулировать периодами ШИМ величиной в единицы тактов. CPU просто не успеет.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 29th July 2025 - 04:03
Рейтинг@Mail.ru


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