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

|
Цитата(=GM= @ Apr 23 2007, 01:51)  Метод захвата на атмеге168 применим до Fclk/5. На атмеге128 - до Fclk/2, так же как и для метода ворот. Для максимальной частоты Fclk/2 точность метода захвата в 2 раза лучше точности метода ворот. Capture годится до тех пор, пока время примитивной обработки события Capture (как минимум вход в ISR, сохранение отсчета в буфере, и возврат из ISR) не превысит периода измеряемой частоты
|
|
|
|
Guest_=AVR=_*
|
Apr 23 2007, 16:56
|
Guests

|
Цитата Надо-то всего два прерывания на одно измерение Вот про любое из них я и говорю. Для Мег с однотактовым доступом к ICR1 (М128) минимальный период (в тактах XTAL) должен быть больше, чем InterruptLatency+1, с двухтактовым (М168) - чем InterruptLatency+2. А для поллинга без прерываний это будет для обеих Мег по 4 такта - в М128 адрес TIFRа, в котором живет флаг Capture, не попадает в разрешенный диапазон адресов команды sbic, поэтому придется делать in+sbrs, что уравняет выигрыш в такт от in вместо lds. Так как максимальная измеряемая частота будет определяться, увы, именно этим временем, то лимит Fin будет одинаков и в случае единственного прерывания за цикл измерения
|
|
|
|
|
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).
|
|
|
|
|
Apr 24 2007, 01:29
|

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

|
Цитата(defunct @ Apr 23 2007, 21:23)  1 или 2 такта это не важно Как это не важно? Это очень важно, ошибка уменьшается в два раза. Что бы вы сказали, если б вам бухгалтер начислил зарплату в два раза меньше, мотивируя тем, что это, мол, ошибка округления такая набежала(:-)? Цитата(defunct @ Apr 23 2007, 21:23)  важно что не будет там +-0.02Гц за 10ms. Конечно, не будет, я этого и не говорил. Почитайте мой пост #14 в этой ветке. Я там говорил, что методом захвата можно получить ту же самую точность ±1 Гц, что и методом ворот, но в 100 раз быстрее, а именно за 10 мс. Повнимательнее надо быть самому, щательнее так сказать, а не других корить. Когда слова-то свои забирать обратно будете? Вроде с методом согласились, с тем что прерываниями программа не захлебнётся тоже...Гордость не позволяет или высокое звание профессионала на этом форуме или ещё что(:-)?
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Apr 24 2007, 14:18
|

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

|
Цитата Как это не важно? Это очень важно, ошибка уменьшается в два раза. Уменьшайте в два раза. Во скока хотите во стока и уменьшайте. оно у вас и работает ровно на пол-зарплаты. Цитата(=GM= @ Apr 24 2007, 00:29)  Когда слова-то свои забирать обратно будете? Вроде с методом согласились, с тем что прерываниями программа не захлебнётся тоже... Когда приведете программу. В той ветке, был треп, и мне нечего забирать, т.к задачу той ветки вы своим методом не решили, метод объясняли целую неделю.
|
|
|
|
|
Apr 24 2007, 15:23
|

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

|
Да, интересное кино. Я смотрю, вы отвечаете только на выборочные моменты, а когда вам нечего ответить, вопросы просто пропускаете. Вот, например, вы написали: "важно что не будет там +-0.02Гц за 10ms"Вот я вам ответил: "Конечно, не будет, я этого и не говорил. Почитайте мой пост #14 в этой ветке. Я там говорил, что методом захвата можно получить ту же самую точность ±1 Гц, что и методом ворот, но в 100 раз быстрее, а именно за 10 мс. Повнимательнее надо быть самому, щательнее так сказать, а не других корить"Ну откуда вы взяли этот перл, что у меня точность будет ±0.02Гц за 10ms? Из пальца высосали? Когда вам на это указали, вы просто не стали отвечать, поскольку ответить по существу нечего. Цитата(defunct @ Apr 24 2007, 10:18)  Уменьшайте в два раза. Во скока хотите во стока и уменьшайте. оно у вас и работает ровно на пол-зарплаты. А вот это уже трёп. Вам указали на вашу ошибку в определении погрешности, ну так признайте и поехали дальше, а вы вместо того, чтобы признать, начинаете упираться, вилять и уходить в сторону. Что значит, "во сколько хотите, во столько и уменьшайте", вы что, на базаре? Это математика, тут всё считается на раз. Советую вам почитать статью Гегеля, Георга Вильгельма Фридриха, "Кто мыслит абстрактно", вам будет полезно. Цитата(defunct @ Apr 24 2007, 10:18)  Когда приведете программу. В той ветке, был треп, и мне нечего забирать, т.к задачу той ветки вы своим методом не решили, метод объясняли целую неделю. Да хоть две! Я же не виноват, что некоторые до сих пор не въехали, но щёки надувают. А в той ветке вы конкретно пытались меня ошельмовать, и мне это не нравится, и я всегда буду с этим бороться, зарубите себе на носу. Теперь по поводу программы и программирования. Вы понимаете программирование в узком смысле, как кодирование неких операторов на к.-л. языке. А я вам скажу так, если алгоритм описан на человеческом языке и понятен, то закодировать программу может даже человек, не понимающий всей глубины процессов, он просто формально перенесёт алгоритм с человеческого языка на машинный. Ну и как следствие, что может доказать моя программа, пусть самая распрекрасная, если вы не понимаете до конца алгоритма измерения частоты методом захвата и путаетесь в определении погрешности? Не надо мне здесь отвечать. И так всё ясно. Прошу у всех прощения за флейм.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|