Частотомер-конструктор F51.12

Обсуждаем цифровые устройства...
Ответить
Прорезались зубы
Аватара пользователя
Сообщения: 201
Зарегистрирован: Пт июл 25, 2008 14:09:04
Откуда: Зауралье

Сообщение Vicont »

Alexeyslav писал(а):Можно конечно завести выход 8-битного на 16 битный, для каскадирования но реально ли это сделать? Наверно все-таки да... и досчет можно организовать даже вместе со внешним делителем, это конечно дольше несколько будет, но точнее!
Позвольте, но если оба таймера будут считать входные импульсы, то кто же тогда будет отмерять эталонный интервал времени??? :roll:
Может, если уж на то пошло, разрядность 8-битного таймера увеличить за счет ячеек РОН...
Alexeyslav писал(а):ВЧ делитель ставить уже только на готовую плату с учетом правил разводки ВЧ схем.
А как ВЧ схему правильно разводить? Данные разных источников разнятся:
- Один источник гласит, что одну сторону целиком заделывают под массу, а другу под питание и остальные дорожки.
- В другом источнике, наоборот, говорят, что одна сторона должна быть целиком под питание, а другая под массу и остальные дорожки.
- Еще я слышал, что на заводах ВЧ схемы делают по компромиссному варианту в 3 и более слоев: снизу масса, сверху шина питания а сигнальные дорожки посередине, но в домашних условиях это нереально...
Контактная информация:
Реклама
akl
Друг Кота
Сообщения: 4463
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

Vicont писал(а):Возвращаюсь к разработке частотомера...
В общем прошу критики моего первого проекта и продолжения консультации по дальнейшей разработке.
Здравствуйте. Посмотрел Ваш код
- состояние SREG при обработке прерываний не запоминается
- после формирования первой секунды таймеры останавливаются и более ничем далее не запускаются
- формирование базы времени 1 сек неточное
- динамическая индикация неравномерная по разрядам
- на PIND,6 не будет контрольного сигнала, т.к. эта лапа не инициализирована выходом
- флаги требований прерываний не чистятся
- ещё, думаю, есть недостатки, но,
для начала, очень не плохо.
Реклама
Прорезались зубы
Аватара пользователя
Сообщения: 201
Зарегистрирован: Пт июл 25, 2008 14:09:04
Откуда: Зауралье

Сообщение Vicont »

akl писал(а):Здравствуйте. Посмотрел Ваш код
Здравствуйте. Спасибо за внимание. :)
akl писал(а):- состояние SREG при обработке прерываний не запоминается
- после формирования первой секунды таймеры останавливаются и более ничем далее не запускаются
Вот как раз это я и хотел обсудить. Дело в том, что основной цикл программы - непрерывная индикация счетных регистров, которые во время замера изменяются. Сначала я сделал как положено - выход из обработчика через reti, но при отладке алгоритма (тогда еще не на 7-сегментах, а на LED-матрице) он стал выдавать фигню... Вот я и запретил прерывания после 1-го замера. Сейчас опять разрешил, пока вроде нормально... :dont_know:

Может быть стоит организовать цикл, в ходе которого на период индикации (1,5-2 сек) запрещались бы прерывания, а разрешались только по истечении этого времени?

akl писал(а):- формирование базы времени 1 сек неточное
Уже исправил. Вместо 600мкс ввел коррекцию на 573мкс. По крайней мере Шпротеус показывает точность до 1Гц, в реале все равно еще регулировать придется...

Код: Выделить всё

       ldi  ZH,high(1145)     ;Задержка на ~573 мкс для коррекции интервала
       ldi  ZL,low(1145)      ;8 МГц, цикл 4 такта
loop:  sbiw ZL,1
       brne loop
akl писал(а):- динамическая индикация неравномерная по разрядам
В каком смысле??? :roll: Вроде с индикацией все нормально...
- на PIND,6 не будет контрольного сигнала, т.к. эта лапа не инициализирована выходом
ОК, учту.
- флаги требований прерываний не чистятся
Какие именно?
Контактная информация:
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

3-х слойную плату - запросто, соедини друг с другом двухстороннюю и одностороннюю уменьшенной толщины обе.

Регистрами не получится... потому что будут такие моменты, когда время закончилось а управление находится в прерывании таймера, который прибавляет +1 к регистрам, а это примерно 20-30(8 на вход в прерывание, 8 на возврат из прерывания, еще на сохранение/восстановление статуса, сами команды каскадного инкремента) тактов от и до. Получается что редко но интервал в 1 сек будет дольше на 0...30 тактов. Сколько за это время может насчитать счетчик - неизвестно, это надо будет корректировать либо учесть в заявленной точности измерения.
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Прорезались зубы
Аватара пользователя
Сообщения: 201
Зарегистрирован: Пт июл 25, 2008 14:09:04
Откуда: Зауралье

Сообщение Vicont »

Alexeyslav писал(а):3-х слойную плату - запросто, соедини друг с другом двухстороннюю и одностороннюю уменьшенной толщины обе.
Тогда металлизацию отверстий делать нада. В этом то главная трудность... :dont_know:
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15703
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Простейшая "трехслойная" структура - печатный двусторонний монтаж с шинопроводами питания (+5,+U), "земли" и перемычками - но это какого "монстра" сооружать надобно? :)))
Да и внутренние таймер/счетчики только у mcs51 имеют возможность полноценного внешнего подключения ( внешне доступные выводы входа и выхода счета и вывод разрешения счета + программное каскадирование)... в остальных случаях надо или довольствоваться тем что есть, или цеплять внешние элементы с отображением на память или на УВВ (I2C/SPI интерфейсы) на логике-рассыпухе или на СБИС(I8253/8254) или комбинаторика всего, что в закромах завалялось :tea:
Реклама
Прорезались зубы
Аватара пользователя
Сообщения: 201
Зарегистрирован: Пт июл 25, 2008 14:09:04
Откуда: Зауралье

Сообщение Vicont »

Оно конечно ясно, что разные варианты всегда есть, но как разумнее поступить конкретно в моем случае??? :dont_know:
Чтобы если уж не до 1ГГц то хотя бы до 300-400МГц с внешним предделителем мерил. Пусть не с таким полноценным, как на mcs51, то хоть с каким-никаким...
Контактная информация:
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

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

Но чтобы измерять до 1Ггц, нужен делитель побольше чем на 10, хотябы на 32 надо поделить, а затем можно подавать на контроллер(хотя 30Мгц это многова-то, надо еще делить чтобы на контроллер уже шла частота меньше 20Мгц).


Где-то тут в соседней теме был частотомер на основе измерения периода импульсов - измерение производится при помощи ПЛМ с аналоговой схемой расширителя импульсов - так их можно точнее измерить. Главное что для измерения не нужна одна секунда, только 20-30 периодов(с учетом коэфициента расширения) измерить, усреднить и посчитать частоту. При наличии источника опорных тактов вроде ГИАЦИНТ-а можно обеспечить точность в 6-7 знаков.
Контактная информация:
Прорезались зубы
Аватара пользователя
Сообщения: 201
Зарегистрирован: Пт июл 25, 2008 14:09:04
Откуда: Зауралье

Сообщение Vicont »

Как уже оговаривалось выше, точность до 1Гц нужна только в низкочастотном режиме.

Применительно к AVR, в НЧ режиме, импульсы должны поступать на МК напрямую (без внешних делителей) на вход ICP, чтобы таймер работал в режиме захвата, измеряя частоту по периоду.
На высоких частотах точность до 1Гц не нужна. Вполне хватит точности до 100Гц или даже до 1КГц. В ВЧ режиме импульсы планируется подавать уже через внешний предделитель на вход Т1, чтобы контроллер считал число импульсов за 1сек.

На счет ПЛМ не знаю. Никогда прежде с ними не работал. Но если игра стоит свечь, могу и на них попробовать...
Или может быть лучше вообще 2 разных устройства для ВЧ и НЧ сделать?

В общем, уважаемые коты, помогите окончательно разобраться с элементной базой. Основные требования к устройству уже оговорены. Нужен мудрый совет.
Контактная информация:
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

Ну да, на современные частотомеры посмотришь - до 200Мгц с точностью 0.01Гц, и период измерения порядка 100мс.
Вот они по этому принципу работают - период измеряется быстродействующей ПЛМ с тактовой частотой 100Мгц и больше, для увеличения точности измерения входные импульсы расширяются в несколько раз простой аналоговой схемой называемой расширителем импульсов. А дальше простая математика.

ПЛМ - это микросхема содержащая 32-64-128 универсальных логических ячеек которые можно соединять друг с другом в практически любой конфигурации. И они довольно шустро работают - 200Мгц это не самые скоростные.
Контактная информация:
akl
Друг Кота
Сообщения: 4463
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

Здравствуйте.
Vicont писал(а):В общем, уважаемые коты, помогите окончательно разобраться с элементной базой. Основные требования к устройству уже оговорены.
Vicont писал(а):Применительно к AVR, в НЧ режиме, импульсы должны поступать на МК напрямую (без внешних делителей) на вход ICP, чтобы таймер работал в режиме захвата, измеряя частоту по периоду... В ВЧ режиме импульсы планируется подавать уже через внешний предделитель на вход Т1, чтобы контроллер считал число импульсов за 1сек.
Не стал бы менять методы измерения на НЧ и ВЧ. Предлагаю принять один метод как для измерения частоты, так и для измерения длительности импульсов. Для этого
1. запустить таймер Т1 на тактирование от Fclk без предделителя, что даст возможность обеспечить непрерывную динамическую индикацию ( по мне, нужно уважать оператора, смотрящего на индикатор, и не ожидающего никаких всполохов, замираний и т.д. )
- отсчет тактов между импульсами приходящими на вход ICP
- отсчет времени измерения.
2. Вход таймера Т0 соединить с входом ICP, чтобы увеличить диапазон измерения частоты до максимально возможной Fclk/2.5 для AVR.
Такое построение схемы позволит более просто измерить как частоту так и длительность.
Возможно, не совсем удачные примеры
http://radioded.ru/forum/viewtopic.php?p=1210#p1210
http://radioded.ru/skhema-na-mikrokontr ... atmega8515
Эти схемы объединяет одно - основной цикл это топтание на месте в ожидании прихода всех разрешенных прерываний. :tea:
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Сообщение ChipKiller »

Vicont писал(а):На счет ПЛМ не знаю. Никогда прежде с ними не работал. Но если игра стоит свечь, могу и на них попробовать...
.. если нужно быстродействие, то стоит. Программатор для epm70xx Alterы (и их аналога atf15xx Atmel) прост в сборке. Из софта для той и другой подойдет MaxPlus.
Прорезались зубы
Аватара пользователя
Сообщения: 201
Зарегистрирован: Пт июл 25, 2008 14:09:04
Откуда: Зауралье

Сообщение Vicont »

Уважаемый akl, спасибо за замечания и ссылки. Изучаю Ваш алгоритм измерения частоты по периоду. Любопытное решение соединить вместе Т0, Т1 и ICP. Нужно время, чтобы переварить...

Сейчас уже больше склоняюсь к тому, чтобы два разных устройства. Раз уж взялся изучать AVR, для начала попробую собрать что-нибудь простенькое на нем, для измерения НЧ. А потом, на свежую голову, начну осваивать ПЛИСы. все-таки до 1ГГц тоже мерить хочется... :)

Уважаемый Alexeyslav, что-то я никак не найду подходящую схему расширителя. Как я понял, такой расширитель, должен работать по принципу Тout=Tin*k, где k>1.
Все схемы расширителей, что мне попадаются при поиске в сети представляют собой одновибраторы с времязадающей цепью, дающие на выходе импульс заданной длительности независимо от периода входного сигнала... :(
Контактная информация:
akl
Друг Кота
Сообщения: 4463
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

Нет. Ни в коем случае это не мой метод. Разработан давно и применяться стал только с появлением микропроцессоров, т.к. при вычислении частоты необходима операция деления.
все-таки до 1ГГц тоже мерить хочется...
Посмотрите на TRF3750
Посмотрите проект частотомера Леонида Ивановича
Последний раз редактировалось akl Пт окт 05, 2012 12:42:02, всего редактировалось 1 раз.
Прорезались зубы
Аватара пользователя
Сообщения: 201
Зарегистрирован: Пт июл 25, 2008 14:09:04
Откуда: Зауралье

Сообщение Vicont »

akl писал(а):Нет. Ни в коем случае это не мой метод.
Извините, не так выразился...
akl писал(а):Посмотрите проект частотомера Леонида Ивановича
Великолепный проект. Золотые руки у Леонида Ивановича.
Как наберу достаточно опыта, попробую повторить.
А пока буду тренироваться на кошках... то есть на АВР'ках... :)
Контактная информация:
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

Ага, вот как раз в том частотомере и используется расширитель импульсов - идея проста как нипель - заряжаем конденсатор стабильным током и временем равном входному ипульсу, разряжаем конденсатор током гораздо меньшим, и измеряем время между началом разряда и достижения нуля. Проблем здесь ровно две: быстродействующий ГСТ на заряд и разряд и быстродействующий компаратор... хотя в его качестве можно наверно использовать триггер шмидта, коим оснащены все входы ПЛМ - кажется так в частотомере и сделано.
Контактная информация:
Ответить

Вернуться в «Цифровая техника»