Вызывает ли SoftwareSerial и сервобиблиотека конфликты прерываний?
Я планирую проект, который будет включать в себя несколько последовательных портов и сервобиблиотеку Arduino. Я слышал, что это может вызвать конфликты прерываний. Есть ли простые решения этой проблемы
@, 👍0
2 ответа
Я слышал, что это может вызвать конфликты прерываний.
Действительно. Arduino может одновременно запускать только одну процедуру прерывания и:
- Сервоприводы используют быстрые прерывания
- SoftwareSerial отключает прерывания при отправке (на относительно длительные периоды времени)
- SoftwareSerial использует прерывание для приема, которое длится в течение длительного периода.
Так что на самом деле вы не можете использовать оба варианта вместе.
Варианты?
- Использовать аппаратный ШИМ для управления сервоприводами (где-то для этого есть библиотека)
- Используйте внешнюю плату управления ШИМ сервопривода (Adafruit делает одну IIRC)
- Не используйте SoftwareSerial. IIRC AltSoftSerial лучше, хотя никакая последовательная программная реализация никогда не будет особенно хорошей.
Основная проблема заключается в том, что младшие модели Arduino имеют только последовательный порт. Если вам нужно использовать более одного последовательного порта, вам действительно нужно рассмотреть возможность использования другого Arduino — с несколькими последовательными портами.
У меня была похожая проблема. Я смог решить ее с помощью библиотеки AltSoftSerial и библиотеки ServoTimer2... Надеюсь, это поможет, если вы все еще работаете над этим проектом/над другим проектом...
- Как остановить серводвигатель в текущем положении при использовании последовательного порта? Я хочу, чтобы он оставался в одном положении при получении «0».
- Беспроводное управление сервоприводом Dynamixel MX24T, MX64T с помощью Arduino Mega?
- О UART один передатчик несколько приемников
- Отправка данных о положении сервопривода с одного Arduino на другой
- Управлять 2 сервоприводами с последовательным считыванием
- Как разделить входящую строку?
- Как вывести несколько переменных в строке?
- В чем разница между Serial.write и Serial.print? И когда они используются?