В чем причина ошибок «timer0_pin_port» и «_vector_13»? - PullRequest
0 голосов
/ 26 ноября 2018
#include "IRremote.h"

int receiver = 11;

IRrecv irReceiver(receiver);
decode_results results;

void setup() {
  // put your setup code here, to run once:
pinMode(buttonPinA, INPUT_PULLUP);
pinMode(buttonPinB, INPUT_PULLUP);
pinMode(buttonPinC, INPUT_PULLUP);
pinMode(buttonPinD, INPUT_PULLUP);
irReceiver.enableIRIn();
}

Сообщение об ошибке:

Tone.cpp.o (символ из плагина): в функции `timer0_pin_port ':

(.text + 0x0): множественное определение `__vector_13 '

library \ IRremote \ IRremote.cpp.o (символ из плагина) :(. text + 0x0): сначала определено здесь

c: / программные файлы (x86) / arduino / hardware / tools / avr / bin /../ lib / gcc / avr / 4.9.2 /../../../../ avr/bin/ld.exe: отключение релаксации: он не будет работать с несколькими определениями

collect2.exe: ошибка: ld вернул 1 состояние выхода

состояние выхода 1 ошибкакомпиляция для плат Arduino / Genuino Mega или Mega 2560.

Я недавно обнаружил, что команды "tone" и "IRremote" используют timer2 от здесь .Я не знаю, что такое timer2 и как его изменить.

1 Ответ

0 голосов
/ 26 ноября 2018

Эта ошибка связана с ссылкой .Два фрагмента библиотечного кода оба объявили что-то с одинаковым именем (в данном случае это таймер).

Итак, компиляция прошла успешно, и теперь компоновщик берет скомпилированный вывод и упаковывает его в исполняемый файл.Каждый раз, когда вы видите сообщение об ошибке типа error: ld returned ..., знайте, что это проблема со связью, а не проблема синтаксиса.Все, что ld является компоновщиком («ld» - это имя программы компоновщика).

Как описано здесь:

https://forum.arduino.cc/index.php?topic=120955.msg2613823#msg2613823

Редактирование заголовочного файла IRRemote.h и измените, какое таймерное прерывание использует библиотека:

Измените выбор:

#define IR_USE_TIMER1   // tx = pin 9
// #define IR_USE_TIMER2     // tx = pin 3

например:

// #define IR_USE_TIMER1   // tx = pin 9
#define IR_USE_TIMER2     // tx = pin 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...