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

 
 
> Измерение частоты ATmega168
oles_k76
сообщение Apr 22 2007, 14:17
Сообщение #1


RF
***

Группа: Свой
Сообщений: 321
Регистрация: 12-04-06
Из: Berlin
Пользователь №: 16 046



подскажите как правильно определить максимальную входную частоту,
которую необходимо померять(очень точно,посчитав кажый импульс)
за интервал времени сто секунд,
частота опорного генератора 20мгц


--------------------
теперь питание компьютера можно отключить
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Валентиныч
сообщение Apr 24 2007, 16:06
Сообщение #2


Профессионал
****

Группа: Свой
Сообщений: 553
Регистрация: 17-02-05
Из: Свердловская обл.
Пользователь №: 2 712



Уважаемые, вспомним первоначальную постановку вопроса:
Цитата(олесь @ Apr 22 2007, 17:17) *
подскажите как правильно определить максимальную входную частоту, которую необходимо померять(очень точно,посчитав кажый импульс)
за интервал времени сто секунд, частота опорного генератора 20мгц

Если я правильно понимаю, человек интересуется способом (как?), позволяющим с максимальной точностью измерить частоту (какую?) за определенный интервал времени.
Зачем ему это нужно, и что он с этими результатами будет делать - вопрос третий.

ИМХО: для измерения макимально возможной частоты нужно минимизировать длительность промежуточных процедур. Например - по возможности исключить потери на вход/выход из прерываний. Это время, как известно, составляет в среднем 4 машинных такта. Плюс 2-3 такта на прочие действия. Какие уж тут 10 МГц на входе, при клоке 20 МГц?
Очевидно, что простой опрос порта (2 такта ) с последующим инкрементом (2 такта для регистра длиннее 1-го байта) + неизбежные прочие "мелочи" (1-2 такта) - это тот минимум, ниже которого не опуститься. Т.е. реально на регистрацию одного события по входу будет тратиться не менее 4-6 машинных тактов. Отсюда вытекает максимальная частота входного сигнала - 4 МГц. На пределе!
Второй вопрос - точность измерения. Здесь она определяется точностью задания "ворот". Относительную точность "клокирования" (в тактах) реализовать не сложно, а вот обеспечить долговременную стабильность частоты расхожего "контроллерного" кристалла весьма и весьма не просто. И далеко не факт, что в течение 100 секунд эта "опора" будет стабильной...
Так что какие уж тут 0,02 Гц? Точнее - о какой достоверности подобных измерений идет речь?
Или я чего-то сильно не понимаю. smile.gif

P.S. В моем первом посте ошибка - потребная длина регистра, конечно, не 64, а 32 бита. Размахнулся... blink.gif


--------------------
Закономерность: Чем больше узнаю, тем меньше знаю...
Любые мнения, даже ошибочные, имеют право на существование.
Чем лучше узнаю людей, тем больше нравятся собаки...
Go to the top of the page
 
+Quote Post
=GM=
сообщение Apr 24 2007, 19:06
Сообщение #3


Ambidexter
*****

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



Цитата(Валентиныч @ Apr 24 2007, 12:06) *
Уважаемые, вспомним первоначальную постановку вопроса.
Если я правильно понимаю, человек интересуется способом (как?), позволяющим с максимальной точностью измерить частоту (какую?) за определенный интервал времени.
Зачем ему это нужно, и что он с этими результатами будет делать - вопрос третий.
ИМХО: для измерения макимально возможной частоты нужно минимизировать длительность промежуточных процедур. Например - по возможности исключить потери на вход/выход из прерываний. Это время, как известно, составляет в среднем 4 машинных такта. Плюс 2-3 такта на прочие действия. Какие уж тут 10 МГц на входе, при клоке 20 МГц?

Действительно, в погоне за исчезающе малой ошибкой потеряли исходный вопрос(:-)...
Прежде всего замечу, что если хочется мерить максимально точно, то на время измерения лучше забыть о прерываниях, или по крайней мере на моменты обработки начала и окончания окна.
Цитата(Валентиныч @ Apr 24 2007, 12:06) *
Очевидно, что простой опрос порта (2 такта ) с последующим инкрементом (2 такта для регистра длиннее 1-го байта) + неизбежные прочие "мелочи" (1-2 такта) - это тот минимум, ниже которого не опуститься. Т.е. реально на регистрацию одного события по входу будет тратиться не менее 4-6 машинных тактов. Отсюда вытекает максимальная частота входного сигнала - 4 МГц. На пределе!
Второй вопрос - точность измерения. Здесь она определяется точностью задания "ворот"

Попробуем разобраться с червём сомнения, который точит Валентиныча(:-). Для автора топика опишу вгрубе алгоритм измерения методом ворот максимальной частоты 10 МГц, поданной на ножку Т0. Таймер 1 работает в режиме измерения системного клока.

1) Исходное состояние счётчика0 и таймера1 - остановлены и обнулены.

2) Запустим таймер1 и таймер0 двумя командами
Код
    sts    0x81,r12
    sts    0x25,r13
После выполнения инструкций T1=Nнач=2, T0=Mнач=0, в регистрах r12, r13 соответствующие настройки CSij для останова. Все переменные - 32-разрядные.

3) Ждём СТО секунд (делая попутно какие-то вещи и учитывая переносы таймеров в Mкон, Nкон).

4) Остановим таймер1 и таймер0 двумя командами
Код
    sts    0x81,r14
    sts    0x25,r15
После выполнения инструкций T1=Nкон=2'000'000'002, T0=Mкон=1'000'000'000, в регистрах r14, r15 соответствующие настройки CSij для останова.

5) По формуле Fx=Fo*(Mкон-Mнач±1)/(Nкон-Nнач) вычисляем измеренную частоту

Fx=20000000*(1000000000-0±1)/(2000000002-2)=10000000±0.01 Гц.

Никаких чудес, никаких прерываний, частота на входе 10 МГц, точность результата не хуже ±0.01 Гц. Программы умножения 32х32 и деления 64/32 в Сети можно найти на каждом углу(:-). Фактически, мною приведена готовая программа измерения, если вы меня понимаете.
Цитата(Валентиныч @ Apr 24 2007, 12:06) *
Относительную точность "клокирования" (в тактах) реализовать не сложно, а вот обеспечить долговременную стабильность частоты расхожего "контроллерного" кристалла весьма и весьма не просто. И далеко не факт, что в течение 100 секунд эта "опора" будет стабильной...
Так что какие уж тут 0,02 Гц? Точнее - о какой достоверности подобных измерений идет речь?
Или я чего-то сильно не понимаю. smile.gif

Вы говорите всё правильно, скажу только, что если уж вы решились мерять 10 МГц с такой точностью, то надо бы поставить опору, соответствующей точности, ну или по крайней мере раскошелиться на термокомпенсированный кварцевый генератор.

Есть относительно дешёвое решение - поочередно проводить измерения и калиброваться от хорошей опоры, это может быть радиосигнал, или GPS. То есть, используя секундные импульсы с GPS, сначала измерили частоту опорного генератора, используя ту же формулу и считая, что входная частота известна, затем измерили входную частоту, подставляя в формулу вычисления измеренную опорную частоту. Единственное существенное ограничение данного решения - кратковременная стабильность опорного генератора (на интервале 100 с) должна быть порядка 1Е-9 или лучше.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
Валентиныч
сообщение Apr 25 2007, 09:31
Сообщение #4


Профессионал
****

Группа: Свой
Сообщений: 553
Регистрация: 17-02-05
Из: Свердловская обл.
Пользователь №: 2 712



Цитата(=GM= @ Apr 24 2007, 22:06) *
Попробуем разобраться с червём сомнения, который точит Валентиныча.

Да нет у меня, по большому счету, никаких сомнений. smile.gif Просто я в подобных вопросах реалист-скептик, привыкший все считать для наихудшего варианта.
Ваши рассуждения (и не только Ваши, уважаемый GM) в общем верны. Точнее - верны в частном случае. Здесь же речь идет о измерении частоты сигнала одного порядка с частотой клока, и весьма ограниченными аппаратными ресурсами.
Если бы у нас был в наличии таймер длиной 32 бита - никаких возражений не последовало бы.
Но максимум, что мы имеем в AVR - 16 разрядов, т.е. каждые 3,27... мс мы будем вынуждены вываливаться в прерывание по переполнению, тратя на это (фактически - прекращая счет) как минимум 5-6 машинных циклов. Свего за время 100 секунд таких пауз будет более 30 тысяч.
Развейте это мое сомнение, и я сниму шляпу перед Вами.

Цитата(=GM= @ Apr 24 2007, 22:06) *
... если уж вы решились мерять 10 МГц с такой точностью, то надо бы поставить опору, соответствующей точности, ну или по крайней мере раскошелиться на термокомпенсированный кварцевый генератор.

Это не я решил. Более того, я как раз уверен, что этого не получится.
Не сбрасываете со счетов, что вопрос задан в разделе для начинающих, поэтому давайте не будем ориентироваться на прецизионные термокомпенсированные клокеры, которые сами по себе - большая сложность, и уж тем более - на всякие внешние источники синхронизации, типа GPS, и т.д.
Исходим из возможностей "среднеститистической" Меги в руках не очень опытного юзера.
P.S. Сразу скажу - я не считаю себя даже средненьким программером. Скорее - так, ламер-любитель.


--------------------
Закономерность: Чем больше узнаю, тем меньше знаю...
Любые мнения, даже ошибочные, имеют право на существование.
Чем лучше узнаю людей, тем больше нравятся собаки...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- олесь   Измерение частоты ATmega168   Apr 22 2007, 14:17
- - Валентиныч   Вопрос поставлен не корректно. За 100 секунд можно...   Apr 22 2007, 14:31
- - =AVR=   В лоб (используя таймер в режиме счетчика) - теоре...   Apr 22 2007, 15:41
- - zorromen   А если логику приделать ... счетчик например ... т...   Apr 22 2007, 15:42
- - CD_Eater   Если подсчитывать количество периодов измеряемого ...   Apr 22 2007, 15:51
|- - WHALE   Цитата(CD_Eater @ Apr 22 2007, 16:51) Есл...   Apr 22 2007, 17:47
- - CD_Eater   ЦитатаА меандром-то зачемВ ДШ озвучено требование ...   Apr 22 2007, 21:29
- - Dopler   http://electronix.ru/forum/lofiversion/index.php/t...   Apr 22 2007, 23:00
- - =AVR=   Не совсем так. Здесь автору вопроса нужно мерять м...   Apr 22 2007, 23:14
|- - =GM=   Цитата(Dopler @ Apr 22 2007, 20:00) http:...   Apr 23 2007, 00:51
|- - demaven   Точность измерения на 100-секундном интервале сост...   Apr 23 2007, 07:53
||- - =GM=   Цитата(demaven @ Apr 23 2007, 03:53) Уваж...   Apr 23 2007, 12:50
||- - defunct   Цитата(demaven @ Apr 23 2007, 06:53) Точн...   Apr 23 2007, 13:25
||- - =GM=   Цитата(defunct @ Apr 23 2007, 09:25) Точн...   Apr 23 2007, 13:56
||- - defunct   Цитата(=GM= @ Apr 23 2007, 12:56) Добавлю...   Apr 23 2007, 14:04
||- - mse   Цитата(defunct @ Apr 23 2007, 15:04) Тут ...   Apr 23 2007, 14:30
||- - =GM=   Цитата(defunct @ Apr 23 2007, 10:04) Тут ...   Apr 23 2007, 14:33
||- - defunct   Цитата(=GM= @ Apr 23 2007, 13:33) Это что...   Apr 23 2007, 18:11
||- - =GM=   Цитата(defunct @ Apr 23 2007, 14:11) погр...   Apr 23 2007, 19:32
||- - defunct   Цитата(=GM= @ Apr 23 2007, 18:32) Да с че...   Apr 23 2007, 22:22
||- - =GM=   Цитата(defunct @ Apr 23 2007, 19:22) Для ...   Apr 23 2007, 22:54
||- - defunct   Цитата(=GM= @ Apr 23 2007, 21:54) Я утвер...   Apr 24 2007, 00:23
||- - =GM=   Цитата(defunct @ Apr 23 2007, 21:23) 1 ил...   Apr 24 2007, 01:29
||- - defunct   ЦитатаКак это не важно? Это очень важно, ошибка ум...   Apr 24 2007, 14:18
||- - mse   Цитата(defunct @ Apr 24 2007, 15:18) Умен...   Apr 24 2007, 14:49
|||- - defunct   Ок, приношу всем кого задел свои извинения. Я здес...   Apr 24 2007, 15:40
||- - =GM=   Да, интересное кино. Я смотрю, вы отвечаете только...   Apr 24 2007, 15:23
|- - =AVR=   Цитата(=GM= @ Apr 23 2007, 01:51) Метод з...   Apr 23 2007, 15:41
|- - =GM=   Цитата(=AVR= @ Apr 23 2007, 11:41) Captur...   Apr 23 2007, 16:19
- - =AVR=   ЦитатаНадо-то всего два прерывания на одно измерен...   Apr 23 2007, 16:56
|- - =GM=   Цитата(Валентиныч @ Apr 25 2007, 05:31) З...   Apr 25 2007, 13:09
|- - Валентиныч   Цитата(=GM= @ Apr 25 2007, 16:09) Не знаю...   Apr 25 2007, 13:59
|- - =GM=   Цитата(Валентиныч @ Apr 25 2007, 09:59) О...   Apr 25 2007, 14:30
- - =AVR=   Какие "4 мгц на пределе"?? При наличии а...   Apr 24 2007, 16:13
- - add   ЦитатаЕсли бы у нас был в наличии таймер длиной 32...   Apr 25 2007, 10:14
|- - Валентиныч   Цитата(add @ Apr 25 2007, 13:14) Таймер т...   Apr 25 2007, 10:27
- - add   ЦитатаПардон, что он продолжает считать? Цитатамс ...   Apr 25 2007, 10:35
- - Валентиныч   Повторю вопрос - что считаем? Если внутренний клок...   Apr 25 2007, 10:59
- - add   ЦитатаЕсли внутренний клок, то без проблем. А как ...   Apr 25 2007, 11:11
- - олесь   спасибо всем участникам информация очень помогла   May 5 2007, 13:52


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 05:19
Рейтинг@Mail.ru


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