Один период 100'000'000*1/11'111=9000,09Гц при погрешности квантования ±0,81Гц 10 периодов 100'000'000*10/111'111=9000,009Гц при погрешности квантования ±0,081Гц
Тема с частотомером заглохла. Короче я опоздал с этой темой на 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 тактов опорной. Я так понял эту выдержку. ?
bob1, он примерно определит время, потом прикинет сколько периодов уместиться в 1 сек. Мутный алгоритм, может его и можно будет до ума довести, только незачем, есть более внятные способы.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Есть ссылки? Нужно тоже быстро замутить частотомер на stm32. Изучаю тему. Пока вижу так. Настраиваем TIM2 на Input Capture (захват внешних событий) по фронту нарастания уровня. Тактовые импульсы от опорника. По захвату DMA переносит значение регистра CC2R в память RAM. DMA настроен на цикл. По окончании цикла прерывание, где увеличиваем на +1 переменную. Эта переменная и 16 разрядный счетчика DMA будут копить количество входных импульсов. 1 секунду для можно выждать хоть системным таймером. По окончании остановить захват. Считать данные из RAM -количество тактовых импульсов от опорника. Количество входных импульсов тоже есть. Дальше известная математика. Пока не понятно как сделать старт тактов для TIM2 от 1-го импульса...или как быстро считать-запомнить первые захваченные данные с регистра CC2R .
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Очень расточительно по ресурсам, я делал по другому. Некий симбиоз способов прямого и обратного счета, свободный от недостатков обоих способов падения точности по разным краям диапазона. Получилось обойтись совсем без критических по скорости мест, все аппаратно. Но не каждый STM32 так сможет, у меня был 303, задействовано 4 таймера, компаратор и 4 пина. Смысл алгоритма в подсчете фронтов опорной частоты между несколькими фронтами входной частоты. По этим значениям вычисляется входная частота. Изюминка в том, что погрешность во всем диапазоне частот зависит только от длины интервала измерения, стабильности и величины опорной частоты, ну и неидеальности входного формирователя естественно (дрейф, шум). Естественно такое достигается только если весь этот огород работает синхронно. Основная сложность как раз в этом и была, один таймер там только и делает, что запускает и тормозит остальную связку. Требование фактически только одно - в течении интервала измерения должно прийти хотя бы два фронта входного сигнала. Сверху калибратор осциллографа, снизу нога кварца STM32F103, время измерения 200 мс. Все знаки стабильны (можно было и добавить, но данная функция девайса не основная, а второстепенная и входные цепи не очень приспособлены под частотомер). Впервые упоминание о таком алгоритме, применительно к мелким 8-битным МК, встречал лет 10-15 назад по моему на электрониксе. Попробую поискать.
Смысл алгоритма в подсчете фронтов опорной частоты между несколькими фронтами входной частоты.
Скорее всего между 2-мя двумя фронтами (не обязательно соседними), а разнесенными на некоторое время. Выше описанный алгоритм и работает по этому принципу.
Если не нужен очень точный частотометр, то он делается элементарно. TIM1 толкает TIM2 10 секунд и за эти 10 сек он подсчитывает частоту. Против 1 секунды мы увеличиваем точность в 10 раз. И усё , для быстрых измерений он не годится , если частота стабильная то самый раз. Код элементарный. Выкладываю на регистрах для F4
Добавлено after 1 hour 5 minutes 9 seconds: Это конечно не обратный счёт, а прямой,но для высоких частот отлично меряет, а вот низкие конечно погрешность. Уменьшить погрешность на низких можно увеличением интервала, но 20 секунд ждать это слишком. Другие методы я пока не потянул. Ну для человека 3 месяца изучающего STM это и понятно. Месяц только таймеры пиляю, не просто так ,а каждый бит в регистрах теперь понятен.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 24
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения