Например TDA7294

Форум РадиоКот • Просмотр темы - STM32. Быстрый частотомер. Reciprocal counter.
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 16, 2024 22:29:57

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 229 ]     ... , , , , 12
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: STM32. Быстрый частотомер. Reciprocal counter.
СообщениеДобавлено: Чт окт 22, 2020 23:21:07 
Встал на лапы

Зарегистрирован: Ср май 16, 2012 20:44:38
Сообщений: 116
Откуда: Украина.Харьков.
Рейтинг сообщения: 0
Один период
100'000'000*1/11'111=9000,09Гц при погрешности квантования ±0,81Гц
10 периодов
100'000'000*10/111'111=9000,009Гц при погрешности квантования ±0,081Гц
Да соглашусь, с математикой не поспоришь.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32. Быстрый частотомер. Reciprocal counter.
СообщениеДобавлено: Вс ноя 08, 2020 18:08:37 
Встал на лапы

Зарегистрирован: Ср май 16, 2012 20:44:38
Сообщений: 116
Откуда: Украина.Харьков.
Рейтинг сообщения: 0
Тема с частотомером заглохла. Короче я опоздал с этой темой на 6 лет. Но я только начал изучать STM так что мне простительно. Частотомер по большому счёту нужен редко. Когда то делал на 176 серии(прямой счёт) и тот забросил. Поднимаю тему потому что при изготовлении можно хорошо изучить таймеры. Я сейчас выложу своё виденье реализации, если не прав поправьте, если есть у кого желание. Повторяю я только в начале пути STM.
1.Измеряем период одного импульса входного с помошью INPUT PWM.
2. умножаем этот период на число, чтобы получилась длительность примерно 1 секунда. Это у нас будет Gate. Число импульсов входной у нас уже есть целое и период этих импульсов тоже есть, их количество вместившееся в примерно 1 секунду.
3.Запускаем ещё один таймер с периодом который мы посчитали. И считаем тактовые импульсы таймера.
4.По формуле просто делим тактовые на те что мы закинули в GATE.
И всё здесь никаких прерываний по моему не надо.
Ход мыслей правильный или я где то ошибся.
Всё по методу Химеры. Только для очень низких частот я пока не вьехал в тему.

Добавлено after 6 hours 49 minutes 24 seconds:
Вот выдержка из даташита. Получается мы получим сигнал сравнения не раньше ,чем через 3 такта.

"OC1FE: Output Compare 1 fast enable
Бит для разрешения "быстрого сравнения" в канале 1. Этот бит используется для ускорения проявления эффекта на выходе канала от воздействия триггерного события на входе.
0: обычное функционирование канала, состояние канала определяется значениями в счётчике и в регистре сравнения CCR1. При работе таймера в подчинённом режиме, минимальная задержка от фронта триггерного сигнала до проявления эффекта, составляет 5 периодов тактового сигнала.
1: активный фронт триггерного сигнала воздействует на выход канала как срабатывание схемы сравнения. В результате на выходе устанавливается соответствующий совпадению уровень, независимо от результата сравнения. Задержка от выборки триггерного сигнала до воздействия на выход канала сокращается до 3 тактов. Бит действует только при работе канала в режиме PWM1 или PWM2." Значение в регистре CCR буде правильным , но получить сигнал о захвате мы сможем не ранее 3 тактов опорной. Я так понял эту выдержку. ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32. Быстрый частотомер. Reciprocal counter.
СообщениеДобавлено: Вт дек 22, 2020 06:29:32 
Мучитель микросхем

Карма: 24
Рейтинг сообщений: 137
Зарегистрирован: Ср июн 08, 2011 20:25:20
Сообщений: 423
Рейтинг сообщения: 0
Теория: Нам нужно измерить количество тактовых импульсов между фронтами 1 импульса и N импульса. Между ними около 1сек

Ваши 1 и 2 пункт не правильно определяют время между 1 иN импульсом. По одному периоду нельзя точно определить этот интервал.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: STM32. Быстрый частотомер. Reciprocal counter.
СообщениеДобавлено: Вт дек 22, 2020 13:19:31 
Опытный кот
Аватар пользователя

Карма: 14
Рейтинг сообщений: 307
Зарегистрирован: Пт апр 09, 2010 16:06:38
Сообщений: 869
Откуда: Тула
Рейтинг сообщения: 0
bob1, он примерно определит время, потом прикинет сколько периодов уместиться в 1 сек. Мутный алгоритм, может его и можно будет до ума довести, только незачем, есть более внятные способы.


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: STM32. Быстрый частотомер. Reciprocal counter.
СообщениеДобавлено: Вт дек 22, 2020 20:18:17 
Мучитель микросхем

Карма: 24
Рейтинг сообщений: 137
Зарегистрирован: Ср июн 08, 2011 20:25:20
Сообщений: 423
Рейтинг сообщения: 0
уместиться в 1 сек
В том то и дело зачем растягивать, если толку нет.
есть более внятные способы
Есть ссылки? Нужно тоже быстро замутить частотомер на stm32. Изучаю тему.
Пока вижу так. Настраиваем TIM2 на Input Capture (захват внешних событий) по фронту нарастания уровня. Тактовые импульсы от опорника. По захвату DMA переносит значение регистра CC2R в память RAM. DMA настроен на цикл. По окончании цикла прерывание, где увеличиваем на +1 переменную. Эта переменная и 16 разрядный счетчика DMA будут копить количество входных импульсов.
1 секунду для можно выждать хоть системным таймером.
По окончании остановить захват. Считать данные из RAM -количество тактовых импульсов от опорника. Количество входных импульсов тоже есть. Дальше известная математика.
Пока не понятно как сделать старт тактов для TIM2 от 1-го импульса...или как быстро считать-запомнить первые захваченные данные с регистра CC2R .


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: STM32. Быстрый частотомер. Reciprocal counter.
СообщениеДобавлено: Вт дек 22, 2020 22:19:02 
Опытный кот
Аватар пользователя

Карма: 14
Рейтинг сообщений: 307
Зарегистрирован: Пт апр 09, 2010 16:06:38
Сообщений: 869
Откуда: Тула
Рейтинг сообщения: 1
В том то и дело зачем растягивать, если толку нет.

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

Пока вижу так...

Очень расточительно по ресурсам, я делал по другому. Некий симбиоз способов прямого и обратного счета, свободный от недостатков обоих способов падения точности по разным краям диапазона. Получилось обойтись совсем без критических по скорости мест, все аппаратно. Но не каждый STM32 так сможет, у меня был 303, задействовано 4 таймера, компаратор и 4 пина. Смысл алгоритма в подсчете фронтов опорной частоты между несколькими фронтами входной частоты. По этим значениям вычисляется входная частота. Изюминка в том, что погрешность во всем диапазоне частот зависит только от длины интервала измерения, стабильности и величины опорной частоты, ну и неидеальности входного формирователя естественно (дрейф, шум). Естественно такое достигается только если весь этот огород работает синхронно. Основная сложность как раз в этом и была, один таймер там только и делает, что запускает и тормозит остальную связку. Требование фактически только одно - в течении интервала измерения должно прийти хотя бы два фронта входного сигнала.
Изображение
Сверху калибратор осциллографа, снизу нога кварца STM32F103, время измерения 200 мс. Все знаки стабильны (можно было и добавить, но данная функция девайса не основная, а второстепенная и входные цепи не очень приспособлены под частотомер).
Впервые упоминание о таком алгоритме, применительно к мелким 8-битным МК, встречал лет 10-15 назад по моему на электрониксе. Попробую поискать.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32. Быстрый частотомер. Reciprocal counter.
СообщениеДобавлено: Ср дек 23, 2020 08:15:31 
Мучитель микросхем

Карма: 24
Рейтинг сообщений: 137
Зарегистрирован: Ср июн 08, 2011 20:25:20
Сообщений: 423
Рейтинг сообщения: 0
4 пина
Это много. Не подходит. Если убрать компаратор, то должно быть меньше.
Смысл алгоритма в подсчете фронтов опорной частоты между несколькими фронтами входной частоты.
Скорее всего между 2-мя двумя фронтами (не обязательно соседними), а разнесенными на некоторое время. Выше описанный алгоритм и работает по этому принципу.
Попробую поискать
Спасибо. Не нужно. Алгоритм у меня есть.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32. Быстрый частотомер. Reciprocal counter.
СообщениеДобавлено: Ср дек 23, 2020 10:51:58 
Опытный кот
Аватар пользователя

Карма: 14
Рейтинг сообщений: 307
Зарегистрирован: Пт апр 09, 2010 16:06:38
Сообщений: 869
Откуда: Тула
Рейтинг сообщения: 0
Если убрать компаратор, то должно быть меньше.

Возможно. Нужно обеспечить прохождение входного сигнала на три таймера для старта, захвата и подсчета фронтов.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32. Быстрый частотомер. Reciprocal counter.
СообщениеДобавлено: Вс фев 14, 2021 21:09:10 
Встал на лапы

Зарегистрирован: Ср май 16, 2012 20:44:38
Сообщений: 116
Откуда: Украина.Харьков.
Рейтинг сообщения: 0
Если не нужен очень точный частотометр, то он делается элементарно.
TIM1 толкает TIM2 10 секунд и за эти 10 сек он подсчитывает частоту. Против
1 секунды мы увеличиваем точность в 10 раз. И усё , для быстрых измерений он не годится , если частота стабильная то самый раз. Код элементарный.
Выкладываю на регистрах для F4

TIM2->CCMR1=0x0101;
TIM2->SMCR=0x4005;
TIM2->CR1=0x0001;

TIM1->PSC=0x833F;
TIM1->CCMR1=0x0070;
TIM1->CCR1=0x3CB0;
TIM1->SMCR=0x0000;
TIM1->BDTR=0x8000;
TIM1->CR2=0x0040;
TIM1->CR1=0x0001;

Добавлено after 1 hour 5 minutes 9 seconds:
Это конечно не обратный счёт, а прямой,но для высоких частот отлично
меряет, а вот низкие конечно погрешность. Уменьшить погрешность на низких
можно увеличением интервала, но 20 секунд ждать это слишком. Другие методы я пока не потянул. Ну для человека 3 месяца изучающего STM это и понятно. Месяц только таймеры пиляю, не просто так ,а каждый бит в регистрах теперь понятен.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 229 ]     ... , , , , 12

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: Юрий48 и гости: 18


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y