STM32. Быстрый частотомер. Reciprocal counter.
- Леонид Иванович
- Друг Кота
- Сообщения: 4779
- Зарегистрирован: Сб апр 02, 2011 12:40:46
- Откуда: Минск
- Контактная информация:
Re: STM32. Быстрый частотомер. Reciprocal counter.
Вменяемая разработка - это как раз та, которая быстро наляпана и успешно сбагрена. Если же над разработкой долго ломают голову, то или разработка невменяемая, или разработчик.
- Реклама
Re: STM32. Быстрый частотомер. Reciprocal counter.
А ну да , кроме серийного ширпотреба из свистоперделок , разработок не может быть в прЫнципе .
Ваш чудо-питальник и генератор относим к ... ????
Ваш чудо-питальник и генератор относим к ... ????
- Леонид Иванович
- Друг Кота
- Сообщения: 4779
- Зарегистрирован: Сб апр 02, 2011 12:40:46
- Откуда: Минск
- Контактная информация:
Re: STM32. Быстрый частотомер. Reciprocal counter.
Мелкосерийные приборы специального назначения тоже желательно проектировать побыстрей и успешно реализовывать. Здесь нет никакой разницы с ширпотребом. Цель одна и та же - заработать деньги. А каждый лишний час разработки - это дополнительные затраты. Причем для массового ширпотреба еще хоть как-то можно оправдать всякие ухищрения - при больших тиражах нужно экономить на стоимости каждого экземпляра, пытаться минимизировать количество компонентов. А для серьезных мелкосерийных приборов себестоимость железа обычно не играет большой роли. Поэтому поставить внешнюю логику в частотомер или еще один процессор для обслуживания динамической индикации может быть выгодней, чем тратить время на оптимизацию.
Re: STM32. Быстрый частотомер. Reciprocal counter.
Да ну ...Леонид Иванович писал(а):Поэтому поставить внешнюю логику в частотомер или еще один процессор для обслуживания динамической индикации может быть выгодней, чем тратить время на оптимизацию.
А обслуживать эту внешнюю логику святой дух будет?
И так сравним :
1) Выхлоп на динамику происходит "вручную" - SPI + "ручное" скармливание данных, так как от "извращений" категорически открещиваемся. -------- Тратим процессорное время , чип нужен мощнее.
2) Выхлоп буфера полностью автоматизирован, юзер-код только подкидывает данные в буфер . ---------- на чипе , на внешней логике , на плате .
- Леонид Иванович
- Друг Кота
- Сообщения: 4779
- Зарегистрирован: Сб апр 02, 2011 12:40:46
- Откуда: Минск
- Контактная информация:
Re: STM32. Быстрый частотомер. Reciprocal counter.
Обычно для динамической индикации не использую никаких периферийных блоков, только порты I/O. Времянку задает системный тик, который обычно уже есть. Если индикаторы висят на сдвиговом регистре, иногда использую аппаратный SPI. Это создает неудобства, так как возможности рэмэпа портов сильно ограничены. Но от аппаратного SPI легко отказаться. Загрузка процессора динамической индикацией мизерная, про мощный чип - смешно. Использовать для динамической индикации такой ценный ресурс, как DMA, совершенно излишне. Преимущества программной реализации следующие:
1. Легкое повторное использование кода. В другой системе те или иные периферийные блоки могут быть заняты.
2. Легкая переносимость кода на другие чипы, где периферия может быть устроена по-другому.
3. Ниже потребление контроллера, так как нет необходимости включать тактирование лишним периферийным блокам.
4. Не нужно дополнительных прерываний, которые могут кому-то мешать. Весь код выполняется в основном потоке программы.
5. Полная свобода разводки печатной платы, могу брать пины любых портов в любой последовательности.
1. Легкое повторное использование кода. В другой системе те или иные периферийные блоки могут быть заняты.
2. Легкая переносимость кода на другие чипы, где периферия может быть устроена по-другому.
3. Ниже потребление контроллера, так как нет необходимости включать тактирование лишним периферийным блокам.
4. Не нужно дополнительных прерываний, которые могут кому-то мешать. Весь код выполняется в основном потоке программы.
5. Полная свобода разводки печатной платы, могу брать пины любых портов в любой последовательности.
- Реклама
Re: STM32. Быстрый частотомер. Reciprocal counter.
Из разряда выбираем задачу под камень.Леонид Иванович писал(а):
1. Легкое повторное использование кода. В другой системе те или иные периферийные блоки могут быть заняты.
2. Легкая переносимость кода на другие чипы, где периферия может быть устроена по-другому.
3. Ниже потребление контроллера, так как нет необходимости включать тактирование лишним периферийным блокам.
Прерывания не используются , модуль выхлопа полностью автономный .Леонид Иванович писал(а): 4. Не нужно дополнительных прерываний, которые могут кому-то мешать. Весь код выполняется в основном потоке программы.
ЛИ, опомнитесь, нынче изготовить плату у китаез достаточно просто и достаточно дешево .Леонид Иванович писал(а): 5. Полная свобода разводки печатной платы, могу брать пины любых портов в любой последовательности.
Подобные неудобства могут возникнуть разве только у кулибинов кустарей с дип и односторонним ЛУТ.
А про DMA кстати так же смешно - то он ценный ресурс , то включать лишнюю периферию расточительство.
Юзается всего один канал.
STM32F03 20 TSSOP брал по 18 руб. за штучку ...
- Леонид Иванович
- Друг Кота
- Сообщения: 4779
- Зарегистрирован: Сб апр 02, 2011 12:40:46
- Откуда: Минск
- Контактная информация:
Re: STM32. Быстрый частотомер. Reciprocal counter.
Если делать всякий примитив - тогда да, DMA не жалко. Но в более серьезных системах каналы DMA есть на что потратить более нужное. Удобная разводка платы не только технологически проще, по и способна уменьшить площадь платы, а это - деньги.
Re: STM32. Быстрый частотомер. Reciprocal counter.
ЛИ, не находите что для более серьезных девайсов можно и более навороченный чип взять , а не лепить все и вся на одном и том же чипе?
Все таки камень выбирается под задачу...
На счет примитива, пока Вы спите китайцы наляпали копеечных вольтметров и пожинают прибыль...
http://www.aliexpress.com/wholesale?cat ... voltmeter+
Все таки камень выбирается под задачу...
На счет примитива, пока Вы спите китайцы наляпали копеечных вольтметров и пожинают прибыль...
http://www.aliexpress.com/wholesale?cat ... voltmeter+
Re: STM32. Быстрый частотомер. Reciprocal counter.
Ногодрыжко vs Незаржавейко
Почему их не использовать... если они есть???
Тогда ардуинщики самые вменяемые... не думают сами, ничего не изобретают... покупают готовое и ждут пока кто-то напишет за них скетч... который потом юзается бездумно и в хвост, и в гриву... Вот где заповедник непуганых даунов...Леонид Иванович писал(а):Вменяемая разработка - это как раз та, которая быстро наляпана и успешно сбагрена. Если же над разработкой долго ломают голову, то или разработка невменяемая, или разработчик.
На какую оптимизацию??? Думается один раз... потом только копипастится...поставить внешнюю логику в частотомер или еще один процессор для обслуживания динамической индикации может быть выгодней, чем тратить время на оптимизацию.
И что в нём такого ценного??? На мелком камне один SPI, один УАРТ и один неполный порт... а таймеров и ДМА куча...Использовать для динамической индикации такой ценный ресурс, как DMA, совершенно излишне.
Почему их не использовать... если они есть???
Просто у меня есть выбор... ДМА, прерывания, ногодрыг... у вас его нет... И разводить дисплей по капле с каждого порта никак не экономит полезную площадь платы...в более серьезных системах каналы DMA есть на что потратить более нужное. Удобная разводка платы не только технологически проще, по и способна уменьшить площадь платы, а это - деньги.
"Я не даю готовых решений, я заставляю думать!"(С)
- Леонид Иванович
- Друг Кота
- Сообщения: 4779
- Зарегистрирован: Сб апр 02, 2011 12:40:46
- Откуда: Минск
- Контактная информация:
Re: STM32. Быстрый частотомер. Reciprocal counter.
В этих вольтметрах уж точно не нужна индикация на DMA. Для такой маленькой платки намного важнее возможность перестановки пинов при разводке.dosikus писал(а):китайцы наляпали копеечных вольтметров и пожинают прибыль...
На Ардуино никаких продуктов не делают. А баловаться для себя - да, самые вменяемые.HHIMERA писал(а):Тогда ардуинщики самые вменяемые...
Вот только думать порой можно дольше, чем сделать другим способом.HHIMERA писал(а):На какую оптимизацию??? Думается один раз... потом только копипастится...
Почему нет? Думаете, я не могу сделать на DMA?HHIMERA писал(а):Просто у меня есть выбор... ДМА, прерывания, ногодрыг... у вас его нет...
Неправда. Попробуйте развести, например, вольтметр по ссылке выше. Как минимум, плата станет сложнее, повысится класс точности, больше станет брака. Да и эстетика платы станет хуже. Когда куча переходных, чтобы подключиться к конкретному порту, это выглядит не очень. Плату видят все. А внутреннюю архитектуру программы не видит никто.HHIMERA писал(а):И разводить дисплей по капле с каждого порта никак не экономит полезную площадь платы...
P.S. Очень интересно, как Вы разговариваете в обычной жизни? Многочисленные многоточия заставляют думать, что Вы сильно заикаитесь и пытаетесь письменно сымитировать свою речь.
Re: STM32. Быстрый частотомер. Reciprocal counter.
А ссылочку можно на такие кварцы? И чтобы не по $100 штучка? А то ведь всякие ламборжини, майбахи и т.п. иначе тоже легко доступныalexf58 писал(а): Легко доступны кварцы с точностью порядка 1 ппм или чуть лучше.
Созвучно с утверждением - "самолет в 10 раз быстрее поезда". Только вот есть АН-2 со скоростью 250 км/ч (без учета ветраЛеонид Иванович писал(а): Переходить на частотах выше 1 МГц на метод прямого счета - это терять точность почти в 100 раз. Это несерьезно.
И вообще-то, чем выше частота сигнала - тем точнее метод прямого счета ПРИ ТОМ ЖЕ ПЕРИОДЕ ИЗМЕРЕНИЯ (существенное условие).
А как давно тому назад я уже на эту тему "бодался" - либо меряем частоту, либо меряем период сигнала. Все прочее - навороты, на сущность не влияющие.
Вообще, либо я что-то пропустил (проморгал
ТС дал следующее:
"Дано:
1. Датчик у которого на выходе ЧМ сигнал (меандр) частотой 30..300 кГц;
2. Плата STM32F4Discovery (нужна большая внутр частота).
Задача: Получить показания датчика (измерить частоту) 10000 раз в секунду."
Я это понимаю так - диапазон ЧМ-модулированного сигнала: от 30 до 300 кГц.
Железка для измерения - ну вполне ничего себе, приличная
Период измерения - 100 мкС. Не больше.
Но вот про частоту модуляции - цифирек нет. А по теоремам всяких умных дядек она может быть и 15 кГц, т.е. период - 66,6.. мкС - меньше максимального периода измерения.
(ну "морзить" я начал, 2 частоты: 30 кГц - "точка", 300 кГц - "тире", и передаю не сам, а "ускоритель-автомат" ключом клацает 15 тыс. раз в секунду, та же плата STM32F4Discovery , например
Чем больше период измерения, тем точнее измеряем среднюю частоту (надеюсь это очевидно).
Но и тем ниже точность измерения "мгновенной" частоты. А при ЧМ она важна (тоже очевидно).
Соответственно только после того, как будет известна частота модуляции (диапазон частоты модуляции), можно будет ОБОСНОВАННО выбирать метод, обеспечивающий необходимую или максимальную точность - зависит опять-таки от задачи, и опять-таки в явном виде не нашел - что надо получить.
Не сравнивая скорость самолета со скоростью поезда
Так что меряем-то?
Человек - это звучит гордо, а обезьяна - объективно...
Re: STM32. Быстрый частотомер. Reciprocal counter.
Я несколько месяцев назад купил себе 0.1 ппм 10 МГц на ебае, не дороже $10. Модуль, а не кварц, чтобы быть точным.SergeBS писал(а):
А ссылочку можно на такие кварцы? И чтобы не по $100 штучка?
А 1 ппм - не проблема совсем
http://www.ebay.com/itm/TCXO-Oscillator ... 566cdf37e6
А можно и в "нормальном" магазине. 0.5 ппм за $4.54
http://www.mouser.com/ProductDetail/AVX ... 2fYON4o%3d
Re: STM32. Быстрый частотомер. Reciprocal counter.
alexf58 писал(а): Я несколько месяцев назад купил себе 0.1 ппм 10 МГц на ебае, не дороже $10. Модуль, а не кварц, чтобы быть точным.
Полюбуйся на "потрошка":
Сообщение: # 285414 распилил ТXCO
Вызывает размышления, не так ли?
Человек - это звучит гордо, а обезьяна - объективно...
Re: STM32. Быстрый частотомер. Reciprocal counter.
Есть предложение совсем не думать???Леонид Иванович писал(а): Вот только думать порой можно дольше, чем сделать другим способом.
Можете...но что-то мне подсказывает... что в итоге возобладают старые привычки...Думаете, я не могу сделать на DMA?
Этот вольтметр не показатель... там нет в МК ДМА... и все порты частичные... там вариантов быть не может... априори...Неправда. Попробуйте развести, например, вольтметр по ссылке выше. Как минимум, плата станет сложнее, повысится класс точности, больше станет брака. Да и эстетика платы станет хуже. Когда куча переходных, чтобы подключиться к конкретному порту, это выглядит не очень. Плату видят все. А внутреннюю архитектуру программы не видит никто.
Это хорошо!!!Очень интересно, как Вы разговариваете в обычной жизни? Многочисленные многоточия заставляют думать
"Я не даю готовых решений, я заставляю думать!"(С)
Re: STM32. Быстрый частотомер. Reciprocal counter.
Что ж так категорично ?Леонид Иванович писал(а):
В этих вольтметрах уж точно не нужна индикация на DMA. Для такой маленькой платки намного важнее возможность перестановки пинов при разводке.
И чем плох будет аппаратный выхлоп ? Добавляем туда кучу плюшек в виде 1wire , SPI , UART. С опциональным выбором .
И вуаля - получаем многофункциональный показометр
Re: STM32. Быстрый частотомер. Reciprocal counter.
Спор с ЛИ напоминает...
- У меня Мерс забарахлил!
- Ничего! Поставим колёса от Жигулей, будет ездить!
- Но это же Мерс!?
- Ну и что? Все колёса круглые!
- Дело не в колёсах, там что-то с ЭБУ!
- Ничего, поставим двигатель и приборную панель от Жигулей! Будет ездить!

- У меня Мерс забарахлил!
- Ничего! Поставим колёса от Жигулей, будет ездить!
- Но это же Мерс!?
- Ну и что? Все колёса круглые!
- Дело не в колёсах, там что-то с ЭБУ!
- Ничего, поставим двигатель и приборную панель от Жигулей! Будет ездить!
"Я не даю готовых решений, я заставляю думать!"(С)
Re: STM32. Быстрый частотомер. Reciprocal counter.
Способ НHIMERA очень хорош. Можно брать его за основу и использовать.
Основан он на gate режиме slave таймера для опорной частоты. Таймером измеряемой частоты этот самый gate формируется как PWM. таймеры связаны как master-slave. master использует out compare как trigger. Окончание импульса расчитывается (прикидывается) программно на основании уже посчитанной частоты. Предложено брать количество импульсов за половину необходимого времени измерения и умножать их на 2. Это будет количество периодов измеряемого сигнала.
Возможные модификации этого метода что пришли на ум:
1. Уточнение окончания. Можно выполнять прикидку не на половине измеряемого диапазона а за, например, 1/128 до конца измерительного интервала. И окончание импульса сдвигать на 1/128 от прикидочного количества измеренных импульсов + 2. 2 необходимо для очень низких частот, когда 1/128 от прикидочного количества будет == 0.
2. Можно использовать оба метода PWM. В одном из них начинать формировать gate например с 1 а таймер инициализировать 0 и окончание импульса регулировать ARR. В другом случае таймер инициализировать 0xFFFFFFFF а gate формировать с 0 окончание регулировать CCR.
3. Можно использовать не режим pwm а режим установки по сравнению для начала счета и режим сброса по сравнению при окончании счета. В этом случае можно использовать 16 бит таймер в качестве таймера для входного сигнала. В промежутке когда переключение не желательно (вредно) выход можно заморозить (см режимы сравнения).
4. Использовать toggle режим формирования импульса аналогично пункту 3.
Все это только разные методы формирования gate. Его окончание нужно предсказывать так как предложил НHIMERA.
Можно также модифицировать этот метод для непрерывного счета. Формирование импульса так же как описано выше. Но использовать не режим gate, а подключить trigger к capture регистру опорного таймера. Интервал измерения можно выбирать очень небольшой, например количество импульсов за 10 микросекунд + 2. 10микросекунд это так от балды. Интервал определяется возможностями числовой обработки результата измерения - начинать следующее измерение не обсчитав предыдущее нельзя. Ну нужно оставить процессору время на отображение окончательного расчета и на остальное. Обсчет производить с помощью метода линейной регрессии - методом наименьших квадратов. Для расчета 1 измерения требуется выполнить по-моему 4 умножения и прибавить результаты к соответствующим суммам. Таким образом набрать измерений в течение примерно 0.1 секунды. Потом обсчитать по методу наименьших квадратов окончательно и использовать результат.
Об увеличении точности согласно статье что приведена в ссылках в wiki про частотомер на английском:
1. Эстентсивный метод - увеличение частоты опорного сигнала при обратном методе. Например в stm32f4 можно использовать 180MHz опорный сигнал, что в сравнении с 24 мегагерцами f100 даст хорошее увеличение разр способности.
3. Использовать аналоговый интерполятор.
4. Использовать статистическую обработку (метод наименьших квадратов) и непрерывное измерение. Причем это можно применить как к обычному обратному методу так и к обратному методу с интерполятором.
5. Использовать загадочную девиацию Аллана. Как это делается я не знаю. Возможно это вообще всего лишь рекламный трюк и использовать это нельзя. Вот об этом очень хотелось бы услышать стороннее мнение.
Ну есть еще одна идея об окончании импульса gate. Использовать режим сброса по поступлении входного сигнала. Входной сигнал окончания измерения подавать на capture вывод таймера вх сигнала (внешнее соединение!!). Этот вывод использовать с одной стороны для захвата, что бы знать сколько периодов входного сигнала прошло, с другой стороны использовать его для окончания формирования gate - reset режим таймера вх сигнала. Здесь нужно экспериментировать. То есть проверять, что это работает и сигналы формируются по фронтам входного сигнала, а не опорного, что не факт. И не факт что произойдет сначала захват, а потом сброс а не наоборот. В мануале по этому поводу молчок.
Основан он на gate режиме slave таймера для опорной частоты. Таймером измеряемой частоты этот самый gate формируется как PWM. таймеры связаны как master-slave. master использует out compare как trigger. Окончание импульса расчитывается (прикидывается) программно на основании уже посчитанной частоты. Предложено брать количество импульсов за половину необходимого времени измерения и умножать их на 2. Это будет количество периодов измеряемого сигнала.
Возможные модификации этого метода что пришли на ум:
1. Уточнение окончания. Можно выполнять прикидку не на половине измеряемого диапазона а за, например, 1/128 до конца измерительного интервала. И окончание импульса сдвигать на 1/128 от прикидочного количества измеренных импульсов + 2. 2 необходимо для очень низких частот, когда 1/128 от прикидочного количества будет == 0.
2. Можно использовать оба метода PWM. В одном из них начинать формировать gate например с 1 а таймер инициализировать 0 и окончание импульса регулировать ARR. В другом случае таймер инициализировать 0xFFFFFFFF а gate формировать с 0 окончание регулировать CCR.
3. Можно использовать не режим pwm а режим установки по сравнению для начала счета и режим сброса по сравнению при окончании счета. В этом случае можно использовать 16 бит таймер в качестве таймера для входного сигнала. В промежутке когда переключение не желательно (вредно) выход можно заморозить (см режимы сравнения).
4. Использовать toggle режим формирования импульса аналогично пункту 3.
Все это только разные методы формирования gate. Его окончание нужно предсказывать так как предложил НHIMERA.
Можно также модифицировать этот метод для непрерывного счета. Формирование импульса так же как описано выше. Но использовать не режим gate, а подключить trigger к capture регистру опорного таймера. Интервал измерения можно выбирать очень небольшой, например количество импульсов за 10 микросекунд + 2. 10микросекунд это так от балды. Интервал определяется возможностями числовой обработки результата измерения - начинать следующее измерение не обсчитав предыдущее нельзя. Ну нужно оставить процессору время на отображение окончательного расчета и на остальное. Обсчет производить с помощью метода линейной регрессии - методом наименьших квадратов. Для расчета 1 измерения требуется выполнить по-моему 4 умножения и прибавить результаты к соответствующим суммам. Таким образом набрать измерений в течение примерно 0.1 секунды. Потом обсчитать по методу наименьших квадратов окончательно и использовать результат.
Об увеличении точности согласно статье что приведена в ссылках в wiki про частотомер на английском:
1. Эстентсивный метод - увеличение частоты опорного сигнала при обратном методе. Например в stm32f4 можно использовать 180MHz опорный сигнал, что в сравнении с 24 мегагерцами f100 даст хорошее увеличение разр способности.
3. Использовать аналоговый интерполятор.
4. Использовать статистическую обработку (метод наименьших квадратов) и непрерывное измерение. Причем это можно применить как к обычному обратному методу так и к обратному методу с интерполятором.
5. Использовать загадочную девиацию Аллана. Как это делается я не знаю. Возможно это вообще всего лишь рекламный трюк и использовать это нельзя. Вот об этом очень хотелось бы услышать стороннее мнение.
Ну есть еще одна идея об окончании импульса gate. Использовать режим сброса по поступлении входного сигнала. Входной сигнал окончания измерения подавать на capture вывод таймера вх сигнала (внешнее соединение!!). Этот вывод использовать с одной стороны для захвата, что бы знать сколько периодов входного сигнала прошло, с другой стороны использовать его для окончания формирования gate - reset режим таймера вх сигнала. Здесь нужно экспериментировать. То есть проверять, что это работает и сигналы формируются по фронтам входного сигнала, а не опорного, что не факт. И не факт что произойдет сначала захват, а потом сброс а не наоборот. В мануале по этому поводу молчок.
- Леонид Иванович
- Друг Кота
- Сообщения: 4779
- Зарегистрирован: Сб апр 02, 2011 12:40:46
- Откуда: Минск
- Контактная информация:
Re: STM32. Быстрый частотомер. Reciprocal counter.
Какие размышления? Что Вы ожидали там увидеть? Характеристики, заявленные производителем, обеспечиваются.SergeBS писал(а):Полюбуйся на "потрошка":
Вызывает размышления, не так ли?
Такого предложения нет. Но время разработки - это тоже ресурс, который стоит денег. Только в редких случаях может быть оправдано создание очень хитрого алгоритма или аппаратной конфигурации. Например, когда пытаемся впихнуть в маленький кристалл то, что туда не влезает. Оправдать такое можно только большими тиражами, когда замена кристалла будет дорого стоить. Но у кого тут есть большие тиражи? А в большинстве обычных задач выгоднее применять простые проверенные решения.HHIMERA писал(а):Есть предложение совсем не думать???
Не привычки, а рационализм. Плюсы программной реализации динамической индикации я приводил, они сильно перевешивают. Но я не буду категоричен, если попадется проект, сильно загруженный прерываниями, тогда ничего не останется, как делать аппаратное сканирование индикаторов. Но такой проект - это либо ошибка разработки, либо большая экзотика.HHIMERA писал(а):Можете...но что-то мне подсказывает... что в итоге возобладают старые привычки...
Лично мне нравится красивая разводка печатных плат. Поэтому возможность переставлять выводы перевешивает плюсы использования аппаратных модулей. Использую их только в случае крайней необходимости. С этой точки зрения очень нравятся ПЛИС - там почти все ноги можно разводить как попало.HHIMERA писал(а):Этот вольтметр не показатель...
Начнем с того, что он не будет ничем хорош. Программный справляется точно так же, плюс имеем бонусы в виде свободного назначения ног, легкой переносимости кода и т.д., обо всем этом я уже писал. Есть случаи, когда аппаратное решение весьма желательно, например, при реализации 1-Wire, там критичны времена. Но тот же 1-Wire реализуется в STM32 через одно место, возмущает, что при столь развитой периферии не нашлось места нескольким аппаратным портам 1-Wire.dosikus писал(а):И чем плох будет аппаратный выхлоп ?
Хорош - кто ж спорит. А учитывая то, что других вариантов ни у кого не родилось, он вообще самый лучший. Недостатки метода связаны не с тем, что НHIMERA что-то не так сделал, а с кривостью таймеров STM32. Чтобы метод довести до реального частотомера, потребуется дополнить его кучей проверок. Но это все реально. Ваши предложения по модификации метода надо изучить, сходу не могу ничего сказать, так как знаю периферию STM32 очень плохо.Galizin писал(а):Способ НHIMERA очень хорош.
Было бы заманчиво построить частотомер на STM32 с аналоговым интерполятором, для этого есть встроенный точный и быстрый АЦП. Но как это сделать - никаких вариантов не рождается. У меня всегда одно решение - поставить рядом ПЛИС.Galizin писал(а):3. Использовать аналоговый интерполятор.
Для чего использовать? Девиация Аллана - это всего лишь мера нестабильности частоты. Частотомеры ее могут измерять, но к работе самих частотомеров она отношения не имеет. Корректно измерять девиацию Аллана могут лишь частотомеры с timestamping.Galizin писал(а):5. Использовать загадочную девиацию Аллана.
Re: STM32. Быстрый частотомер. Reciprocal counter.
Еще одно добавление к моему 2-х таймерному методу. Если использовать DMA для чтения состояния счетчика тактов при захвате последнего фронта входных импульсов, похоже (особо внимательно не изучил еще) надо всего 6 тактов. Значит при клоке 72 МГц можно до примерно 10 МГц ничего не пропустить. В диапазоне 10-20 МГц пропустим один импульс (если программно не прибавим единичку), что даст дополнительную погрешность 0.1 ппм при интервале 1 сек и 1 ппм при 0.1 сек.
Или включим prescaler на 2 и ничего не пропустим.
Или включим prescaler на 2 и ничего не пропустим.
- Леонид Иванович
- Друг Кота
- Сообщения: 4779
- Зарегистрирован: Сб апр 02, 2011 12:40:46
- Откуда: Минск
- Контактная информация:
Re: STM32. Быстрый частотомер. Reciprocal counter.
Зачем делать хуже, чем уже сделано у HHIMERA?


