Size: a a a

2020 January 08

A

ASSembler in STM32
LADA_BenLADA
Что вроде того . Саму частоту выводить не нужно но вот сравнивать значение входных импульсов с неким эталонным да .
Это можно сделать разными способами, можно завести на таймер, и результат сравнивать с эталонным таймером например
источник

L

LADA_BenLADA in STM32
ASSembler
Это можно сделать разными способами, можно завести на таймер, и результат сравнивать с эталонным таймером например
Фишка в том что эталонная частота берётся в первые 10 секунд работы (со входа датчика ) , а в последующем нужно её сравнивать (если она упала в два раза то реагируем неким действием на пине )
На сайте Std смотрел статью про частотамер на трёх таймерах , пытался разобраться но момент когда первый таймер должен "пнуть" второй ввел меня и компилятор в ступор .
По это решил использовать то что работает порт обработчика событий и таймер который переполняется раз в секунду.
источник

RV

Roma Volchuk in STM32
А можно изменить порты SPI? Так,как SPI должен взять PA5, а порт уже занят,есть ли вариант поменять на другой порт?
источник

L

LADA_BenLADA in STM32
А что  измениться если изменить порт ? Просто  сейчас обработчики весят на PВ3 и PВ4 (SPI1) и как я понимаю обработчики можно ставить на любой пин главное чтобы не совпадали номера (РА3 нельзя одновременно использовать с PB3 ) и так же если на них весят какие либо интерфейсы , но у меня кромя I2C1 нечего не используется.
источник
2020 January 09

s

stD in STM32
LADA_BenLADA
Фишка в том что эталонная частота берётся в первые 10 секунд работы (со входа датчика ) , а в последующем нужно её сравнивать (если она упала в два раза то реагируем неким действием на пине )
На сайте Std смотрел статью про частотамер на трёх таймерах , пытался разобраться но момент когда первый таймер должен "пнуть" второй ввел меня и компилятор в ступор .
По это решил использовать то что работает порт обработчика событий и таймер который переполняется раз в секунду.
Ничего не понятно, что куда подаётся и откуда берётся эталонная частота? У вас написано что частота берётся со входа некоего датчика - почему со входа, может с выхода?

Вы пишите что частоту выводить не нужно, тогда что нужно регулировать?

И зачем измерять частоту в течении 10 секунд, это бессмысленно если частота постоянная. Если частота плавает, то это ещё более бессмысленно. Если частота меньше Герца, тогда при чём тут 8 - 16 МГц.

Задайте вопрос развёрнуто.
источник

L

LADA_BenLADA in STM32
Хорошо. Скажу точно так как мне это сообщили .
Есть некий двигатель  и у него есть своебразный тахометр , точнее это просто датчик который выводит за один полный оборот шпинделя двигателя один прямоугольный импульс . Сам двигатель управляется через какой-то сложный диммер. Но иногда под неправильно выставленной  нагрузкой двигатель просаживаеться по оборотам и об этом нужно быстро сообщать и реагировать .
Задача если подумать проста взять начальную частоту работы с выхода датчика двигателя ( ну к примеру 10-20 после начала работы всей установки ) потом сравнивать каждую секунду начальное значение частоты вращение с текущей , и если текущие значение меньше начального  то сообщать об этом.
Для себя понял что лучше  считывать частоту с датчика  через пин на котором обработчик внешних прерываний (по спаду импульса ). Настроил проект . Вроде все работает (подключил с начало кнопку потом мультивибратор ). Начал подымать частоту на пине до пяти сотен герц не срабатывает , а мне нужно срабатывание до 13 тысяч Гц.
Отсюда вопрос как производить считывание через обработку внешних прерываний быстрее ?
В сети есть только подключение кнопки (просто через кулбек обрабатывается событие) про скорость считывание нечего сам не нашёл .
Значение частоты всего МК 72мГц .
источник

s

stD in STM32
Минут через 15 отвечу.
источник

s

stD in STM32
В каких диапазонах вращается двигатель, то есть в каких диапазонах должен вращаться двигатель - мин. - мах. обороты?
источник

L

LADA_BenLADA in STM32
12000 до 15000
источник

AB

Alexey Boyarchenkov in STM32
Это не в секунду, а в минуту?
источник

L

LADA_BenLADA in STM32
Да в минуту
источник

AB

Alexey Boyarchenkov in STM32
Это 200-250 Гц всего. Но через прерывания все равно неправильно, нужно через таймер
источник

L

LADA_BenLADA in STM32
Alexey Boyarchenkov
Это 200-250 Гц всего. Но через прерывания все равно неправильно, нужно через таймер
Первоначально так и думал. Настроил 1 таймер на переполнение раз в секунду для отсчёта времени , а Tim 2 для внешней частоты.
За основу брал вот это статью https://istarik.ru/blog/stm32/124.html
источник

AB

Alexey Boyarchenkov in STM32
Правильно. И в обработчике прерывания от таймера 1 раз в секунду считываем счётный регистр таймера 2 в переменную, сбрасываем таймер2 и обрабатываем значение из переменной
источник

L

LADA_BenLADA in STM32
источник

s

stD in STM32
Да зачем всё это городить с таймерами. У Вас прерывание происходит один раз в 4мс (15000 оборотов), за это время микроконтроллер успеет напиться, сходить подраться, и протрезветь.
источник

s

stD in STM32
Таймер запустили на прерывание раз в секунду, а в обработчике внешнего прерывания приращиваете переменную. В обработчики таймера смотрите сколько в переменной, делаете тривиальное вычисления и получаете обороты. После этого обнуляете переменну.
источник

s

stD in STM32
Элементарная же задача.
источник

s

stD in STM32
Остаётся вопрос с дребезгом - как вы его решаете?
источник

L

LADA_BenLADA in STM32
stD
Остаётся вопрос с дребезгом - как вы его решаете?
В обработчике события сравниваю с переменой которое берет значение через GetTik
источник