Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 15.10.2013, 23:08  
anton_1000
Прописка
 
Регистрация: 31.08.2008
Сообщений: 117
Сказал спасибо: 4
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
anton_1000 на пути к лучшему
По умолчанию Измерение длительности импульса STM32

Хочу определить длительность импульса. Использую пример standart peripherial librery - PWM Input. Каким образом настроить таймер или в каком месте присваивать TMRxCNT = 0, чтобы по переднему фронту импульса счётчик времени начинал считать с НУЛЯ?
Код:
  /* НАСТРОЙКА ТАЙМЕРА*/ 
  TIM_ICInitStructure.TIM_Channel = TIM_Channel_2;
  TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
  TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
  TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
  TIM_ICInitStructure.TIM_ICFilter = 0x0;

  TIM_PWMIConfig(TIM3, &TIM_ICInitStructure);
   /* Select the TIM3 Input  Trigger: TI2FP2 */
  TIM_SelectInputTrigger(TIM3, TIM_TS_TI2FP2);  
  /* Select the slave Mode: Reset Mode */
  TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Reset);
  /*Enable the Master/Slave Mode */
  TIM_SelectMasterSlaveMode(TIM3, TIM_MasterSlaveMode_Enable);  
  /* TIM enable counter */
  TIM_Cmd(TIM3, ENABLE);
  /* Enable the CC2 Interrupt Request */
  TIM_ITConfig(TIM3, TIM_IT_CC2, ENABLE); 
 
  /*ОБРАБОТЧИК ПРЕРЫВАНИЯ*/
  void TIM3_IRQHandler(void)
 {
  /* Clear TIM3 Capture compare interrupt pending bit */
  TIM_ClearITPendingBit(TIM3, TIM_IT_CC2);

  /* Get the Input Capture value */
  IC2Value = TIM_GetCapture2(TIM3);

  if (IC2Value != 0)
  {
    /* Duty cycle computation */
    /* DutyCycle = (TIM_GetCapture1(TIM3) * 100) / IC2Value; */

    DutyCycle = TIM_GetCapture1(TIM3) - IC2Value;

    /* Frequency computation */
    Frequency = SystemCoreClock / IC2Value;
  }
  else
  {
    DutyCycle = 0;
    Frequency = 0;
  }
}
Плата STM32VLДискавери.
Насколько я понимаю длительность импульса в нсек:
DutyCycle * 4.2 нсек (тактовая частота 24 МГц)?
Реклама:
anton_1000 вне форума  
Непрочитано 16.10.2013, 13:01  
Oleg Galizin
Частый гость
 
Регистрация: 25.03.2010
Адрес: Voronezh
Сообщений: 35
Сказал спасибо: 0
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
Oleg Galizin на пути к лучшему
По умолчанию Re: Измерение длительности импульса STM32

Попробуйте использовать вот этот режим:
101: Gated Mode - The counter clock is enabled when the trigger input (TRGI) is high. The counter stops (but is not reset) as soon as the trigger becomes low. Both start and stop of the counter are controlled.
Недостаток подхода - если придет второй импульс - то посчитается суммарная длительность.
Можно также использовать 110: Trigger Mode - этот только стартует таймер. Потом спад импульса нужно будет ловить как то отдельно.
Все эти биты в TIMx slave mode control register (TIMx_SMCR)
Oleg Galizin вне форума  
Непрочитано 16.10.2013, 13:10  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Измерение длительности импульса STM32

Ну да, только после TRGI low вызывать DMA и отправлять данные в RAM.
Easyrider83 вне форума  
Непрочитано 16.10.2013, 13:52  
niXto
Почётный гражданин KAZUS.RU
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: Измерение длительности импульса STM32

Сообщение от anton_1000 Посмотреть сообщение
DutyCycle = (TIM_GetCapture1(TIM3) * 100) / IC2Value;
Это что такое?? 256 должно быть
niXto вне форума  
Непрочитано 16.10.2013, 14:27  
nahimovv
Заблокирован
 
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
nahimovv на пути к лучшему
По умолчанию Re: Измерение длительности импульса STM32

Сообщение от niXto Посмотреть сообщение
Это что такое??
В процентах, наверное.
Цитата:
256 должно быть
Не... 257,5 !
nahimovv вне форума  
Непрочитано 16.10.2013, 14:36  
nahimovv
Заблокирован
 
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
nahimovv на пути к лучшему
По умолчанию Re: Измерение длительности импульса STM32

Сообщение от anton_1000 Посмотреть сообщение
Хочу определить длительность импульса. Использую пример standart peripherial librery - PWM Input. Каким образом настроить таймер или в каком месте присваивать TMRxCNT = 0, чтобы по переднему фронту импульса счётчик времени начинал считать с НУЛЯ?
Менять полярность по входу, сбрасывать TMRxCNT нет смысла.
Посмотрите в даташите, там всё расписано. Ещё есть AN4013 "STM32F1xx, STM32F2xx, STM32F4xx, STM32L1xx, STM32F30/31/37/38x timer overview".
Цитата:
Насколько я понимаю длительность импульса в нсек:
DutyCycle * 4.2 нсек (тактовая частота 24 МГц)?
Нет, 41,6666666 нСек.
nahimovv вне форума  
Непрочитано 16.10.2013, 14:37  
Alex9797
Почётный гражданин KAZUS.RU
 
Аватар для Alex9797
 
Регистрация: 20.08.2010
Адрес: Днепр
Сообщений: 8,568
Сказал спасибо: 5,042
Сказали Спасибо 10,611 раз(а) в 3,604 сообщении(ях)
Alex9797 на пути к лучшему
По умолчанию Re: Измерение длительности импульса STM32

Сообщение от niXto Посмотреть сообщение
Это что такое?? 256 должно быть
Может это и есть 256 в десятичной, а записано 100 в 16-ой
Alex9797 вне форума  
Непрочитано 16.10.2013, 14:44  
nahimovv
Заблокирован
 
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
nahimovv на пути к лучшему
По умолчанию Re: Измерение длительности импульса STM32

Ромашка? Дайте ссыль на новую формулу вычисления процентов!
nahimovv вне форума  
Непрочитано 16.10.2013, 15:23  
anton_1000
Прописка
 
Регистрация: 31.08.2008
Сообщений: 117
Сказал спасибо: 4
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
anton_1000 на пути к лучшему
По умолчанию Re: Измерение длительности импульса STM32

Сообщение от niXto Посмотреть сообщение
Это что такое?? 256 должно быть
Это значение в процентах от периода, насколько, я понимаю
anton_1000 вне форума  
Непрочитано 16.10.2013, 16:19  
anton_1000
Прописка
 
Регистрация: 31.08.2008
Сообщений: 117
Сказал спасибо: 4
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
anton_1000 на пути к лучшему
По умолчанию Re: Измерение длительности импульса STM32

Сообщение от niXto Посмотреть сообщение
Это что такое?? 256 должно быть
Это значение в процентах от периода, насколько, я понимаю
anton_1000 вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Измерение длины импульса AGAT0365 Микроконтроллеры, АЦП, память и т.д 11 15.05.2013 21:09
STM32 измеренние длительности импульса anton_1000 Песочница (вопросы новичков) 22 26.08.2012 22:54
Ограничитель длительности импульса Pajatel Микроконтроллеры, АЦП, память и т.д 161 05.04.2012 00:35
Измерение длительности импульса fawkes Микроконтроллеры, АЦП, память и т.д 16 09.11.2008 16:41
[Решено] способы определения длительности импульса waterfox Измерительное оборудование 1 14.06.2005 23:57


Часовой пояс GMT +4, время: 03:49.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot