Частотомер штука точная и требует особого подхода. Таймеры STM32 это могут делать, но требуют глубоких знаний по их устройству и настройки. Частотомер должен точно измерять высокие частоты, низкие, период и длительность импульсов, а это связано с разными режимами таймеров. На помощь приходит CubeIDE и встроенный туда CubeMX. Идея в том, что бы настроить таймеры в кубе мышкой, написать пару строчек простого кода и всё, что нам нужно, частота, период и др. лежит в переменных, которые выводим куда захотим и процессор при этом не загружаем.
Добавлено after 1 hour 3 minutes 9 seconds: ВЧ частоту считаем по входу TIM2_ETR за 1сек, которую дает TIM1 в связке по железу.
ivan dimir, естественно, для измерения частоты нужно минимум три таймера: один считает длительность входных импульсов, второй считает количество импульсов за секунду. А узнать, что прошла именно секунда, ему поможет третий таймер. Далее, как я уже в другой теме говорил: в зависимости от количества импульсов и длительности выбираем тот или другой метод измерения, чем значительно повышаем точность.
Ну и, конечно, никакого калокуба! Калом пользуются лишь абдуринщики. А их копропродукцию все прекрасно видели...
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
Не надо GPIO EXTI! Есть же таймеры в режиме захвата! А они чуть ли не до полной тактовой частоты умеют. А у некоторых линеек МК — даже выше! И повторюсь: измерять длительность импульса можно лишь для низких частот. Для высоких нужно считать, сколько их штук в секунду (или несколько секунд). Точность будет выше. Абы разрядности хватило и частотных свойств.
И еще раз: КАЛ — это адов отстой для нищих разумом. Ни в коем случае эту дрянь нельзя использовать!
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
Идея в том, что бы сделать настоящий частотомер, а не очередной показометр. Первые тесты показали, что это возможно. На одной секунде удалось поймать несколько наносекунд. Таймеры синхронизированы по железу благодаря настройкам в кубе. Железу пофиг, каким способом его настроили, важен результат. Средства отладки CubeIDE позволяют этот результат отслеживать. Ещё идея обойтись без термостата кварца с коррекцией по температуре. Пока работаю с stm32H743, но потом перенесу на более доступный камень типа F401 с выводом на LCD 16x2. Максимальная измеряемая частота 200-250Мгц. Советую изучать устройство таймеров - очень пригодится, ну и куб в придачу.
Я извеняюсь.Был после дня рождения.Но всё таки эти строки.В прерывании первый таймер.А второй? А пятый использовано два входа?
Второй без прерываний, он ведомый. Пятый имеет один вход захвата, к которому подключено внутри два канала. Еще один вход для ВЧ частоты. Входы НЧ и ВЧ будут иметь разные схемы усилителей формирователей.
Баксов 20 - как полноценный мини-одноплатник. Вот я и говорю, что во многих случаях можно использовать связку "одноплатник + дешевый МК", которая будет делать то же самое, но значительно меньшими усилиями со стороны разработчика. А еще у китайцев появились какие-то дешевые МК с высокими рабочими частотами, я себе на али взял девборду, но пока никаких средств разработки под них (равно как и документации на английском), увы, нет. Подожду - авось, появятся. Или будет, как и девборда на MSP430 пылиться в дальнем ящике.
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
Reflector, самое простое я сделал сразу со сбросом таймера в колбеке и получил ошибку в 250 тактов, после сделал сброс по железу через внутренние связи таймеров и ошибка стала 2такта, которые легко компенсировать программно и таких моментов много.
самое простое я сделал сразу со сбросом таймера в колбеке и получил ошибку в 250 тактов
У таймера есть режим OnePulse, TIM1 досчитал один раз и остановился, можно спокойно считывать TIM2->CNT в прерывании, сбрасывать его и запускать TIM1 опять.
Частотомер штука точная и требует особого подхода.
А от чего ваша "штука" будет тактироваться? От кварцевого резонатора 8МГц? Вы да же не знаете точную частоту вашего кварца. Температура в помещении может меняться в широких пределах. Попробуйте погреть свой кварц градусов так до 50 и посмотреть на точность своего частотомера.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения