Servo.h и таймеры

Нет ответов
Famouspilot
Famouspilot аватар
Offline
Зарегистрирован: 19.01.2016

Доброго времени суток.

Порылся в файле "Servo.h", из него ясно, что для управления сорока восемью (48) сервоприводами (для контроллера ATMega2560) библиотека <Servo.h> используются четыре 16bit таймера, при этом для управления двадцатью четырьмя (24) - всего два:

Timers are seized as needed in groups of 12 servos - 24 servos use two 
  timers, 48 servos will use four.

Как я понимаю, для управления каждой добавляемой группы из двенадцати сервоприводов выделяется один таймер в следующей очередности (из файла ServoTimers.h):

// Say which 16 bit timers can be used and in what order
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
#define _useTimer5
#define _useTimer1
#define _useTimer3
#define _useTimer4
typedef enum { _timer5, _timer1, _timer3, _timer4, _Nbr_16timers } timer16_Sequence_t;

Прошу поправить, если я ошибаюсь.

Проблема в том, что нужно использовать один таймер для отсчета и прерываний и еще как минимум один только для прерываний. В моем проекте будет использовано минимум 11 сервоприводов, возможно и больше.

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