Например TDA7294

Форум РадиоКот • Просмотр темы - Объясните по определению частоты входящих импульсов.
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Ср апр 24, 2024 01:43:28

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 2 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Объясните по определению частоты входящих импульсов.
СообщениеДобавлено: Чт май 19, 2011 02:26:36 
Первый раз сказал Мяу!

Зарегистрирован: Вт май 03, 2011 19:57:37
Сообщений: 20
Рейтинг сообщения: 0
Собрал устройство, которое при превышении определенной частоты входных импульсов зажигает светодиод.
Входные импульсы - это импульсы тахометра автомобиля. Частота импульсов вдвое больше частоты вращения коленчатого вала двигателя.

Алгоритм работы таков:
На пин контроллера приходят те самые импульсы, контроллер сконфигурирован так что по приходу имульса генерируется прерывание. в главной программе постоянно инкрементируется счетчик (буду называеть его клоками), а в прерывании значение этого счетчика сравнивается с заданным. Т.е. мы смотрим сколько клоков проходит за период входного импульса и сравниваем кол-во клоков с заданным.
на GPIO2 весит кнопка при нажатии которой запоминается сколько клоков прошло за период входного импульса.

вот для большего понимания немного кода:

Код:
unsigned long clk=0;
unsigned long fr=0;

iterrupt pulse(){ // обработчик прерываний
  GIE=0;//запрещаем прерывания
  if(GPIO2==0) //если нажата кнопка запоминания текущей частоты
    fr=clk;
  }
  if(clk<fr){
     GPIO0=1; // зажигаем LED
  }else GPIO0=0; //гасим LED
  clk=0;
  GIE=1; //разрешаем прерывания
}

int main(){
  // ...инициализация и конфигурирование контроллера
  while(1) clk++;
  return 0;
}


При оборотах двигателя 840об\мин=16об\сек=32Гц за каждый период импульса клоков насчитывается 1500.

Контроллер тактируется внутренним генератором 4МГц. Машинный цикл - 4 такта.
Я так понимаю что за одну секунду должно насчитываться 1.000.000 клоков.
Между входными импульсами насчитывается 1500 клоков. Следовательно 1.000.000 \ 1500 => частота импульсов ~666 Гц что соответсвует 333 об\сек = 18000об\мин :blink: :wall:

как так?? как посчитать правильно частоту при такой реализации (на прерывании по переднему фронту импульса)? А то получается что 1500 это не машинные циклы а "попугаи" какието))

С Ув.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Объясните по определению частоты входящих импульсов.
СообщениеДобавлено: Чт май 19, 2011 08:03:24 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Конечно попугаи. Даже если бы clk был char, он не инкрементировался бы за 1 МЦ. А он у Вас ещё и long :)
Юзайте таймеры. Они могут "тикать" каждый МЦ.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 25


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y