Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Подсчет частоты на ATtiny85
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Страницы: 1, 2
IDE
Необходимо определять частоту поступающую на контроллер, но проблема в том, что частоты лежат примерно в диапазоне 11Мгц-33Мгц, а контроллер-то работает на более низких частотах! Не очень понятно каким образом это реализовать. Как считать входные импульсы? Неужели в прерывании? Подскажите, у кого есть какие-либо соображения по этому поводу!
kamil_yaminov
Можно поделить входную частоту и поделенную уже и измерять.
zhevak
Цитата(kamil yaminov @ Aug 26 2008, 13:47) *
Можно поделить входную частоту и поделенную уже и измерять.

-> нужно !!!
Внешний быстрый счетччик на жесткой логике.
Flasher
поставь pic - легче будетsmile.gif
IDE
Цитата(Flasher @ Aug 26 2008, 12:08) *
поставь pic - легче будетsmile.gif


так стоит уже тинька, платка уже готова! sad.gif
Pyku_He_oTTyda
Цитата
так стоит уже тинька, платка уже готова!

тогда без переделки ПП никак
IDE
Спасибо всем! Буду убеждать заказчика переделать плату. smile.gif
Flasher
Гы, а ты что думал иначе плату никак не переделать? и что это за бред- сначала изготовит плату, а потом думать как оно будет работать
Ivan A-R
Если не ошибаюсь (лень в даташиты лезть) tiny26 и иже с ним имеют асинхронный счётчик который умеет до 60мгц считать.
Maik-vs
Цитата(Ivan A-R @ Aug 26 2008, 15:19) *
Если не ошибаюсь (лень в даташиты лезть) tiny26 и иже с ним имеют асинхронный счётчик который умеет до 60мгц считать.

Не умеет... 05.gif
"The T0 pin is sampled once every system clock cycle by the pin synchronization logic. ... Since
the edge detector uses sampling, the maximum frequency of an external clock it can
detect is half the sampling frequency ... it is recommended that maximum frequency of an
external clock source is less than fclk_I/O/2.5."
defunct
Цитата(Flasher @ Aug 26 2008, 11:08) *
поставь pic - легче будетsmile.gif

Чем?
domowoj
Цитата(IDE @ Aug 26 2008, 14:45) *
Необходимо определять частоту поступающую на контроллер, но проблема в том, что частоты лежат примерно в диапазоне 11Мгц-33Мгц, а контроллер-то работает на более низких частотах! Не очень понятно каким образом это реализовать. Как считать входные импульсы? Неужели в прерывании? Подскажите, у кого есть какие-либо соображения по этому поводу!

А скакой точностью измерить?
Если входную частоту просто поделить - будет потеря точности.
=GM=
Цитата(IDE @ Aug 26 2008, 07:36) *
Буду убеждать заказчика переделать плату

Какая частота проца, какой нужен интервал измерения и какая нужна точность измерения? Если нужна точность порядка ±1 Гц, то вроде бы есть один вариантик, можно и без переделки обойтись. Ноги свободные есть?
zhevak
Цитата(domowoj @ Aug 26 2008, 20:04) *
А скакой точностью измерить?
Если входную частоту просто поделить - будет потеря точности.

Не-а! Точность измерения частоты не зависит от длительности измерения.

Если, поделив частоту на счетном триггере, Вы одновременно удвойте время измерения, то что по Вашему, точность восстановится? А если в 1000 раз большее время сделаете? Точность возрастет в 1000 раз? А в миллион? Что, Цезиевый эталон переплюните? А если поделите частоту до одного периода? Что, точность упадет до нуля?

Нет, уважаемый. В данном случае, точность измерения частоты определяется методом и точностью эталонного генератора. Все остальное от лукавого.
garlands
Цитата(=GM= @ Aug 26 2008, 18:44) *
Какая частота проца, какой нужен интервал измерения и какая нужна точность измерения? Если нужна точность порядка ±1 Гц, то вроде бы есть один вариантик, можно и без переделки обойтись. Ноги свободные есть?




Думаю, это будет интересно не только ТС.

Поделитесь методом с общественностью, плиз.
rx3apf
Цитата(domowoj @ Aug 26 2008, 18:04) *
А скакой точностью измерить?
Если входную частоту просто поделить - будет потеря точности.

Если при этом тупо считать импульсы на выходе делителя - то да. А если измерить их период, используя, скажем, ICP - то разрешение по частоте определяется опорником таймера и временем счета, а от коэффициента деления прескалера не зависит, даже если из прескалера нельзя извлечь остаток...

Цитата(defunct @ Aug 26 2008, 17:07) *
Чем?

Очевидно тем, что у контроллеров от Microchip есть обычно асинхронный прескалер с паспортной частотой до 50-60 MHz (реально больше 80).
=GM=
Цитата(zhevak @ Aug 26 2008, 15:15) *
Точность измерения частоты не зависит от длительности измерения

Ну положим, относительная погрешность измерения частоты имеет несколько слагаемых, но в первом приближении, она обратно пропорциональна времени измерения при прочих равных условиях.

Цитата(garlands @ Aug 26 2008, 15:26) *
Думаю, это будет интересно не только ТС. Поделитесь методом с общественностью, плиз

Поделиться не проблема, решение-то очевидное, но детали могут существенно повлиять на реализацию предполагаемого варианта, поэтому давайте подождём ответов автора.

А что за аббревиатура такая ТС?
garlands
Цитата(=GM= @ Aug 27 2008, 00:49) *
Ну положим, относительная погрешность измерения частоты имеет несколько слагаемых, но в первом приближении, она обратно пропорциональна времени измерения при прочих равных условиях.

Поделиться не проблема, решение-то очевидное, но детали могут существенно повлиять на реализацию предполагаемого варианта, поэтому давайте подождём ответов автора.

но все равно интересно и полезно будет smile.gif

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


Цитата
А что за аббревиатура такая ТС?


ТС - ТопикСтартер wink.gif

(да, банальная лень... wink.gif )
Maik-vs
Цитата(=GM= @ Aug 27 2008, 01:49) *
Поделиться не проблема, решение-то очевидное, но детали могут существенно повлиять на реализацию предполагаемого варианта, поэтому давайте подождём ответов автора.

GM! Сказали "а" - говорите "б", народ заинтригован, ёрзает на стуле, шепчет "а как это?", работа побоку. biggrin.gif Намекните хоть. santa2.gif
Syberian
Чего сложного-то? делим сигнал тупо на N внешней микрухой- счетчиком, и подаем в T0. В Tiny суем прерывание на T0OVF. Каждый раз увеличиваем 4-байтную переменную на 1. Прескалер 1:1.

Отдельное прерывание на другой таймер (или внешний сигнал) - чтобы отмерить 1 секунду.
Каждую секунду: частота сигнала = (Счетчик *256 + TCNT0)*N Гц.
Погрешность в среднем +- 0.5*N Гц.

Затем сбрасываем счетчик, очищаем Tcnt0 и - по новой.
Qwertty
Цитата(Syberian @ Aug 27 2008, 12:31) *
Чего сложного-то?

GM пообещал рассказать как измерить частоту выше тактовой БЕЗ переделки схемы ( то есть без внешнего счетчика). Потратив на это всего один дополнительный вывод порта. Про деление внешним счетчиком и так понятно.
=GM=
Цитата(Qwertty @ Aug 27 2008, 09:45) *
GM пообещал рассказать как измерить частоту выше тактовой БЕЗ переделки схемы (то есть, без внешнего счетчика). Потратив на это всего один дополнительный вывод порта

Ну вы придумщики, это где это я такое обещал? Кстати, в аврку можно ввести сигналы с частотой НЕ БОЛЕЕ половины тактовой.
Qwertty
Цитата(=GM= @ Aug 27 2008, 15:24) *
Ну вы придумщики, это где это я такое обещал? Кстати, в аврку можно ввести сигналы с частотой НЕ БОЛЕЕ половины тактовой.

В 13-м сообщении. Черным по белому написано - "Если нужна точность порядка ±1 Гц, то вроде бы есть один вариантик, можно и без переделки обойтись. Ноги свободные есть?". То есть кроме свободных ног ничего е нужно. smile.gif
=GM=
Цитата(Qwertty @ Aug 27 2008, 13:41) *
В 13-м сообщении. Черным по белому написано - "Если нужна точность порядка ±1 Гц, то вроде бы есть один вариантик, можно и без переделки обойтись. Ноги свободные есть?". То есть кроме свободных ног ничего не нужно. smile.gif

Не, свободные ноги нужны, чтобы получить точность порядка ±1 Гц. Прошу прощения, если кто-то не так понял мой пост, плату можно не переделывать, тонкость в том, что на неё подавать.
rx3apf
Цитата(=GM= @ Aug 27 2008, 20:27) *
Не, свободные ноги нужны, чтобы получить точность порядка ±1 Гц. Прошу прощения, если кто-то не так понял мой пост, плату можно не переделывать, тонкость в том, что на неё подавать.

Чтобы получить _точность_ 1 Hz для входной частоты 33 MHz, в первую очередь надо озаботиться опорником соответствующей точности (3E-8 - это не ширпотреб). А уж как получить _разрешение_ 1 Hz - зависит от аппаратной части. Да, окном счета как-то надо управлять, и внешние довески с управлением нужны...
garlands
Цитата(=GM= @ Aug 27 2008, 19:27) *
Не, свободные ноги нужны, чтобы получить точность порядка ±1 Гц. Прошу прощения, если кто-то не так понял мой пост, плату можно не переделывать, тонкость в том, что на неё подавать.


хех. так это-же совсем другое дело! вопрос всего-лишь в том, ЧТО подавать на вход...

я практически разочарован. sad.gif

а ожидали-то все чуда и "серебряной пули"... smile.gif

ПЫСЫ: на вход можно подать и вообще уартом частоту, намерянную внешним счетчиком на более серьезном контроллере... wink.gif (или даже внешней россыпью... wink.gif )
=GM=
Цитата(garlands @ Aug 27 2008, 18:15) *
а ожидали-то все чуда и "серебряной пули"... smile.gif

Ха, чуда...кина не будет, кинщик спился(:-). Я вот недавно придумал способ измерения временных интервалов с точностью ±2нс на МК с небольшой обвязкой, причём частот выше частоты клока в системе нет, вот это чудо! До сих пор не могу придти в себя от изумления. Относительная погрешность одиночного измерения частоты таким методом на 1с интервале составляет примерно 3Е-9, что сопоставимо с кратковременной нестабильностью опорного кварцевого генератора.
kamil_yaminov
GM, не поделитесь чудом? заинтриговали, теперь работа встанет точно!
rx3apf
Цитата(=GM= @ Aug 28 2008, 01:59) *
Ха, чуда...кина не будет, кинщик спился(:-). Я вот недавно придумал способ измерения временных интервалов с точностью ±2нс на МК с небольшой обвязкой, причём частот выше частоты клока в системе нет, вот это чудо! До сих пор не могу придти в себя от изумления. Относительная погрешность одиночного измерения частоты таким методом на 1с интервале составляет примерно 3Е-9, что сопоставимо с кратковременной нестабильностью опорного кварцевого генератора.

Попробую угадать - разность фаз преобразовывается в напряжение и измеряется ADC ?
=GM=
Цитата(kamil yaminov @ Aug 28 2008, 02:31) *
GM, не поделитесь чудом? заинтриговали, теперь работа встанет точно!

Ну я не знаю... Хотелось бы продать разработку, патентовать идею смысла нет, поскольку слышал, что устройство, работающее на подобном принципе, существует и, думаю, запатентовано. Сам я ни устройства, ни патента не видел.
Цитата(rx3apf @ Aug 28 2008, 05:31) *
Попробую угадать - разность фаз преобразовывается в напряжение и измеряется ADC?

По-другому.
rx3apf
Цитата(=GM= @ Aug 28 2008, 12:41) *
Ну я не знаю... Хотелось бы продать разработку, патентовать идею смысла нет, поскольку слышал, что устройство, работающее на подобном принципе, существует и, думаю, запатентовано. Сам я ни устройства, ни патента не видел.

Тогда и в самом деле интересно. Намекните хотя бы в общих чертах ?
kamil_yaminov
Ну на ушко... ) обязуюсь не юзать в своих проектах, просто очень интересно
Tanya
Цитата(=GM= @ Aug 28 2008, 12:41) *
Ну я не знаю... Хотелось бы продать разработку, патентовать идею смысла нет, поскольку слышал, что устройство, работающее на подобном принципе, существует и, думаю, запатентовано. Сам я ни устройства, ни патента не видел.

По-другому.

Ну, тогда идею давайте, раз она не стоит патента...
=GM=
Цитата(Tanya @ Aug 28 2008, 08:18) *
Ну, тогда идею давайте, раз она не стоит патента...

Патента она стоит, несомненно... А вот зачем вам такая запредельная точность понадобилась, вы же вроде аналоговой техникой занимаетесь?
Tanya
Цитата(=GM= @ Aug 28 2008, 20:46) *
Патента она стоит, несомненно... А вот зачем вам такая запредельная точность понадобилась, вы же вроде аналоговой техникой занимаетесь?

Скорее, измерениями и регулированиями. Поэтому и интересно. А если стоит патента, то патентуйте и публикуйте. Но... практика показывает, что почти любой патент обходится...
=GM=
Цитата(Tanya @ Aug 29 2008, 07:49) *
Скорее, измерениями и регулированиями. Поэтому и интересно. А если стоит патента, то патентуйте и публикуйте. Но... практика показывает, что почти любой патент обходится...

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

Насчёт измерений понятно, зачем сверхточные измерения? Кстати, измерения чего?
rx3apf
Цитата(=GM= @ Aug 29 2008, 13:23) *
Насчёт измерений понятно, зачем сверхточные измерения? Кстати, измерения чего?

Все ж, в очередной раз - не надо путать _точность_ и _разрешающую способность_, это совсем разные вещи. А вот мне, например, измерение наносекундных интервалов хотелось применить в любительском частотомере, для повышения _разрешающей способности_ при измерении на UHF с использованием прескалера. Через ADC довольно просто, но до практического воплощения руки не дошли. Потому интересны альтернативные варианты...
=GM=
Посмотрите здесь метод захвата. Этот метод, в отличие от метода ворот, не множит ошибку при использовании предделителя (если делитель нормальный). Так что, вполне можно мерить 5000 Мгц с погрешностью ±1 Гц.

Что касается точности и разрешения, всё правильно, люди часто подменяют эти понятия, под точностью я обычно подразумеваю погрешность.
rx3apf
Цитата(=GM= @ Aug 29 2008, 16:44) *
Посмотрите здесь метод захвата. Этот метод, в отличие от метода ворот, не множит ошибку при использовании предделителя (если делитель нормальный). Так что, вполне можно мерить 5000 Мгц с погрешностью ±1 Гц.

Речь идет о использовании ICP ? Я это (с вариациями) применял (и неоднократно сам приводил этот метод в качестве примера, в том числе и в этом топике). Но и в этом случае разрешение все равно определяется временем счета и частотой опорника. Да, от коэффициента деления прескалера этот метод не зависит, но чтобы за одну секунду получить разрешение 1 Hz для пяти гигов, опорник нужен те же самые 5 GHz. Поскольку это на практике малореально, нужен "интерполятор". Вот и вопрос, как его сделать по-проще...
=GM=
Цитата(rx3apf @ Aug 29 2008, 11:52) *
Но и в случае использования ICR разрешение все равно определяется временем счета и частотой опорника. Да, от коэффициента деления прескалера этот метод не зависит, но чтобы за одну секунду получить разрешение 1 Hz для пяти гигов, опорник нужен те же самые 5 GHz

Не понимаю, зачем нужен опорник в 5ГГц, если вы методом захвата измерили поделённый сигнал, а значит и входной сигнал, с погрешностью ±1 Гц?
rx3apf
Цитата(=GM= @ Aug 29 2008, 17:21) *
Не понимаю, зачем нужен опорник в 5ГГц, если вы методом захвата измерили поделённый сигнал, а значит и входной сигнал, с погрешностью ±1 Гц?

А откуда взялась цифра 1 Hz ? Разрешение захвата = время счета, деленное на частоту опорника. Или как ?
Пардон, разумеется, единица, деленная на произведение времени счета и частоты. Соответственно, дискретность измерения - произведение разрешения и измеряемой частоты.
=GM=
Δf=±((Fx/Kдел)/Fo)*(1/Tнабл)

Так всё-таки, зачем нужен опорник в 5ГГц?
rx3apf
Цитата(=GM= @ Aug 29 2008, 17:42) *
Δf=±((Fx/Kдел)/Fo)*(1/Tнабл)

Так всё-таки, зачем нужен опорник в 5ГГц?

Для получения разумного интервала счета. Для лабораторного прибора крайне неудобно иметь интервал больше одной-двух секунд. Хотя, конечно, задачи бывают разные. Когда-то и прямым счетом без захвата считали по десять и даже по сто секунд. Не интересно...
Да, кстати, в Вашей формуле ошибка - Kдел лишний (и в самом деле, если бы он там был, то разрешение по частоте росло бы с увеличением коэффициента деления). Таким образом, например, при частоте 5 GHz и опорнике 20 MHz, разрешение при односекундном интервале измерения составляет 250 Hz (что немногим лучше прямого счета за секунду с прескалером 256). И даже если бы измерить фазовый разбег с дискретностью 1 nS, то и тогда разрешение составило бы всего 5 Hz, но никак не 1 Hz...
=GM=
Цитата(rx3apf @ Aug 29 2008, 12:50) *
Да, кстати, в Вашей формуле ошибка - Kдел лишний

В формуле всё нормально, это погрешность определения частоты, которая приходит после предделителя. Погрешность входной частоты должна умножаться на Kдел, так что вы правы, для входной погрешности Kдел пропадёт.
Цитата(rx3apf @ Aug 29 2008, 12:50) *
Таким образом, например, при частоте 5 GHz и опорнике 20 MHz, разрешение при односекундном интервале измерения составляет 250 Hz (что немногим лучше прямого счета за секунду с прескалером 256)

Ну, положим не немногим, а лучше примерно в ДВА раза.
rx3apf
Цитата(=GM= @ Aug 30 2008, 01:05) *
В формуле всё нормально, это погрешность определения частоты, которая приходит после предделителя. Погрешность входной частоты должна умножаться на Kдел, так что вы правы, для входной погрешности Kдел пропадёт.

Мда, такую терминологию мне даже не хочется обсуждать.
Цитата
Ну, положим не немногим, а лучше примерно в ДВА раза.

С чего бы вдруг ? Против цифры 250 возражений нет ? А против цифры 256, если мы берем прескалер на 256 и считаем импульсы в жестко заданном односекундном окне ? Где тут два раза ?
=GM=
Цитата(rx3apf @ Aug 29 2008, 23:44) *
Мда, такую терминологию мне даже не хочется обсуждать.
Против цифры 250 возражений нет? А против цифры 256, если мы берем прескалер на 256 и считаем импульсы в жестко заданном односекундном окне? Где тут два раза?

Что мы с вами ходим вокруг да около? Изложите вашу точку зрения по-подробнее, какая частота, какой делитель, как меряем, чтобы исключить предположения. Обещаю, не буду говорить: а, всё что вы говорите, это такой примитив!
rx3apf
Цитата(=GM= @ Aug 31 2008, 00:34) *
Что мы с вами ходим вокруг да около? Изложите вашу точку зрения по-подробнее, какая частота, какой делитель, как меряем, чтобы исключить предположения. Обещаю, не буду говорить: а, всё что вы говорите, это такой примитив!

Я привел вполне конкретные цифры в посте #43. На что последовало возражение - "вариант с захватом лучше в два раза". Вот я и хочу понять, каким образом 250 в два раза лучше, чем 256 Hz...
rx3apf
Цитата(=GM= @ Aug 31 2008, 00:34) *
Что мы с вами ходим вокруг да около? Изложите вашу точку зрения по-подробнее, какая частота, какой делитель, как меряем, чтобы исключить предположения. Обещаю, не буду говорить: а, всё что вы говорите, это такой примитив!

Я привел вполне конкретные цифры в посте #43. На что последовало возражение - "вариант с захватом лучше в два раза". Вот я и хочу понять, каким образом 250 в два раза лучше, чем 256 Hz...
Qwertty
Цитата(rx3apf @ Sep 1 2008, 20:55) *
Я привел вполне конкретные цифры в посте #43.

5ГГц/256 это примерно 19.5Мгц. Как Вы собираетесь измерять такую частоту?
rx3apf
Цитата(Qwertty @ Sep 1 2008, 21:22) *
5ГГц/256 это примерно 19.5Мгц. Как Вы собираетесь измерять такую частоту?

А какие проблемы ? Ну, если по теме раздела - да, AVR с синхронным таймером такое не возьмет. Нужен внешний прескалер, и, чтобы соответствовало поставленным условиям - с досчетом или иным способом извлечения остатка.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.