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

 
 
> Сревнение двух частот
Allregia
сообщение May 7 2012, 21:07
Сообщение #1


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

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Есть два кварцевых генератора, частота 28мГц, с точностью/стабильностью 50ррм.
Процессор STM32F103 должен определить у какого генератора частота выше.
Абсолютное значение не интересует.
Я пока ничего умнее не придумал, чем подать на два счетчика, запустить их одновременно, через какое-то время остановить и посмотреть на разницу в показаниях.
Какое достаточное время для измерения?
Или может есть другой способ?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Allregia
сообщение May 20 2012, 15:41
Сообщение #2


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

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Цитата(=GM= @ May 20 2012, 11:48) *
1) Читаю я всегда внимательно, скажу больше, даже внимательнее, чем вы пишете.


Очень рад. Тогда вы несомненно можете дать массу полезных советов.

Цитата
2) Кольцевой буфер не так работает, как вы описываете.


В моем представлении, есть буфер, есть два указателя - один на запись, другой на чтение, после каждого чтения идет инкремент указателя чтения, по каждой записи - инкремент указателя записи. (В моем случае это происходит по прерываниям, но это неважно).
Инкременты разумеется, по модулю размера буфера (поскольку он кольцевой).
В чем я не прав?

Цитата
3) Постановка вами задачи и ваши комментарии, мягко говоря, вызывают сомнения в том, что вы в теме.
4) [Чтобы развеять ваши встречные сомнения, скажу, что ваши 28МГц я могу измерить с погрешностью порядка 200 Гц за ОДНУ миллисекунду]


Я и спрашивал совета как лучше это сделать.
За 1мс пройдет 28000 импульсов одного генератора.
Чтобы засечь минимальную разницу, надо чтобы со второго пришло или 27999 или 28001 импульс. Итого разница составит 1кГц.
Если вы знаете секрет как поймать за 1мс 200гц имеющимися в распоряжении средствами - расскажите, думаю всем начинающим будет интересно.
Go to the top of the page
 
+Quote Post
blackfin
сообщение May 20 2012, 16:10
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(Allregia @ May 20 2012, 19:41) *
В моем представлении, есть буфер, есть два указателя - один на запись, другой на чтение, после каждого чтения идет инкремент указателя чтения, по каждой записи - инкремент указателя записи. (В моем случае это происходит по прерываниям, но это неважно).
Инкременты разумеется, по модулю размера буфера (поскольку он кольцевой).
В чем я не прав?

Чисто формально, прежде чем выполнять инкремент указателя записи, необходимо убедиться в том, что буфер не полон и прежде, чем выполнять инкремент указателя чтения, необходимо убедиться в том, что буфер не пуст.
Go to the top of the page
 
+Quote Post
Allregia
сообщение May 20 2012, 16:58
Сообщение #4


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

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Цитата(blackfin @ May 20 2012, 18:10) *
Чисто формально, прежде чем выполнять инкремент указателя записи, необходимо убедиться в том, что буфер не полон и прежде, чем выполнять инкремент указателя чтения, необходимо убедиться в том, что буфер не пуст.


Это понятно. Тут другое - поскольку частота записи и частота чтения чуть-чуть отличаются, через некоторое количество "оборотов" кольцевого буфера один указатель догонит другой.
Повторю еще раз:
Сейчас начальные условия - чтение начинается после заполнения половины буфера, расстояние между указателями и равно этой половине.
Зная макс. допустимую разность частот и размер буфера можно посчитать через склько оборотов произойдет "наезд" и таким образом посчитать максимульную длину передачи без переполнения.
Идея состоит в том, что если знать в какую сторону побежит указатель чтения относительно указателя записи - будет догонять или отставать (т.е. от знака разности частот), можно действовать по другому:
- если частота чтения ниже частоты записи, то не надо ждать заполнения буфера, ставим указатель чтения сразу за указателем записи.
- если частота чтения выше, то дожидаемся заполнения всего буфера, и ставим указатель чтения перед указателем записи.
Таким образом, по сравнению с имеющимся вариантом, виртуальный размер буфера как бы вдвое увеличится, при том-же его физическом размере, поскольку начальная разница между указателями будет равна не половине буфера а целому.
Т.е. можно или увеличить вдвое длину передачи, или при той-де длине уменьшить вдвое буфер.
Не знаю, может я как-то сумбурно обьясняю, но вроде должно быть понятно.
Если я в чем-то не прав - обьясните пожалуйста.
К тому же, мне крайне любопытно как за 1мс поймать разность частот, меньшую одного импульса, как утверждалось выше.
Go to the top of the page
 
+Quote Post
=GM=
сообщение May 21 2012, 06:34
Сообщение #5


Ambidexter
*****

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



Цитата(Allregia @ May 20 2012, 15:58) *
Тут другое - поскольку частота записи и частота чтения чуть-чуть отличаются, через некоторое количество "оборотов" кольцевого буфера один указатель догонит другой

Какая-то постановка задачи у вас не кошерная. В правильно спроектированной системе указатели "дышат", но никогда не перегоняют друг-друга. Кольцевой буфер предназначен именно для выравнивания неравномерности в поступлении данных и в их обработке. Если у вас данные начинают налезать на необработанные данные, значит, вы неправильно выбрали или длину буфера, или скорость обработки, или процессор, или алгоритм...

По поводу измерения частоты на голой авр методом захвата посмотрите здесь http://electronix.ru/forum/index.php?showt...29796&st=15. Можно читать с начала, а можно сразу с моего поста #23. На арме я такую задачу не делал, но схемы захвата там есть, принцип работы тот же самый, должно работать. По моей оценке, при тактовой частоте проца 72 МГц, можно измерить 28 МГц за 4 мс с погрешностью 100 Гц.

Цитата(Allregia @ May 20 2012, 15:58) *
К тому же, мне крайне любопытно как за 1мс поймать разность частот, меньшую одного импульса, как утверждалось выше

Увы, это ноу-хау, кстати, ваш земляк сделал примерно то же самое, он точно измеряет 1 МГц за 1 мс. Он сделал прибор на этой основе и успешно его продаёт. А я долгое время разрабатывал приборы дистанционного измерения момента вращения, давления и температуры. Радиоимпульс с частотой заполнения 450 МГц длительностью 17 мкс я измеряю за 50 мкс с точностью 1 Гц. Правда, там другая схемотехника, заказной эйсик и тексасовский дсп.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
Allregia
сообщение May 21 2012, 07:03
Сообщение #6


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

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Цитата(=GM= @ May 21 2012, 08:34) *
Какая-то постановка задачи у вас не кошерная. В правильно спроектированной системе указатели "дышат", но никогда не перегоняют друг-друга.


Разумеется. Но вы согласны, что при конечной величине буфера, и неограниченной длине передачи, переполнение рано или поздо произойдет?
Вот задача и состоит в том. чтобы выбрать макс. длину передачи, при заданном размере буфера. А оно зависит не только от размера буфера и разности частот, но и от алгоритма работы с буфером.

Цитата
Кольцевой буфер предназначен именно для выравнивания неравномерности в поступлении данных и в их обработке. Если у вас данные начинают налезать на необработанные данные, значит, вы неправильно выбрали или длину буфера, или скорость обработки, или процессор, или алгоритм...


Или вы так и не поняли условие задачи.
Скоость обработки существеннно ниже частоты поступления данных, для простоты можно принять что обработки вообще никакой нет, скорость процессора вообще ни на что не влияет, если за время между прерываниями он успевает взять данные по указателям и обработать сами указатели.

Буфер - какой есть, он его размера и алгоритма (а о алгоритме-то я в веду речь) зависит максимальная выбираемая длина передачи.
Поймите еще раз - размер буфера жестко задан, а вот длина передачи - как раз и выбирается так, чтобы небыло "наезда".
Но что плохого в том, чтобы изменением алгоритма, при том же размере буфера увеличить допустимую длину передачи почти вдвое?

Цитата
По поводу измерения частоты на голой авр методом захвата посмотрите здесь http://electronix.ru/forum/index.php?showt...29796&st=15. Можно читать с начала, а можно сразу с моего поста #23. На арме я такую задачу не делал, но схемы захвата там есть, принцип работы тот же самый, должно работать. По моей оценке, при тактовой частоте проца 72 МГц, можно измерить 28 МГц за 4 мс с погрешностью 100 Гц.


В той теме как раз более-менее все понятно, а вот тут - не очень.
По сути - вы предлагаете абсолтно тоже самое что предложил и я - за некоторое время посмотреть сколько насчитает счетчик, работаюбщий от частоты F1, и сколько другой счетчик, работающий от F2. Только у меня обе частоты внешние, а у вас одна- частота процессора, как я понял.

Но вот откуда беруться ваши конкретные цифры - совершенно непонятно.
К примеру - вы можете сказать откуда взялись 200гц за 1мс в моем примере (частоты равны 28Мгц +-50ррм)? Тактовая частота процессора неважна, хоть 20, хоть 200мгц, она в процессе счета не участвует.

Цитата
Увы, это ноу-хау, кстати, ваш земляк сделал примерно то же самое, он точно измеряет 1 МГц за 1 мс. Он сделал прибор на этой основе и успешно его продаёт. А я долгое время разрабатывал приборы дистанционного измерения момента вращения, давления и температуры. Радиоимпульс с частотой заполнения 450 МГц длительностью 17 мкс я измеряю за 50 мкс с точностью 1 Гц.


Измеряется что, длительность радиоимпульса или частота заполнения?
И какое соотношение точностей измеряемой частоты и тактовой частоты измерительного устройства?
В моем варианте, измерительное устройство НЕ обладает тактовым генератором более точным, чем измеряемые частоты.

Цитата
Правда, там другая схемотехника, заказной эйсик и тексасовский дсп.


Тоесть совершенно ничего общего с данной задачей.
Go to the top of the page
 
+Quote Post
Plain
сообщение May 21 2012, 09:02
Сообщение #7


Гуру
******

Группа: Участник
Сообщений: 6 776
Регистрация: 5-03-09
Из: Москва
Пользователь №: 45 710



Цитата(Allregia @ May 21 2012, 10:03) *
Скорость обработки существеннно ниже частоты поступления данных, для простоты можно принять что обработки вообще никакой нет

Кажется, на пустом месте тема. Если Вы данные на ходу не обрабатываете, то куда и зачем читаете? Неужели весь этот сыр-бор только лишь для банального подсчёта контрольной суммы?

Если данные всё же обрабатываете на ходу, то всего лишь, что надо, чтобы средняя скорость чтения была больше средней скорости записи. И никакие супербуферы не нужны. Например, писать байт, читать/обрабатывать слово, и т.п.
Go to the top of the page
 
+Quote Post
Allregia
сообщение May 21 2012, 09:19
Сообщение #8


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

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Цитата(Plain @ May 21 2012, 11:02) *
Кажется, на пустом месте тема. Если Вы данные на ходу не обрабатываете, то куда и зачем читаете? Неужели весь этот сыр-бор только лишь для банального подсчёта контрольной суммы?


Причем тут вообще контрольная сумма и где у меня написано, что данные не обрабатываются? Я сказал что в данном случае мы обсуждаем не обработку, а не зачем нужен этот буфер. Примите это как данность.

Цитата
Если данные всё же обрабатываете на ходу,


Не только обрабатываются, но еще и дальше передаются.
Но процесс обработки мы не обсуждаем, поскольку на работу с буфером он не влияет.

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


Не возражаю. Как вы преполагаете сделать, чтобы "средняя скорость чтения была больше средней скорости записи", если они тактируются от разных генераторов, имеющих одну, в пределах допуска частоту?
Готов выслушать все варианты, но только по теме а не "лишь бы поговорить о чем-то постороннем".
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Allregia   Сревнение двух частот   May 7 2012, 21:07
- - =GM=   Можно из одного сигнала сделать некий интервал, ск...   May 8 2012, 06:29
|- - ViKo   Цитата(=GM= @ May 8 2012, 09:29) Можно из...   May 9 2012, 07:48
|- - Семин   Если допустимо добавление компонентов, тогда навер...   May 9 2012, 09:19
|- - Allregia   Цитата(Семин @ May 9 2012, 11:19) Если до...   May 9 2012, 21:38
- - Семин   Если нужна только долговременная разница, то это ...   May 10 2012, 19:36
|- - Allregia   Цитата(Семин @ May 10 2012, 21:36) Если н...   May 10 2012, 21:20
|- - Herz   Цитата(Allregia @ May 11 2012, 00:20) Во ...   May 10 2012, 22:14
|- - Allregia   Цитата(Herz @ May 11 2012, 00:14) Всё стр...   May 13 2012, 05:19
|- - fox2trot   Цитата(Allregia @ May 13 2012, 09:19) Есл...   May 13 2012, 22:05
|- - Allregia   Цитата(fox2trot @ May 14 2012, 00:05) С ч...   May 14 2012, 05:22
- - fox2trot   Цитата(Allregia @ May 8 2012, 01:07) Абсо...   May 11 2012, 14:49
- - Семин   Можно просто запустить счётчики, периодически счи...   May 11 2012, 18:50
|- - Plain   Цитата(Семин @ May 11 2012, 21:50) Можно ...   May 13 2012, 05:59
- - Семин   Если разница большая, то засечь её можно быстро. А...   May 14 2012, 19:25
|- - Allregia   Цитата(Семин @ May 14 2012, 21:25) Если р...   May 14 2012, 21:55
|- - =GM=   Цитата(Allregia @ May 14 2012, 20:55) Сей...   May 16 2012, 04:59
|- - Allregia   Цитата(=GM= @ May 16 2012, 06:59) Не надо...   May 16 2012, 07:30
|- - =GM=   Ну, если вы всё знаете, зачем спрашиваете?   May 17 2012, 19:53
|- - Allregia   Цитата(=GM= @ May 17 2012, 21:53) Ну, есл...   May 19 2012, 21:29
|- - =GM=   1) Читаю я всегда внимательно, скажу больше, даже ...   May 20 2012, 09:48
|- - =GM=   Удалил повторное сообщение   May 20 2012, 09:49
- - Семин   Для чего это нужно, всё равно не понятно, "Се...   May 15 2012, 17:33
|- - Allregia   Цитата(Семин @ May 15 2012, 19:33) Для че...   May 15 2012, 20:43
|- - =GM=   1) Ну тут одно из двух, или я неправильно понял ус...   May 21 2012, 07:23
||- - Allregia   Цитата(=GM= @ May 21 2012, 09:23) 1) Ну т...   May 21 2012, 07:41
|- - Plain   Цитата(Allregia @ May 21 2012, 12:19) Как...   May 21 2012, 09:28
|- - Allregia   Цитата(Plain @ May 21 2012, 11:28) Просто...   May 21 2012, 09:47
|- - Plain   Цитата(Allregia @ May 21 2012, 12:47) про...   May 21 2012, 10:38
|- - Allregia   Цитата(Plain @ May 21 2012, 12:38) Наприм...   May 21 2012, 10:43
|- - Plain   Цитата(Allregia @ May 21 2012, 13:43) Это...   May 21 2012, 11:19
|- - Allregia   Цитата(Plain @ May 21 2012, 13:19) Продол...   May 21 2012, 11:38
|- - Plain   Цитата(Allregia @ May 21 2012, 14:38) Для...   May 21 2012, 13:27
|- - Allregia   Цитата(Plain @ May 21 2012, 15:27) Нет, э...   May 21 2012, 14:34
- - Xenia   Цитата(Allregia @ May 8 2012, 01:07) Есть...   May 20 2012, 18:04
- - Allregia   Цитата(Xenia @ May 20 2012, 20:04) Надо о...   May 20 2012, 19:49
- - Victor®   Цитата(Xenia @ May 20 2012, 21:04) А пото...   May 20 2012, 20:21


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

 


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


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