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

 
 
> Счет частоты
djmixi(Димка)
сообщение Mar 14 2007, 13:45
Сообщение #1


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

Группа: Новичок
Сообщений: 75
Регистрация: 13-02-07
Пользователь №: 25 307



Товарщи помогите посчитать частоту...нужно фискировать изменение частоты 400 кГц с точностью в 1кГц.
я пишу на Алгоритме Билдере и думаю реализвать это так:
1. Настраиваю таймер0 внешний пин Т0.
2. Записываю в TCNT0 254.
3. По приходу импульса таймер переполняектся и срабатвывает прерывание от таймера 0 - там я прибавляю 1 к X.
4. В течении определенного времени провожу подсчет этих прерываний (по показанию X).
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Demeny
сообщение Mar 14 2007, 14:29
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 648
Регистрация: 11-02-06
Из: Санкт-Петербург
Пользователь №: 14 237



Цитата(djmixi(Димка) @ Mar 14 2007, 13:45) *
Товарщи помогите посчитать частоту...нужно фискировать изменение частоты 400 кГц с точностью в 1кГц.
я пишу на Алгоритме Билдере и думаю реализвать это так:
1. Настраиваю таймер0 внешний пин Т0.
2. Записываю в TCNT0 254.
3. По приходу импульса таймер переполняектся и срабатвывает прерывание от таймера 0 - там я прибавляю 1 к X.
4. В течении определенного времени провожу подсчет этих прерываний (по показанию X).

Всё много проще. Есть два основных метода измерения частоты.

1. Подсчёт импульсов за единицу времени. В этом случае точность измерения зависит от того, сколько импульсов у Вас уложится за выбранную Вами единицу времени и насколько точно Вы сможете отмерить эту единицу.
Именно этот метод лежит в основе предложенного Вами способа. Но реализован он у Вас нерационально (на мой взгляд). Предлагаю так. Счётчик 0 (8 битный) используем для отмеривания временных интервалов измерения. В Вашем случае этот интервал должен составлять не менее 1 мс. А счётчик 1 (16 битный) настраиваем на подсчёт импульсов с ножки Т1, куда и заводим исследуемую частоту. Прерывания будет генерить счётчик 0, например, по переполнению. В процедуре обработки считываем текущие показания счётчика 1, обнуляем его и вычисляем новое значение частоты.

2. Заполнение каждого пришедшего импульса импульсами существенно более высокой известной частоты. Этот способ применяется тогда, когда новое измеренное значение надо получать существенно чаще, чем это позволяет первый способ, вплоть до каждого периода. Для получения заявленной точности заполнение в Вашем случае будет частотой свыше 160 МГц, поэтому для реализации на AVR этот способ непригоден.


--------------------
Сделано в Китае. Упаковано в России.
Go to the top of the page
 
+Quote Post
defunct
сообщение Mar 15 2007, 02:34
Сообщение #3


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Считаем количество импульсов и тактов, делим одно на другое и домножаем на частоту чипа. Погрешность измерения для исходного сигнала при правильной реализации будет менее 1Гц.

Как это сделать:
Такты отмеряем таймером. А импульсы - программным опросом.
Заряжаем прерывание по OVF, запускаем таймер. запрещаем все прерывания кроме таймера. В цикле опрашиваем порт и увеличиваем счетчик импульсов. В обработчике прерывания таймера - отключаем таймер, считаем, выводим рез-тат, сбрасываем счетчик импульсов.

ps: сорри если повторил кого-то, ветку не читал.
Go to the top of the page
 
+Quote Post



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

 


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


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