|
|
  |
Вопрос по синхронизации таймеров |
|
|
|
Feb 4 2011, 16:09
|

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

|
Доброго всем времени суток. Имеется 2 таймера, скажем 1 и 2. Период одного таймера всегда в 2 раза больше периода второго. Требуется получить вот такие сигналы:
Можно ли сделать с помощью синхронизации таймеров так, чтобы при изменении периода одного сигнала (черного) автоматически менялся период второго (синий)? Программирую на stm32f103. Заранее спасибо.
Сообщение отредактировал Sprite - Feb 4 2011, 16:10
|
|
|
|
|
Feb 5 2011, 03:29
|

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

|
Цитата(Dog Pawlowa @ Feb 4 2011, 22:44)  Какое требование к "синхронности"? Может, проще триггер снаружи поставить? Таймеры должны работать синхронно - фронты (восходящий и ниспадающий) полупериода таймера 1(синего) такт в такт должны совпадать с восходящими фронтами таймера 2(черного). Если период таймера 2 увеличивается на 1 такт, то соответственно период таймера 1 увеличивается на 2 такта. Насчет внешней логики думал - но хотелось бы обойтись без нее.
|
|
|
|
|
Feb 5 2011, 12:06
|

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

|
Цитата(DpInRock @ Feb 5 2011, 11:55)  Совпадать два фронта не будут НИКОГДА в жизни. Поэтому вас и спросили о точности. Тут я с Вами не согласен. Если периоды таймеров одинаковы - то это возможно и лично проверено. В прерывании одного таймера я корректирую значние счетчика другого и выставляю равные периоды. Таймеры работают синхронно такт в такт (разумеется других прерываний нет). А вот если периоды отличаются в 2 раза, то не получается, поэтому я и спросил о возможности синхнонизации таймеров, хотелось бы решить этот вопрос на аппаратном уровне, не прибегая к внешней логике.
|
|
|
|
|
Feb 5 2011, 15:47
|

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

|
SergeeffЦитата(sergeeff @ Feb 5 2011, 19:20)  Если вы это делаете программно, то совершенно очевидно, это невозможно. Вы не можете одной командой одновременно загрузить оба таймера. Программно я лишь корректирую значения периодов таймера и счетчиков и делаю все это в прерывании по обнулению счетчика одного из таймеров (Update Event). А оба таймера при этом работают аппаратно в PWM режиме. rezident:Спасибо Вам за наводку, Ваш совет всегда в тему (не раз уже выручали), попробую покопать в сторону расширенного таймера (TIM1), может там что-нибудь найду.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|