|
Измерение частоты ATmega168 |
|
|
|
 |
Ответов
Guest_=AVR=_*
|
Apr 22 2007, 23:14
|
Guests

|
Не совсем так. Здесь автору вопроса нужно мерять максимально возможную частоту, а не 1/100 от Fclk, и метод Capture тут не годится. Зато рулит обычный Gated Counter, благо времени счета хоть отбавляй - 100 секунд
|
|
|
|
|
Apr 23 2007, 00:51
|

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

|
Цитата(Dopler @ Apr 22 2007, 20:00)  http://electronix.ru/forum/lofiversion/index.php/t29796.htmlВ этой теме данный вопрос до таких косточек обмыли, что уже и обсуждать особо нечего. Цитата(=AVR= @ Apr 22 2007, 20:14)  Не совсем так. Здесь автору вопроса нужно мерять максимально возможную частоту, а не 1/100 от Fclk, и метод Capture тут не годится. Зато рулит обычный Gated Counter, благо времени счета хоть отбавляй - 100 секунд На самом деле в теме, указанной Dopler'ом обсуждался не только вопрос измерения трёх частот 50, 90 и 170 кГц, но и вопрос точности и была приведена более-менее универсальная формула, Fx = Fо*М/N, пригодная как для метода захвата, так и для метода ворот (смотрите пост #23). Также там было отмечено, что для обоих методов имеется ФУНДАМЕНТАЛЬНОЕ ограничение - частота входного сигнала не может быть больше половины тактовой частоты процессора (пост #61). Что касается вопроса автора данной темы, то максимальная частота измерения составляет 10 Мгц. Точность измерения на 100-секундном интервале составит ±0.02 Гц. Метод захвата на атмеге168 применим до Fclk/5. На атмеге128 - до Fclk/2, так же как и для метода ворот. Для максимальной частоты Fclk/2 точность метода захвата в 2 раза лучше точности метода ворот.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Apr 23 2007, 13:56
|

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

|
Цитата(defunct @ Apr 23 2007, 09:25)  Точность за секунду будет грубо говоря ±1Гц * (2 Fизм/Fosc). Добавлю, с помощью метода ворот. А с помощью метода захвата ту же точность можно достичь за 10 мс, в 100 раз быстрее. Цитата(defunct @ Apr 23 2007, 09:25)  GM предлагает сделать захват первого импульса, затем - Gate'ом посчитать кол-во имупульсов за известный интервал времени и сделать захват последнего импульса. Это потребует 2-3 таймера для измерения одной частоты, сложно реализовать на практике, но вполне реально.. И до меня долго не могло дойти по его объяснениям в той ветке. Ну теперь-то наконец дошло(:-)! Не путайте людей, в принципе, таймер нужен только ОДИН, чтобы отсчитывать время, и чтобы было, что захватывать(:-). Ну а второй таймер нужен, чтобы просто освободить процессор под другие задачи на период секундного интервала. Никакой сложности в реализации метода захвата на практике нет. Там же был предложен метод измерения до 100 частот (скажем, до 200 кГц каждая) с точностью ±1Гц за 1 сек. Сигналы подключаются последовательно к МК с помощью мультиплексера и за 10 мс определяется частота каждого сигнала методом захвата.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Apr 23 2007, 14:04
|

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

|
Цитата(=GM= @ Apr 23 2007, 12:56)  Добавлю, с помощью метода ворот. А с помощью метода захвата ту же точность можно достичь за 10 мс, в 100 раз быстрее. Тут я с вами не соглашусь. Т.к. точность там определяется точностью ворот умноженной на точность захвата, тобиш для 10ms будет: ±100 * (2Fизм/Fosc) Цитата Ну теперь-то наконец дошло(:-)! Не путайте людей, в принципе, таймер нужен только ОДИН, чтобы отсчитывать время, и чтобы было, что захватывать(:-). Ну а второй таймер нужен, чтобы просто освободить процессор под другие задачи на период секундного интервала. Никакой сложности в реализации метода захвата на практике нет. Я не путаю, а просто чуть-чуть поигрался с этим методом. Не все так гладко на практике как в теории.
|
|
|
|
|
Apr 23 2007, 18:11
|

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

|
Цитата(=GM= @ Apr 23 2007, 13:33)  Это что за точность, относительная? Покажите, откуда она взялась. погрешность одного захвата в секундах у нас = +-1/Fosc Захватов по вашей методе 2 - вначала и в конце, отсюда погрешность захватов - +-2/Fosc. P1 = 2/Fosc секунд для интервала измерения T погрешность составит: P2 = P / T теперь считаем погрешность в герцах для частоты Fизм P3 = Fизм * P2 Теперь разворачиваем P2: P3 = Fизм * (2/Fosc) / T = 1/T * 2Fизм/Fosc для T = 10ms: 100 * 2 Fизм/Fosc
|
|
|
|
|
Apr 23 2007, 19:32
|

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

|
Цитата(defunct @ Apr 23 2007, 14:11)  погрешность одного захвата в секундах у нас = +-1/Fosc Захватов по вашей методе 2 - в начале и в конце, отсюда погрешность захватов - +-2/Fosc. Насчет захватов правильно, а насчёт погрешности неправильно. Объясню, почему так. Предположим вам необходимо измерить некий интервал. Погрешность в начале может только уменьшить ваш результат, поскольку вы можете начать отсчёт только после того, как событие началось, не раньше. Т.о. погрешность лежит на полуоткрытом отрезке (-1,0]. Погрешность в конце может только увеличить ваш результат, поскольку вы можете завершить отсчёт только после того, как событие закончилось, не раньше, т.о. погрешность лежит на полуоткрытом отрезке [0,+1). Поскольку отрезки не перекрываются, общая погрешность определения длины интервала будет просто суммой двух отрезков и будет лежать в диапазоне (-1,+1) или, говоря простым языком, будет ±1 такт. А не ±2, как вы считаете. Цитата(defunct @ Apr 23 2007, 14:11)  P1 = 2/Fosc секунд для интервала измерения T погрешность составит: P2 = P / T Да с чего вы взяли? Я же не определяю каждый период отдельно и потом суммой получаю полный интервал, стало быть должен и погрешности каждого интервала суммировать. У меня всего две погрешности - начала и конца, никаких промежуточных погрешностей нет. Поэтому общая погрешность будет ±1 такт. Цитата(defunct @ Apr 23 2007, 14:11)  теперь считаем погрешность в герцах для частоты Fизм P3 = Fизм * P2 Теперь разворачиваем P2: P3 = Fизм * (2/Fosc) / T = 1/T * 2Fизм/Fosc для T = 10ms: 100 * 2 Fизм/Fosc Тоже неверно, поскольку неверны исходные посылки. Кстати, у вас в формулах с размерностями не всё в порядке.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Apr 23 2007, 22:22
|

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

|
Цитата(=GM= @ Apr 23 2007, 18:32)  Да с чего вы взяли? Я же не определяю каждый период отдельно и потом суммой получаю полный интервал, Мы уже в курсе что захватывается начало импульса, затем считаются импульсы, затем захватывается опять начало импульса, т.о. за время T мы получаем два числа М и N 1. M число периодов искомой частоты 2. N = T * Fosc - количество тактов опорной частоты. На основе этого мы и считаем искомую частоту. Для этого способо погрешность будет такой как я описал постом выше. Если вы опять говорите о каком-то другом способе, то сперва изложите его так чтобы было понятно всем, а не только вам. Цитата Да с чего вы взяли? Я же не определяю каждый период отдельно и потом суммой получаю полный интервал, T - это полный интервал. Вы его назвали - 10ms. Цитата Кстати, у вас в формулах с размерностями не всё в порядке. Там все ок. Hz/Hz / s = Hz
|
|
|
|
|
Apr 23 2007, 22:54
|

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

|
Цитата(defunct @ Apr 23 2007, 19:22)  Для этого способа погрешность будет такой как я описал постом выше. Слона надо есть по частям, а танцевать надо от печки, поэтому давайте по порядку. Вы опустили моё описание как считать погрешность определения интервала. Значит ли это, что вы согласны или вы по-прежнему считаете, что, цитирую, "погрешность одного захвата в секундах = +-1/Fosc. Захватов по вашей методе 2 - вначала и в конце, отсюда погрешность захватов - +-2/Fosc". Я утверждаю, что погрешность равна ±1 такт, вы же упираетесь на ±2 такта. Цитата(defunct @ Apr 23 2007, 19:22)  Если вы опять говорите о каком-то другом способе, то сперва изложите его так чтобы было понятно всем, а не только вам. T - это полный интервал. Вы его назвали - 10ms. Способ тот же самый и интервал я назвал, ну и что из этого? Мы же говорим о расчёте погрешности, а вы виляете, как маркитанская лодка. Сначала говорите, вот покажете как, я свои слова назад возьму, а потом говорите, к методу претензий нет, но очень большие сложности в реализации, ну о-очень большие...Ладно, отвлёкся. Цитата(defunct @ Apr 23 2007, 19:22)  Там все ок. Hz/Hz / s = Hz Ну если ОК, то подскажите, в каких единицах выражается Р2, если Р1 в герцах, а Т в секундах? Заодно просветите, что там у вас за переменная Р, чтобы было понятно всем, а не только вам.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Apr 24 2007, 00:23
|

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

|
Цитата(=GM= @ Apr 23 2007, 21:54)  Я утверждаю, что погрешность равна ±1 такт, вы же упираетесь на ±2 такта. 1 или 2 такта это не важно, важно что не будет там +-0.02Гц за 10ms. Цитата Ну если ОК, то подскажите, в каких единицах выражается Р2, если Р1 в герцах, а Т в секундах? Заодно просветите, что там у вас за переменная Р, чтобы было понятно всем, а не только вам. P1 - погрешность захватов (в секундах) P2 - весовой коэфициент погрешности для интервала T (если домножить на 100% получите в процентах) P3 - погрешность измерения частоты Fизм на интервале T - в герцах. P - опечатка, там должно было быть P1 (P2 = P1 / T).
|
|
|
|
Сообщений в этой теме
олесь Измерение частоты 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   =GM= Цитата(demaven @ Apr 23 2007, 03:53) Уваж... Apr 23 2007, 12:50      mse Цитата(defunct @ Apr 23 2007, 15:04) Тут ... Apr 23 2007, 14:30            =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 Валентиныч Уважаемые, вспомним первоначальную постановку вопр... Apr 24 2007, 16:06 =GM= Цитата(Валентиныч @ Apr 24 2007, 12:06) У... Apr 24 2007, 19:06  Валентиныч Цитата(=GM= @ Apr 24 2007, 22:06) Попробу... Apr 25 2007, 09:31   =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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|