Например TDA7294

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





Текущее время: Пн июн 16, 2025 08:58:33

Часовой пояс: 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
Рейтинг сообщений: 144
Зарегистрирован: Ср июн 08, 2011 20:25:20
Сообщений: 438
Рейтинг сообщения: 0
Теория: Нам нужно измерить количество тактовых импульсов между фронтами 1 импульса и N импульса. Между ними около 1сек

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


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

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


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

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


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

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

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

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

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


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

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

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


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

Карма: 14
Рейтинг сообщений: 320
Зарегистрирован: Пт апр 09, 2010 16:06:38
Сообщений: 962
Откуда: Тула
Рейтинг сообщения: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


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

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


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