Конфликт библиотек MsTimer2.h и ServoTimer2
- Войдите на сайт для отправки комментариев
Вс, 18/12/2016 - 21:35
Делаю
#include <MsTimer2.h>
#include <ServoTimer2.h>
Сразу скажу, что с библиотекой Servo.h все работает, но в указанной связке в компиляции вылезает ошибка (хочется разобраться):
Arduino: 1.6.13 (Windows 7), Плата:"Arduino Nano, ATmega328"
libraries\ServoTimer2\ServoTimer2.cpp.o (symbol from plugin): In function `__vector_9':
(.text+0x0): multiple definition of `__vector_9'
libraries\MsTimer2\MsTimer2.cpp.o (symbol from plugin):(.text+0x0): first defined here
collect2.exe: error: ld returned 1 exit status
exit status 1
Ошибка компиляции для платы Arduino Nano.
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
Конечно конфликт. Нельзя использовать один и тот же аппаратный таймер для двух разных задач.
Обясню предысторию для чего нужно ServoTimer2.
В связке Servo.h и MsTimer2.h по прерыванию таймера 2 апускается рограмма, которая опрашивает аналоговый вход Adruino Nano, к которому подключен ИК-датчик растояния. Так вот, когда серва стоит в 90 градусах, то во время запуска программы-то таймеру (каждые 500мс) серва начинает дергаться туда-сюда на пару миллиметров. В крайних положеий дергания нет.
Если опрашиваю цифровой вход, к которому подключен датчик препятствия, то не дергается. Но так ведь хочется мерять расстояние по ИК-датчику. Можно попробовать с другой "Нанкой", может у нее внутри наводки какие бродят.
Обясню предысторию для чего нужно ServoTimer2.
В связке Servo.h и MsTimer2.h по прерыванию таймера 2 апускается рограмма, которая опрашивает аналоговый вход Adruino Nano, к которому подключен ИК-датчик растояния. Так вот, когда серва стоит в 90 градусах, то во время запуска программы-то таймеру (каждые 500мс) серва начинает дергаться туда-сюда на пару миллиметров. В крайних положеий дергания нет.
Если опрашиваю цифровой вход, к которому подключен датчик препятствия, то не дергается. Но так ведь хочется мерять расстояние по ИК-датчику. Можно попробовать с другой "Нанкой", может у нее внутри наводки какие бродят.
ты долбоёб или кто? - сказано: нельзя.
ты долбоёб или кто? - сказано: нельзя.
Другая нано такой же результат. Вопрос - почему рергается серво в среднем положении при использовании Библиотек Servo.h и MsTimer2
В связке Servo.h и MsTimer2.h по прерыванию таймера 2 запускается рограмма, которая опрашивает аналоговый входA7 Adruino Nano, к которому подключен ИК-датчик растояния. Так вот, когда серва стоит в 90 градусах, то во время запуска программы-то таймеру (каждые 500мс) серва начинает дергаться туда-сюда на миллиметр. В крайних положеиях сервы (0 и 180 градусов) дергания нет.
Добавка delay(1) в программу вызова по таймеру решило проблему.