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

 
 
> Счет частоты
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
=GM=
сообщение Mar 16 2007, 01:18
Сообщение #4


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(defunct @ Mar 14 2007, 23:34) *
сорри если повторил кого-то, ветку не читал.

Ну и мы читать не будем(:-)! Вообще-то зачем отвечать, не читая? Выглядит всё это так, как будто вы, чиновник от программирования(:-), такой важный и исполненый сознания собственного достоинства, снизошли до нас грешных, не читая выдали решение...и всё это для галочки(:-). Ничего личного, но так выглядит со стороны.
Цитата(defunct @ Mar 14 2007, 23:34) *
Считаем количество импульсов и тактов, делим одно на другое и домножаем на частоту чипа. Погрешность измерения для исходного сигнала при правильной реализации будет менее 1Гц.
Как это сделать:
Такты отмеряем таймером. А импульсы - программным опросом.
Заряжаем прерывание по OVF, запускаем таймер. запрещаем все прерывания кроме таймера. В цикле опрашиваем порт и увеличиваем счетчик импульсов. В обработчике прерывания таймера - отключаем таймер, считаем, выводим рез-тат, сбрасываем счетчик импульсов.

Но вот такой вопрос по вашей методе. Импульсы вы отмеряете программным опросом, а входная частота 6 МГц, как вы отмерите импульсы такой частоты? Я, например, не уверен, что возможно. Покажите, как отмерить!

Ещё вопрос по точности измерения. Измерение по предложенному вами методу за время измерения в 1 с даст точность ±1 Гц, а есть метода, которая даст не хуже ±0,02 Гц на том же секундном окне. Почувствуйте, что называется, разницу. Почти два порядка.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
defunct
сообщение Mar 16 2007, 02:46
Сообщение #5


кекс
******

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



Цитата(=GM= @ Mar 16 2007, 00:18) *
....
Ничего личного, но так выглядит со стороны.

Я вас понимаю, и возможно подумал бы тоже самое про того кто так ответил.
Но я выбирал между тем постить ответ или поспать лишние 10 минут, так что извиняйте.

Цитата
Но вот такой вопрос по вашей методе. Импульсы вы отмеряете программным опросом, а входная частота 6 МГц, как вы отмерите импульсы такой частоты? Я, например, не уверен, что возможно. Покажите, как отмерить!

конечно же никак. но для 400kHz как в сабжевом сигнале подойдет.

Цитата
Ещё вопрос по точности измерения. Измерение по предложенному вами методу за время измерения в 1 с даст точность ±1 Гц, а есть метода, которая даст не хуже ±0,02 Гц на том же секундном окне. Почувствуйте, что называется, разницу. Почти два порядка.

Я не упоминал о секндном окне. Речь шла об окне таймера!
Метода с делителем внесет доп. элемент.
Go to the top of the page
 
+Quote Post



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

 


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


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