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

 
 
> Вопрос по синхронизации таймеров
Sprite
сообщение Feb 4 2011, 16:09
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 173
Регистрация: 11-05-08
Пользователь №: 37 414



Доброго всем времени суток.

Имеется 2 таймера, скажем 1 и 2. Период одного таймера всегда в 2 раза больше периода второго.
Требуется получить вот такие сигналы:
Прикрепленное изображение

Можно ли сделать с помощью синхронизации таймеров так, чтобы при изменении периода одного сигнала (черного) автоматически менялся период второго (синий)? Программирую на stm32f103. Заранее спасибо.

Сообщение отредактировал Sprite - Feb 4 2011, 16:10
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
DpInRock
сообщение Feb 5 2011, 05:55
Сообщение #2


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Совпадать два фронта не будут НИКОГДА в жизни. Поэтому вас и спросили о точности.

Из одного таймера с максимальной частотой можно это сделать программно. По прерыванию делаем делитель. И все.
Примерно так.

Процедура обработки прерывания (таймер на частоте в два раза большей, чем самая максимальная частота на выходе портов)
volatile unsigned int a;
...
{
a++;
*PORT=a;// вывод в порт
}

Получаем синхронные ногодрыганья нужных частот.
Только все это будет с точностью реакции на прерывание (плюс другие прерывания, если нет влложенных) и прочая...


Сообщение отредактировал DpInRock - Feb 5 2011, 06:35


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
Sprite
сообщение Feb 5 2011, 12:06
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 173
Регистрация: 11-05-08
Пользователь №: 37 414



Цитата(DpInRock @ Feb 5 2011, 11:55) *
Совпадать два фронта не будут НИКОГДА в жизни. Поэтому вас и спросили о точности.


Тут я с Вами не согласен. Если периоды таймеров одинаковы - то это возможно и лично проверено. В прерывании одного таймера я корректирую значние счетчика другого и выставляю равные периоды. Таймеры работают синхронно такт в такт (разумеется других прерываний нет). А вот если периоды отличаются в 2 раза, то не получается, поэтому я и спросил о возможности синхнонизации таймеров, хотелось бы решить этот вопрос на аппаратном уровне, не прибегая к внешней логике.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Feb 5 2011, 13:20
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(Sprite @ Feb 5 2011, 15:06) *
Тут я с Вами не согласен. Если периоды таймеров одинаковы - то это возможно и лично проверено. В прерывании одного таймера я корректирую значние счетчика другого и выставляю равные периоды. Таймеры работают синхронно такт в такт (разумеется других прерываний нет). А вот если периоды отличаются в 2 раза, то не получается, поэтому я и спросил о возможности синхнонизации таймеров, хотелось бы решить этот вопрос на аппаратном уровне, не прибегая к внешней логике.


Если вы это делаете программно, то совершенно очевидно, это невозможно. Вы не можете одной командой одновременно загрузить оба таймера.
Go to the top of the page
 
+Quote Post
rezident
сообщение Feb 5 2011, 13:30
Сообщение #5


Гуру
******

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



Цитата(sergeeff @ Feb 5 2011, 18:20) *
Вы не можете одной командой одновременно загрузить оба таймера.
Вообще-то значение регистра compare или match не обязательно загружается напрямую программной записью. Есть режимы с синхронной загрузкой этих значений. По крайней мере в LPC17xx и MSP430 такой режим имеется. Опять извиняюсь, что встрял, не имея конкретных знаний, о таймерах именно STM32.
Go to the top of the page
 
+Quote Post



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

 


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


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