Зарегистрирован: Пн мар 17, 2014 10:37:29 Сообщений: 28
Рейтинг сообщения:0
Не знаю расчехлится ли кто-то после 2 с лишним лет. Вот код для STM32F0-Discovery. Яркий пример прямого счета (насколько я понял). Прерывание срабатывает, когда на 1 из 4ёх входов таймера приходит передний фронт. И считается [частота сигнала] = [частота таймера] / [сколько натикало за 1 период] Примитивно, но работает. Так же работает пример от ST Timer_PWM_Input_mode Спойлер
У STM32F407 есть "3×12-bit, 2.4 MSPS A/D converters: up to 24 channels and 7.2 MSPS in triple interleaved mode", то есть скорости более чем достаточно для того, чтобы считывать сигнал частотой 100КГц. Тактовой частоты тоже более чем достаточно, чтобы обрабатывать этот сигнал в реальном времени.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Какая там халява - если задача требует точного измерения частоты за короткий интервал времени, то здесь как раз место для Reciprocal Counting, но его для STM32 пока никто красиво не написал.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Леонид Иванович, поделитесь методикой расчета точности.
В общем в процессе. Да, ничего особенно сложного, если почитать Ref.manual. И уже считает. Кварц у контроллера 8 МГц (нестабильность +-50ppm). Внутри частота умножается до 168 МГц. Там свои ppm'ы. Вопрос: может стоит использовать внешнее тактирование для таймера? Там есть такая возможность (ETR).
Причина проста. У меня не хватает мозгов такое написать.
kybin писал(а):
Да, ничего особенно сложного, если почитать Ref.manual. И уже считает.
Вы уже реализовали Reciprocal Counting? Как Вам это удалось?
kybin писал(а):
Кварц у контроллера 8 МГц (нестабильность +-50ppm). Внутри частота умножается до 168 МГц. Там свои ppm'ы. Вопрос: может стоит использовать внешнее тактирование для таймера? Там есть такая возможность (ETR).
PLL дает повышенный фазовый шум, но среднее значение частоты погрешности практически не имеет. Чувствительность частотомера к фазовому шуму обратно пропорциональна интервалу измерения. В общем случае, конечно, лучше обойтись без PLL. Но можно работать и с ней. Другое дело, что обычный кварц в качестве опорного генератора подходит плохо. Нужно взять хотя бы TCXO для тактирования процессора. Внешнее тактирование таймеров не знаю, получится ли применить в таком алгоритме счета. Что касается погрешности, то для метода Reciprocal Counting относительная погрешность не зависит от частоты и равна 1 / (Tизм * Fref), плюс погрешность опорного генератора. Если нужен хороший частотомер, то вряд ли стоит тратить силы по натягиванию этой задачи на STM32, проще взять ПЛИС и на ней сделать всё как надо.
Если измерительный интервал равен 100 мкс, то при опорной частоте 168 МГц получается относительная погрешность измерения около 0.006%. Конечно, при условии, что удастся реализовать на STM32 метод Reciprocal Counting.
Да чем там делиться... чем??? Там инит двух таймеров... в теме всё расписано... дальше чисто формула... Ну лень мне рыться в своей "помойке"... проверять в железе... править что-то... неинтересно уже... Всё работает... чтобы там ЛИ не говорил... Работает и на STM32 и на STM8L... и даже на STM8S903... Я не делал частотомер... я просто проверил идею, возможность... суть Reciprocal Counting... и просто развеял миф что "сделать нельзя"...
_________________ "Я не даю готовых решений, я заставляю думать!"(С)
TIM1 в режиме Master выдавал секундные импульсы на TIM2, который был настроен как Slave mode: External Clock mode 2 + gated mode... TIM2 осуществлял подсчёт импульсов по входу ETR... В принципе... и всё... Ничего сложного там нет...
А для меня вот непонятно - как настроить одновременно ETR и gate mode? Бит SMS регистра SMCR сделать этого не даст, как я понял это тупо мультиплексор:
Автору топика черкнул, но боюсь он уже здесь не появится.
Сейчас этот форум просматривают: mab72 и гости: 32
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения