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

|
В лоб (используя таймер в режиме счетчика) - теоретически до 10 МГЦ (Fclk/2), практически (с гарантией отсутствия пропусков) - мегагерц до 8..9 (Fclk/2.5). Частоту считать 16-битным таймером с 16-битным программным расширителем, инкрементируемым по прерыванию таймера, либо 8-битным таймером с 24-битным расширителем. Чисто программный счет невыгоден - займет 100% вычислительных ресурсов МК, будет минимум вдвое медленнее таймерного и т.д.
|
|
|
|
|
Apr 22 2007, 21:29
|
Частый гость
 
Группа: Новичок
Сообщений: 173
Регистрация: 3-09-04
Из: Moscow
Пользователь №: 595

|
Цитата А меандром-то зачем В ДШ озвучено требование на длительность уровня: и высокий, и низкий уровни должны быть длиннее, чем один такт, чтобы МК успел их "зафиксировать". Если скважность другая, то максимальная частота будет ниже.
|
|
|
|
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, 12:50
|

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

|
Цитата(demaven @ Apr 23 2007, 03:53)  Уважаемый, откуда взялась столь умопомрачительная цифра (±0.02 Гц)? За 100 секунд будет насчитано где-то около 20 000 000 *100 импульсов и только. Так что ни о каких ±0.02 Гц и речи быть не может. Мы 100 секунд измеряем с точностью опоры и почему считаем их абсолютно достоверными? А они брехливы. Читайте вышецитированный пост, уважаемый, особенно ответы #23 и #43, там всё написано. И приведите ваши цифры, о которых может идти речь, без них это только ваши слова. А эту "умопомрачительную цифру", как вы говорите, я могу улучшить еще раз в 20 за то же время. Опорная частота это ваш измерительный инструмент, обеспечивающий требуемую точность, другого у вас нет. Естественно, точность опоры должна удовлетворять заданной точности измерения. Приведённая мною точность не учитывает точность опоры. Чтобы получить суммарную погрешность надо сложить данную относительную погрешность 0.02/1Е-7 и относительную погрешность опоры 1Е-9 (возможно 1Е-10 и выше, это кратковременная нестабильность опорного генератора на интервале 100 с). Как видите вклад погрешности опоры на порядок ниже вклада погрешности измерения. Отвлекусь. Году так в 1998, у меня был частотомер, который мерял частоту опорного генератора пейджингового передатчика, там было три диапазона: 1с, 10с и 100с. На последнем диапазоне частотомер выдавал 10 значащих цифр! Секундные метки брались с GPS, входящего в состав прибора. Принцип работы был простой - открывались ворота и считалось количество пришедших импульсов. Вот такая была опора.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
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) Цитата Ну теперь-то наконец дошло(:-)! Не путайте людей, в принципе, таймер нужен только ОДИН, чтобы отсчитывать время, и чтобы было, что захватывать(:-). Ну а второй таймер нужен, чтобы просто освободить процессор под другие задачи на период секундного интервала. Никакой сложности в реализации метода захвата на практике нет. Я не путаю, а просто чуть-чуть поигрался с этим методом. Не все так гладко на практике как в теории.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|