Open GusakIurii opened 5 years ago
Добрый день. Прошу прощения за долгий ответ, весна получилась сильно замороченая.
Код для инициализации таймеров для ARV я брал из стандартной библиотеки Arduino для управления сервомашинками Servo.h https://github.com/arduino/Arduino/blob/ide-1.5.x/libraries/Servo/src/avr/ServoTimers.h https://github.com/arduino/Arduino/blob/ide-1.5.x/libraries/Servo/src/avr/Servo.cpp
Проверял на ардуинах, которые были под рукой (Uno и Leonardo, кажется). Для остальных чипов не проверял - эта часть кода в основном попала в библиотеку как есть.
В общем, если на вашем чипе есть таймеры, для которых не объявлена константа в библиотеке, вы можете попробовать их добавить в код, все необходимое для платформы AVR должно находиться в этом файле: https://github.com/sadr0b0t/arduino-timer-api/blob/master/src/avr/timer_setup.c
Скорее всего придется почитать даташит на ваш чип. И бы еще посмотрел последнюю версию Servo.cpp из Arduino, возможно, они уже исправили код для вашего чипа и добавили недостающие таймеры.
Судя документации ATMega328p имеет 2 шт. - 8 битных таймера, 1шт.- 16 битный таймер. – Two 8-bit Timer/Counters with Separate Prescaler and Compare Mode – One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture Mode
Подскажите пожалуйста Ваша библиотека рассчитана только на 16 битные таймеры? Пробую объявить 2 переменные таймеров: int _timer1 = _TIMER1; int _timer2 = _TIMER2; компилятор ругается на int _timer2 = _TIMER2;
Подскажите пожалуйста возможно ли на ATMega328p процессоре, с вашей библиотекой использовать три таймера? Для моей задачи достаточно и двух, но может кому то нужно три штуки...