Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

STM32F100C4T6B частотомер

Чт авг 01, 2013 16:39:47

STM32F100C4T6B

Пытаюсь сделать частотомер.
Вывод PA6.
Когда дотрагиваюсь пальцем к выводу - показывает 0...10 KHz (в зависимости как сильно держусь за вывод).
Подключаю вывод с наушников компьютера (предварительно запустив программу - генератор). Ничего не считает.

Код:
Код:
// инициализация таймера
void InitTimer(void) {
 
  //Разрешение прерывания от таймера 3 и установка приоритета
  NVIC_SetPriority(TIM3_IRQn, 1);
  NVIC_EnableIRQ(TIM3_IRQn);

  /*Инициализация таймера TIM3.*/
  RCC->APB1ENR |= RCC_APB1ENR_TIM3EN;//Включаем тактирование TIM3
  TIM3->CCMR1 |= TIM_CCMR1_CC1S_0;//Выбор активного входа. Записываем "01" в биты CC1S - связываем регистр TIM3_CCR1 со входом TI1
  TIM3->CCMR1 |= (TIM_CCMR1_IC1F_0 | TIM_CCMR1_IC1F_1);//Выбор длительнотси действия фильтра - 8 тактов. IC1F = 0011.
  TIM3->CCER &= ~TIM_CCER_CC1P;//По переднему фронту - положительный перепад импульса
  TIM3->CCMR1 &= ~TIM_CCMR1_IC1PSC;//Предделитель отключен
  TIM3->CCER |= TIM_CCER_CC1E;//Разрешен захват значения счетчика в регистр TIM3_CCR1
  TIM3->DIER |= TIM_DIER_CC1IE;//Разрешена генерация прерывания при захвате
  TIM3->CR1 |= TIM_CR1_CEN;//Запускаем счет таймера
}


Код:
// прерывание таймера
void TIM3_IRQHandler(void) {
 
    fcount++;
}


fcount обнуляется каждую секунду.

Re: STM32F100C4T6B частотомер

Чт авг 01, 2013 16:57:12

Подключаю вывод с наушников компьютера (предварительно запустив программу - генератор). Ничего не считает.
уровень сигнала проверяли ? может он недостаточен для цифрового входа. Подключите через емкость и резистивный делитель http://sub.allaboutcircuits.com/images/03311.png , чтобы вывести на середину питания

Re: STM32F100C4T6B частотомер

Чт авг 01, 2013 19:48:46

Да, сигнал был слабоват.
Подключил через трпнзистор - заработало !
Ответить