Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ATmega88 максимальная частота на входе ?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
pavel-pervomaysk
Всем привет !
Возник вопрос по схемному и програмному решению для частотомера . Хочу применить мегу 88 и кварц по максимуму (20-24МГц) чтобы получить возможность захвата большего числа импульсов чем 1мгц на входе . Прескаллер U813 буду использовать с коэф. деления 256. То есть при частоте 1ГГц он будет выдавать 3 906 250 Гц , успеет ли мега их посчитать от ноги внешнего прерывания ?.
rx3apf
Цитата(Павлик @ Mar 9 2009, 22:31) *
То есть при частоте 1ГГц он будет выдавать 3 906 250 Гц , успеет ли мега их посчитать от ноги внешнего прерывания ?.

Совершенно нереально, даже если использовать программный опрос (что быстрее, чем вход в прерывание). Это неправильное решение. А нужно использовать два таймера. Один - для захвата по фронту (TMR1, ICP1), другой для счета импульсов с прескалера (TMR0). Тогда и разрешение будет хорошее и частота обработки прерываний (переполнение TMR0) приемлемая (хотя тут можно и опросом обойтись).
Rst7
Через прерывание не успеет. А если подадите на вход таймера - то без проблем. При этом больше чем по даташиту катать проц совсем не стоит (при питании 5 вольт мега88 может работать с тактовой не более 20 МГц).
vvs157
Цитата(Павлик @ Mar 9 2009, 22:31) *
Всем привет !
Возник вопрос по схемному и програмному решению для частотомера . Хочу применить мегу 88 и кварц по максимуму (20-24МГц) чтобы получить возможность захвата большего числа импульсов чем 1мгц на входе . Прескаллер U813 буду использовать с коэф. деления 256. То есть при частоте 1ГГц он будет выдавать 3 906 250 Гц , успеет ли мега их посчитать от ноги внешнего прерывания ?.

Нет, конечно. Вход опрашивается один раз за такт, поэтому максимальная входная частота Fck/2. Прескалер - это уже потом. 1 ГГц - только с внешним делителем
rx3apf
Цитата(vvs157 @ Mar 9 2009, 22:47) *
максимальная входная частота Fck/2. Прескалер - это уже потом. 1 ГГц - только с внешним делителем

Человек же русским языком написал "прескалер U813". Ясен ж пень, что это внешний прескалер...
Просто он захотел опрашивать его выход программно, а вот этот фокус уже не пройдет, естественно.
pavel-pervomaysk
Цитата(Rst7 @ Mar 9 2009, 22:44) *
Через прерывание не успеет. А если подадите на вход таймера - то без проблем. При этом больше чем по даташиту катать проц совсем не стоит (при питании 5 вольт мега88 может работать с тактовой не более 20 МГц).


Извените , я минус случайно нажал на вашем посте ...
Насчет тактовой проца все ясно разъяснили .
Насчет захвата таймером интерестно , с этим еще не работал , если дадите пример на асме кусочек , буду очень рад , далее уже постараюсь сам справится .
vvs157
Цитата(rx3apf @ Mar 9 2009, 22:54) *
Человек же русским языком написал "прескалер U813". Ясен ж пень, что это внешний прескалер...
Сразу не заметил, однако сдается мне, что этот U813 ЭСЛ и с мегой напрямую не стыкуется.
pavel-pervomaysk
Цитата(vvs157 @ Mar 9 2009, 23:13) *
Сразу не заметил, однако сдается мне, что этот U813 ЭСЛ и с мегой напрямую не стыкуется.


О связи деталюшек в кучу вопрос не идет smile.gif . Это не вопрос , главное заранее начать работать не с "з@@ницы" как это часто бывает .
SasaVitebsk
Да какой там пример? Почитай работу таймера в режиме захвата да и всё. Входная частота при этом FCLK/2 То есть 10МГц. (При 20).

ATXMega допускает обработку частоты значительно превыхающую FCLK.
rx3apf
Цитата(Павлик @ Mar 9 2009, 23:08) *
Насчет захвата таймером интерестно , с этим еще не работал , если дадите пример на асме кусочек , буду очень рад

Кусочком не поделюсь за неимением оного (я такую задачу решал для PIC16, и не захватом, а отдельным счетом опорника, но суть та же). Т.е. общая идея - измерительный интервал должен быть не ровно секунда (например), а целое число периодов входного сигнала, но больше этой самой секунды. Начинаем интервал - обнулили (или запомнили состояние счетчика), сделали засечку времени ICP по фронту импульса. Ждем завершение измерительного интервала, считая импульсы и контролируя переполнение таймеров. И вот по окончанию интервала надо остановить счет - аппаратных средств у AVR для этого нет, синхронно с последним захватом остановить счет на такой скорости не удастся, поэтому все ж нужен внешний D-триггер и буферочек. А просто счетом за интервал - ухудшается разрешение, особенно на низких частотах (для 1 GHz разницы 50 или 256 Hz, по большому счету, нет).
Rst7
Погодите, господа, какой захват? Только прямой счет.

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

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

Тонкости:
Необходимо обеспечить проверку на синхронность чтения значения таймера и служебной переменной. Типа таймер переполнился, а переменная еще не увеличена. Второе - небольшая погрешность будет из-за неточного отсчета секундного интервала (за счет различного времени входа в прерывание). Это можно скомпенсировать чисто программным путем, а можно и забить.
rx3apf
Цитата(Rst7 @ Mar 10 2009, 00:20) *
На другом таймере отмеряете одну секунду. По истечении секунды считываете в локальную копию значение служебной переменной и таймера. Разность между этой локальной переменной и ее предыдущим значением (которое нужно будет сохранить) и будет частотой в герцах.

Вот только еще это значение надо умножить на коэффициент прескалера. И в результате дискретность измерения при односекундном интервале - 256 Hz. Ну, для гига это еще терпимо. А вот сотню MHz с таким разрешением мерять - как-то неприлично, все ж 21-й век на дворе и время любительских поделок с прямым счетом давно миновало. К сожалению, аппаратных средств самого процессора для полноценного решения задачи недостаточно, но пара корпусов простой логики снаружи - и уже результат на что-то похож...
Rst7
Цитата
как-то неприлично, все ж 21-й век на дворе и время любительских поделок с прямым счетом давно миновало.


А Вы попробуйте в 21м веке получить точность опорного генератора выше чем 1е-6. И джиттер довести до соответствующего уровня, чтобы измерение периода с ума не сходило. Тогда будем говорить об улучшении разрешения.

Кстати, вопрос к топикстартеру - какие еще коэффициенты деления можно выбрать у этого прескаллера кроме 256? И насколько проблемно их на ходу переключать?
rx3apf
Цитата(Rst7 @ Mar 10 2009, 00:54) *
А Вы попробуйте в 21м веке получить точность опорного генератора выше чем 1е-6. И джиттер довести до соответствующего уровня, чтобы измерение периода с ума не сходило. Тогда будем говорить об улучшении разрешения.

Ну, 256 Hz при сотне MHz - это уже 2.6E-6. Но ведь и при меньших частотах дискретность будет столь же большой. Что до "попробуйте" - так пробовал. Элементарное термостатирование дает 1E-7, кроме того, часто абсолютная точность и не нужна, а вот оценка изменения - актуальна.
dx40
Делал частотомер на 2313 тиньке. До 7 мегагерц нормально, дальше врет. Кварц - 20.
_Pasha
Цитата(dx40 @ Mar 10 2009, 09:13) *
Делал частотомер на 2313 тиньке. До 7 мегагерц нормально, дальше врет. Кварц - 20.


Ага, давайте я тоже что-нить криво сделаю, а потом отчитаюсь об отрицательных результатах smile.gif Какя погрешность, по какой структуре строили, какой алгоритм? Это ж все совсем не нудные расспросы, сделать-то можно и нормально.


Нужно аппаратно отмерять метки времени, закрывать выход прескалера и считывать. Термостатирование опорника имееццо?
adc
Цитата(Rst7 @ Mar 10 2009, 00:20) *
...
Вообщем, для простоты делаете так - на вход любого таймера подаете частоту с вашего внешнего прескаллера. В прерывании по переполнению этого таймера увеличиваете переменную типа int
(если используете восьмибитный таймер). В общей сложности значение таймера плюс значение переменной будет 24 бита.
...

эээ.. сдается мне что эта тема по моему обсуждалось, и очень даже живо... помню всякие даже графики были и горячие споры...
непомню только в какой ветке...
аа. вот: http://electronix.ru/forum/index.php?showt...=29796&st=0
rx3apf
Цитата(_Pasha @ Mar 10 2009, 09:55) *
Ага, давайте я тоже что-нить криво сделаю, а потом отчитаюсь об отрицательных результатах smile.gif

Да тут, наверное, все проще - скважность на входе не 1, вот и вышло меньше Fosc/2.
Rst7
Цитата
Элементарное термостатирование дает 1E-7


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

Вообщем, я считаю 1e-6 - оптимальным числом с точки зрения простоты решения. Выше без особой необходимости прыгать не стоит.

А вообще, надо чтобы топикстартер огласил требуемые метрологические характеристики.

Цитата
эээ.. сдается мне что эта тема по моему обсуждалось, и очень даже живо... помню всякие даже графики были и горячие споры...


Были. Правда, споры велись исключительно вокруг сферического коня в вакууме (как программу написать), забывая об остальных сущностях реального мира (см. выше).
=GM=
Цитата(Павлик @ Mar 9 2009, 19:31) *
Хочу применить мегу 88. Прескаллер U813 буду использовать с коэф. деления 256

Поставьте управляемый вентиль на вход схемы захвата и с вашим прескалером можете считать до 2500 МГц при тактовой проца 20 МГц. Тактовую выше 20 лучше не применять.
rx3apf
Цитата(Rst7 @ Mar 10 2009, 14:29) *
К сожалению, кроме температурной стабильности есть еще много других факторов - начальная точность,

Что абсолютно непринципиально, поскольку без калибровки по-любому не обойтись, даже взяв готовый TXCO.
Цитата
старение,

Что тоже непринципиально для штучных изделий, для которых можно взять уже подвергшийся естественному старению кристалл. И, к тому же, периодическая поверка и "Гиацинтам" нужна.
Цитата
уход частоты из-за большой амплитуды сигнала на кварце (актуально для банальной емкостной трехточки из логического инвертора),

Что элементарно решается схемой детектора, регулирующего амплитуду (я, не мудрствуя лукаво, "слизал" готовую схемотехнику 2-ppm нетермостатированного опорника моторольского репитера, благо примитивно, и добавил простенький термостат).
Цитата
шум генератора.

До 1e-8 можно особо не задумываться.
Цитата
Вообщем, я считаю 1e-6 - оптимальным числом с точки зрения простоты решения. Выше без особой необходимости прыгать не стоит.

Но в целом - соглашусь (хотя если что-то настраивать с такой точностью, то прибор-то нужно классом выше). Отметив при этом, что и опорник 1E-9, причем не требующий периодической поверки, по нынешним временам сделать не просто, а очень просто, с себестоимостью порядка $50. Нужно ли - вопрос другой.
Rst7
Цитата
Но в целом - соглашусь (хотя если что-то настраивать с такой точностью, то прибор-то нужно классом выше).


Да нафиг оно не надо в коленно-прикладном бизнесе.

Цитата
Отметив при этом, что и опорник 1E-9, причем не требующий периодической поверки, по нынешним временам сделать не просто, а очень просто, с себестоимостью порядка $50.


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

Цитата
Нужно ли - вопрос другой.


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

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