Проблема с совместимостью кода чтения PWM сигналов через прерывания с Arduino Due

Yuriy-Shved

✩✩✩✩✩✩✩
24 Мар 2024
10
0
Здравствуйте.
В Ардуино имеется встроенная функция чтения длительности PWM импульсов
pulsIn(PIN,HIGH). Однако pulsIn() блокирует код в цикле loop(), на время ожидания начала и завершения импульса, тратя драгоценное время обработки. Если входных данных больше одного, они также могут быть потеряны. Предложено несколько алгоритмов решения этой проблемы с использованием прерываний. Например Read PWM, Decode RC Receiver Input, and Apply Fail-Safe | Arduino Project Hub, Arduino-PWM-Reader/PWM.hpp at master · xkam1x/Arduino-PWM-Reader · GitHub.
Но все эти алгоритмы написаны для архитектуры AVR, и оказались несовместимы с Arduino Due на ARM архитектуре.
Ошибка выглядит как функция was not declared in this scope. Этот же код, при переключении IDE на плату Uno, ошибок не показывает.
Помогите пожалуйста разобраться - как модифицировать код работы с прерываниями, чтобы надежно и быстро считывать длительность импульсов PWM с помощью Arduino Due?
 

VAF

✩✩✩✩✩✩✩
15 Июл 2023
49
1
Москва
Если длительности не очень короткие, то можно прямо: пропустить высокий, пропустить низкий, включить счетчик и дождаться конца высокого