Помогите, советом с внешними прерывания ми.

Evganiy
Offline
Зарегистрирован: 26.05.2020

Всем привет.
Задача в следующем: прочитать pwm сигнал с приёмника пульта радиоуправления (turnigy).
Подключил канал приемника на ногу stm32 и с помощью внешних прерываний считаю длительность импульсов.
При нормальной работе длительность импульсов должна быть от 1000 микросекунд до 2000. В основном они так и идут, но периодически проскальзывают неправильные импульсы. Конкретный пример. При нахождении джойстика в среднем положении, длительность импульсов около 1500 микросекунд. Но периодически проскальзывают импульсы 2500 или 500, т. е с разницей 1000 мкс. Если передатчик выключить, то ложные импульсы тоже пропадают (приёмник все так же подключён). Пробовал разные ноги stm32 - один фиг.
А теперь самое интересное! Тот же самый код на ардуино нано или мега работает идеально! Никаких ложных импульсов!
Может кто сталкивался с этим? Или попробует сделать такой эксперимент? Я заплачу 1000 р, кто сможет помочь

b707
Offline
Зарегистрирован: 26.05.2017

Evganiy пишет:
Тот же самый код на ардуино нано или мега работает идеально!

код-то где?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

b707 пишет:

код-то где?

В нане и меге, написал же ТС!

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Evganiy пишет:
Всем привет. Задача в следующем: прочитать pwm сигнал с приёмника пульта радиоуправления (turnigy). Подключил канал приемника на ногу stm32 и с помощью внешних прерываний считаю длительность импульсов. При нормальной работе длительность импульсов должна быть от 1000 микросекунд до 2000. В основном они так и идут, но периодически проскальзывают неправильные импульсы. Конкретный пример. При нахождении джойстика в среднем положении, длительность импульсов около 1500 микросекунд. Но периодически проскальзывают импульсы 2500 или 500, т. е с разницей 1000 мкс. Если передатчик выключить, то ложные импульсы тоже пропадают (приёмник все так же подключён). Пробовал разные ноги stm32 - один фиг. А теперь самое интересное! Тот же самый код на ардуино нано или мега работает идеально! Никаких ложных импульсов! Может кто сталкивался с этим? Или попробует сделать такой эксперимент? Я заплачу 1000 р, кто сможет помочь

Не - у Вас не получится. 1500 микросекунд, а там еще 1000 микросекунд. Кто-ж такое посчитает? Только полное прерывание с программированием и уход на коммерческий подход.

Izvekoff
Offline
Зарегистрирован: 02.03.2020

Видимо лживый STM-32 попался )))

Evganiy
Offline
Зарегистрирован: 26.05.2020

Не знаю в чем причина. Пришлось решить проблему программным фильтром.

Evganiy
Offline
Зарегистрирован: 26.05.2020

На разных stm32 проверял - везде одинаковое поведение

b707
Offline
Зарегистрирован: 26.05.2017

Evganiy пишет:
На разных stm32 проверял - везде одинаковое поведение

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

Evganiy
Offline
Зарегистрирован: 26.05.2020

Всем спасибо, фильтр отлично справляется тему можно закрыть.

b707
Offline
Зарегистрирован: 26.05.2017

Evganiy пишет:
Всем спасибо, фильтр отлично справляется тему можно закрыть.

неужели не интересно разобраться в причинах, почему код не работает? Потом понадобится прерывание в другом коде - опять столкнетесь с той же проблемой