Здравствуйте.
Необходимо надежно считывать длительность импульсов управления PWM от полетного контроллера, для чего используются порты PD2 и PD3 указанной платы.
Для считывания длительности импульсов используется библиотека https://github.com/xkam1x/Arduino-PWM-Reader.
Столкнулся с тем, что после перезаливки прошивки данные или не сразу синхронизируются с показаниями передатчика, или вообще передают неверные цифры, не реагируя на движения стиков пульта. Причем после первой заливки данные читались верно. При отключении полетного контроллера показание ложится на минимальную границу, так что аппаратно ничего не сжег. На порты сервомашинок полетного контроллера подается 4.9В.
Насколько я понимаю, функции работы с прерываниями для LGT8F328P идентичны стандартной Ардуино. Ошибок в коде не вижу. Кто-нибудь сталкивался с подобным? В чем может быть проблема?
Возможно проблема в том, что виртуальный COM порт Arduino IDE конфликтует с таким же INAV, когда я подключаю контроллеры к компьютеру для считывания показаний. То есть проблема возможно не в контроллере, а в передаче показаний. При подключении к компьютеру только платы Ардуино показания стали корректными.
Вопрос еще в том, насколько надежно считывать длительность импульсов по фронтам сигналов в условиях повышенных помех? Может быть надежнее читать длительность по сигналу LOW или HIGH? Но это снижает универсальность кода, не все контроллеры их поддерживают..
Необходимо надежно считывать длительность импульсов управления PWM от полетного контроллера, для чего используются порты PD2 и PD3 указанной платы.
Для считывания длительности импульсов используется библиотека https://github.com/xkam1x/Arduino-PWM-Reader.
Столкнулся с тем, что после перезаливки прошивки данные или не сразу синхронизируются с показаниями передатчика, или вообще передают неверные цифры, не реагируя на движения стиков пульта. Причем после первой заливки данные читались верно. При отключении полетного контроллера показание ложится на минимальную границу, так что аппаратно ничего не сжег. На порты сервомашинок полетного контроллера подается 4.9В.
Насколько я понимаю, функции работы с прерываниями для LGT8F328P идентичны стандартной Ардуино. Ошибок в коде не вижу. Кто-нибудь сталкивался с подобным? В чем может быть проблема?
Возможно проблема в том, что виртуальный COM порт Arduino IDE конфликтует с таким же INAV, когда я подключаю контроллеры к компьютеру для считывания показаний. То есть проблема возможно не в контроллере, а в передаче показаний. При подключении к компьютеру только платы Ардуино показания стали корректными.
Вопрос еще в том, насколько надежно считывать длительность импульсов по фронтам сигналов в условиях повышенных помех? Может быть надежнее читать длительность по сигналу LOW или HIGH? Но это снижает универсальность кода, не все контроллеры их поддерживают..
Вложения
-
776 байт Просмотры: 0
Изменено: