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

 
 
> Счет частоты
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
djmixi(Димка)
сообщение Mar 14 2007, 15:23
Сообщение #3


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

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



[quote name='Demeny' post='223613' date='Mar 14 2007, 17:29']
[quote name='djmixi(Димка)' post='223590' date='Mar 14 2007, 13:45']
Товарщи помогите посчитать частоту...нужно фискировать изменение частоты 400 кГц с точностью в 1кГц.
я пишу на Алгоритме Билдере и думаю реализвать это так:
1. Настраиваю таймер0 внешний пин Т0.
2. Записываю в TCNT0 254.
3. По приходу импульса таймер переполняектся и срабатвывает прерывание от таймера 0 - там я прибавляю 1 к X.
4. В течении определенного времени провожу подсчет этих прерываний (по показанию X).
[/quote]
Всё много проще. Есть два основных метода измерения частоты.

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

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

СПАСИБО ОСОБЕННО ЗА ПЕРВЫЙ СПОСПОБ!
но возникал проблемма у меня тини26 контроллер там 8 разр таймер 0 - у него есть доступ в T0 а у первого таймера 16 разрядного нет настройки на T0....что делать???


[quote name='djmixi(Димка)' date='Mar 14 2007, 18:16' post='223630']
[quote name='Demeny' post='223613' date='Mar 14 2007, 17:29']
[quote name='djmixi(Димка)' post='223590' date='Mar 14 2007, 13:45']
Товарщи помогите посчитать частоту...нужно фискировать изменение частоты 400 кГц с точностью в 1кГц.
я пишу на Алгоритме Билдере и думаю реализвать это так:
1. Настраиваю таймер0 внешний пин Т0.
2. Записываю в TCNT0 254.
3. По приходу импульса таймер переполняектся и срабатвывает прерывание от таймера 0 - там я прибавляю 1 к X.
4. В течении определенного времени провожу подсчет этих прерываний (по показанию X).
[/quote]
Всё много проще. Есть два основных метода измерения частоты.

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

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

СПАСИБО ОСОБЕННО ЗА ПЕРВЫЙ СПОСПОБ!
но возникал проблемма у меня тини26 контроллер там 8 разр таймер 0 - у него есть доступ в T0 а у первого таймера 16 разрядного нет настройки на T0....что делать???
ДЛЯ этого я и извращаюсь с таймером 0 - запихиваю туды 16 раз переменную X а таймер 1 для временных интервалов...
Go to the top of the page
 
+Quote Post



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

 


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


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