Перейти к содержанию
    

три частоты на АТмегу 128 с использованием таймеров

Читайте мой пост #23, там всё написано. Постарайтесь понять, это без подковырок, просто постарайтесь понять. Наглядная агитация в посте #43.

К методу вопросов нет. Идея понятна.

 

Не поэтому, просто по контракту не имею права, а писать что-то заново мне лениво. Вот если б кто-нибудь написал, я б подправил(:-).

Ой не надо про контракты рассказывать. Проходили мы такое.

Лень, так лень.

 

Ну напишите вы что-нибудь толковое по данной теме, покамест я ничего толкового от вас не увидел. А ваши так называемые идеи знали в древней иудее(:-). Разница между моей и вашей идеей - в 100 раз по точности ИЛИ по времени измерения!

Идей я тут не высказывал. Я привел конкретный способ решения поставленной задачи - определения частот трех сигналов на m168, который точно будет работать. Разница между моим способом и вашим в том, что ваш нельзя впихнуть в m168 при всем желании т.к. в ней только один таймер с Capture Unit.

 

Я вот додумался как мерять частоту до Fo/2 с той же точностью на голом проце, у вас есть идеи? Давайте обсудим(:-).

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

 

Вы за собой получше смотрите. В посте #6 вы пишете "...значения 32-х разрядных счётчиков...", ну так, какие 32-х разрядные счетчики в 8-битовом процессоре? А я писал о 32-битных переменных, между прочим, а не о таймерах. Ну и в чём тут криминал? Это и называется трёп ни о чём.

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

 

Или вот, говорите, что пост #2 не rezident писал, а кто? Несколько мессагов упирались. Ну и кто кого должен учить внимательности? Обратите внимание, в каждом посту вверху-справа стоит значок "решетка" # и номер поста.

Ок, признаю, ошибся с номером поста. Имел в виду comment #3.

sKWO:

...

Микроконтроллер Атмега 168 а не 128

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

К методу вопросов нет. Идея понятна.
То есть достаточно два прерывания захвата на частоту? А с точностью согласны?

Ой не надо про контракты рассказывать. Проходили мы такое. Лень, так лень.
А что тут такого? Подписал контракт и держу слово. Даже если бы не подписал, а просто дал слово я бы его всё равно держал, потому что есть такое понятие - порядочность.

Идей я тут не высказывал. Я привел конкретный способ решения поставленной задачи - определения частот трех сигналов на m168, который точно будет работать. Разница между моим способом и вашим в том, что ваш нельзя впихнуть в m168 при всем желании т.к. в ней только один таймер с Capture Unit.
Чуток пораньше вас в посте #5 я привёл аналогичное решение для точности ±1 Гц. Дальнейшее обсуждение пошло по пути получения максимальной точности, отсюда весь сыр-бор разгорелся.

Не вижу никакой сложности в решении этой задачи. Более того допускаю, что с наличием асинхронного таймера можно мерять и частоты превышающие частоту ядра.
Интересно бы послушать ваш подход, так-таки нет никаких сложностей? Берём голую мегу128, 16 МГц такт, входная частота 8 МГц. Предлагаю мерить с точностью ±0.05 Гц. Ваши предложения?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

То есть достаточно два прерывания захвата на частоту? А с точностью согласны?

Если быть точнее то в самом частном для короткого интервала измерения случае прерываний будет - три (2 IC и 1 - отмер эталонного интервала).

Для секндного интервала - не согласен. будет еще +170k/256 прерываний от которых никуда не деться как в моем способе, так и в вашем - прерывания по переполнению таймера, считающего импульсы.

 

А что тут такого? Подписал контракт и держу слово. Даже если бы не подписал, а просто дал слово я бы его всё равно держал, потому что есть такое понятие - порядочность.

Я не об этом. С контрактом все понятно, только когда речь идет о пятиминутном примере зачем упоминать о контракте, достаточно только о лени.

 

Чуток пораньше вас в посте #5 я привёл аналогичное решение для точности ±1 Гц.

Перечитал комент #5 несколько раз, и там IMHO речь шла о методе (A) - измерении периодов ti импульсов входного сигнала с помошью IC, с последующим усреднением T и расчетом частоты как 1/T

 

Где это я ранее налапшал? Прерываний надо всего два на одну частоту, по-моему вы с этим согласились. Никакого потока прерываний, от которого программа захлебнётся, нет и в помине. И что вам не понравилось про "какие-то 32-х разрядные переменные" и где? Опять огульно говорите.

Да, для такого метода большого потока прерываний не будет. Поток будет для метода (A). Но прерываний и здесь все равно не 2.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если быть точнее то в самом частном для короткого интервала измерения случае прерываний будет - три (2 IC и 1 - отмер эталонного интервала).

Для секундного интервала - не согласен. будет еще +170k/256 прерываний от которых никуда не деться как в моем способе, так и в вашем - прерывания по переполнению таймера, считающего импульсы.

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

 

Ну а что с точностью?

Когда речь идет о пятиминутном примере зачем упоминать о контракте, достаточно только о лени.
У меня программа есть готовая, вылизанная, на ассемблере. Я на 8515 с клоком 8 Мгц измерял частоту 1,5 мгц за 1,2 мс с приличной точностью 50 Гц. А новую программу, радикально отличную от старой, придумывать лениво, да и стимула нет(:-). По-моему, кому надо, тот и так всё понял.

 

Ну так как насчёт измерения 8 МГц? Берём голую мегу128, 16 МГц такт, входная частота 8 МГц. Предлагаю мерить с точностью ±0.05 Гц. Есть продуктивная идея?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не 1/94= 0,01%

 

а 100\94=1.06%

 

Не нужно так лихо коэфициенты переводить в проценты :):):)

Ну лихости нам не занимать :-) .. ну очепятка.. идея то понятна что 170кГц можно измерить с точностью +-0.01Гц при заданных условиях.. Определяющим это 16МГц +-1..2 такта(без учета стабильности и расбросов кварца).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость =AVR=

Для усугубления - тем же методом, что расписал уважаемый GM, только еще с кучей наворотов - накопление/фильтрация/масштабирование на ходу, дитеринг для сглаживания ступенек и т.д. я многоканально измеряю частоты в своей аппаратуре, которая по миру разошлась сотнями экземпляров. Точность(!) и дискретность измерений - порядка 10Е-9 (0.0001 ГЦ для сигнала 100 КГЦ) при 10-миллисекундном цикле измерений и частоте таймера МК в 100 МГЦ (Silabs C8051F121) или в 5 раз хуже при Ftimer = 20 МГЦ (ATMega88, 644). Опора - TCXO, в последних разработках - GPS. И резервы еще есть :))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для усугубления - тем же методом, что расписал уважаемый GM, только еще с кучей наворотов - накопление/фильтрация/масштабирование на ходу, дитеринг для сглаживания ступенек и т.д. я многоканально измеряю частоты в своей аппаратуре, которая по миру разошлась сотнями экземпляров. Точность(!) и дискретность измерений - порядка 10Е-9 (0.0001 ГЦ для сигнала 100 КГЦ) при 10-миллисекундном цикле измерений и частоте таймера МК в 100 МГЦ (Silabs C8051F121) или в 5 раз хуже при Ftimer = 20 МГЦ (ATMega88, 644). Опора - TCXO, в последних разработках - GPS. И резервы еще есть :))

Что такое в мире творится, наверное медведь в лесу сдох(:-) - АВР на электрониксе зарегился!

Расскажите про дитеринг уважаемому автору темы, а то он (или она) куда-то закатился, кочерёжкой не достанешь(:-).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Зарегился, кстати, исключительно благодаря позавчерашней ссылке rezident'а в Телесисах на этот thread - прочитал и счел своим долгом укрепить Вашу линию упоминанием успешности своего аналогичного решения, а то Вас уже едва ли не еретиком-одиночкой без мотора готовы были назначить :) А про дитеринг аффтару с удовольствием расскажу, коли подберется к необходимости использования такового, но чую, не скоро это будет :)

Ну, наверное, и снежный человек - йети, тоже сдох, и мать его ...(:-). Люди! АВР укрепляет мою линию и меня от предания еретичеству! Чудны дела твои, господи! А мне что теперь, st256-го поддерживать с его мухобойной статьёй(:-)?

 

Вообще-то, я и сам могу отбиться, не маленький ужо. Да и главный оппонент, defunct, слил, не выдержал что называется напряжёнки(:-), и Bodja74 куда-то пропал.

 

Тем не менее, за поддержку спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Натолкнулся сегодня на эту ветку и вспомнилось, что в свое время, когда тоже задавался задачей измерения частоты сигнала (также, кстати на AVR) попалась мне книжка

Касаткин А.С. Обработка сигналов частотных датчиков. – М.: Энергия, 1966. – 120 с.

В книге как раз расписываются различные способы и алгоритмы измерения частоты/периода цифровых сигналов (рассматривается 14 или 15 способов (!), насколько помню, в том числе и те два которые сравнивали здесь). Там приводятся графики достижимых точностей и погрешностей измерения рассмотренных способов.

Единственный недостаток - книга старая и схемы приведены на дискретной логике, но при желании можно перевести на уровень программ для МК или ПЛИС - может даже получится что-то новое из хорошо забытого старого ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Справедливости ради стоит отметить, что диапазон измеряемых частот получается ограниченным сверху при сравнении с методом временных ворот, если только не использовать для подсчета количества импульсов измеряемой частоты отдельный таймер, а при увеличении количества измеряемых сигналов таймеров может и не хватить для каждого сигнала :)

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Господи! ;О) Ну произведите это измерение 10-20...100 раз, статистицки обработайте да выведите куды надоть. Но измерение-то надо провести! Хотяб один раз. ;О) Нам, радиолюбителям - подельщикам, больше и не надо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

defunct, слил, не выдержал что называется напряжёнки(:-), и Bodja74 куда-то пропал.

Когда вы наконец-то удосужились объяснить метод, то смысла оппонировать больше не стало. ;>

Теперь каждый сможет разобраться на каком чипе его можно применить.

Автор ветки куда-то пропал, видать сам уже все померял.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Справедливости ради стоит отметить, что диапазон измеряемых частот получается ограниченным сверху при сравнении с методом временных ворот, если только не использовать для подсчета количества импульсов измеряемой частоты отдельный таймер, а при увеличении количества измеряемых сигналов таймеров может и не хватить для каждого сигнала :)

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

Ну, если говорить об измерении частоты на голой атмеге128, то как для "метода захвата", так и для "метода ворот" имеется одно ФУНДАМЕНТАЛЬНОЕ ограничение - частота входного сигнала не может быть больше половины тактовой частоты процессора.

 

Но даже для пограничной входной частоты 8 МГц погрешность первого метода (±0.5 Гц) в ДВА раза выше погрешности второго метода (±1 Гц) и может быть легко увеличена в десятки раз, чего не скажешь о втором методе.

 

На практике это означает, например, что с помощью делителя на 10 вы можете мерять первым методом частоту 80 МГц с той же точностью, что и частоту 8 МГц вторым методом. Так что овчинка стоит выделки и проблема точности всё ещё актуальна.

 

Что касается отдельного таймера, то вы невнимательно читали мои посты, там как раз предлагается использовать отдельный таймер (timer/counter0) для подсчёта количества импульсов измеряемой частоты.

 

Когда вы наконец-то удосужились объяснить метод, то смысла оппонировать больше не стало. ;>

Теперь каждый сможет разобраться на каком чипе его можно применить.

Ну если вы поняли методу, значит, вы можете забрать свои слова обратно.

 

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

Ну вот, опять трёп! Вы уверены, что вы правильно применяете это слово(:-)?

Какие такие запредельные частоты? То есть 8 МГц для вас запредельно? А что ж вы раньше говорили, что измерить просто и никаких сложностей вы там не видите?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Какие такие запредельные частоты? То есть 8 МГц для вас запредельно? А что ж вы раньше говорили, что измерить просто и никаких сложностей вы там не видите?

Я хочу попробовать померять частоты до ~50Mhz на AVR'кe без внешних компонентов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...