Таймерский конфликт с Ардуино Леонардо

97
11

Я создал Quadcopter на основе Arduino Leonardo и im, используя библиотеку Servo.h для управления выходом двигателя. Я сейчас устанавливаю дешевый комплект RF Link в качестве сообщения для первого беспроводного тестового полета, и я загрузил библиотеку VirtualWire. Он работает безупречно, но он использует тот же таймер, что и серво-библиотека.

Все библиотеки, которые я нашел, используют timer1, и мне кажется, что мои возможности изменить исходный код на использование другого таймера. Я также не уверен, что timer2 имеет достаточно высокое разрешение для обработки связи (таймер 1 - 16 бит, таймер2 - 8 бит).

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

Все предложения и советы приветствуются!

спросил(а) 2021-01-19T16:42:10+03:00 2 месяца, 3 недели назад
1
Решение
75

Я поменял приемник на Arduino UNO и использовал библиотеку ServoTimer2 http://forum.arduino.cc/index.php?topic=21975.0

Он не работает прямо из коробки, поэтому вам нужно изменить

extern "C" {
// AVR LibC Includes
#include <inttypes.h
#include <avr/interrupt.h>
#include <WConstants.h>
}

в

#include<Arduino.h>

Это не идеальное решение, но оно работает пока.

ответил(а) 2021-01-19T16:42:10+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема