ARDUINO Как решить ошибку компиляции и объединить две библиотеки NecDecoder.h EasyHID.h

Murat8877

✩✩✩✩✩✩✩
18 Мар 2022
2
0
C++:
#include <NecDecoder.h>
#include <EasyHID.h>

NecDecoder ir;


void setup() {
  attachInterrupt(1, irIsr, FALLING);
  HID.begin();
}


void irIsr() {
  ir.tick();
}



void loop() {
    HID.tick();
}

Arduino: 1.8.19 (Windows 10), Плата:"Arduino Nano, ATmega328P (Old Bootloader)"

C:\Users\User\Documents\Arduino\libraries\EasyHID-main\HIDPrivate.c: In function 'usbFunctionSetup':

C:\Users\User\Documents\Arduino\libraries\EasyHID-main\HIDPrivate.c:139:19: warning: assignment makes integer from pointer without a cast [-Wint-conversion]

usbMsgPtr = &idle_rate; // send data starting from this byte

^

C:\Users\User\Documents\Arduino\libraries\EasyHID-main\HIDPrivate.c:145:19: warning: assignment makes integer from pointer without a cast [-Wint-conversion]

usbMsgPtr = &protocol_version; // send data starting from this byte

^

C:\Users\User\Documents\Arduino\libraries\EasyHID-main\HIDPrivate.c:151:19: warning: assignment makes integer from pointer without a cast [-Wint-conversion]

usbMsgPtr = (uint8_t*)&report_buffer; // send the report data

^

WInterrupts.c.o (symbol from plugin): In function `attachInterrupt':

(.text+0x0): multiple definition of `__vector_1'

libraries\EasyHID-main\usbdrvasm_includer.S.o:C:\Users\Murat\Documents\Arduino\libraries\EasyHID-main\usbdrv/usbdrvasm16.inc:35: first defined here

C:\Users\User\AppData\Local\Temp\ccBy1LGa.ltrans0.ltrans.o: In function `__vector_1':

C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WInterrupts.c:372: multiple definition of `__vector_1'

libraries\EasyHID-main\usbdrvasm_includer.S.o:C:\Users\Murat\Documents\Arduino\libraries\EasyHID-main\usbdrv/usbdrvasm16.inc:35: first defined here

collect2.exe: error: ld returned 1 exit status

exit status 1

Ошибка компиляции для платы Arduino Nano.

p.s я новичок
 
Изменено:

bort707

★★★★★★✩
21 Сен 2020
2,864
850
а если так:
C++:
attachInterrupt(2, irIsr, FALLING);
есть ошибка?
 

Murat8877

✩✩✩✩✩✩✩
18 Мар 2022
2
0
@bort707,

C++:
#include <NecDecoder.h>
#include <EasyHID.h>


NecDecoder ir;


void setup() {
  attachInterrupt(2, irIsr, FALLING);
  HID.begin();
}


void irIsr() {
  ir.tick();
}


void loop() {
    HID.tick();
}


Arduino: 1.8.19 (Windows 10), Плата:"Arduino Nano, ATmega328P (Old Bootloader)"

WInterrupts.c.o (symbol from plugin): In function `attachInterrupt':

(.text+0x0): multiple definition of `__vector_1'

libraries\EasyHID-main\usbdrvasm_includer.S.o:C:\Users\Murat\Documents\Arduino\libraries\EasyHID-main\usbdrv/usbdrvasm16.inc:35: first defined here

C:\Users\user\AppData\Local\Temp\ccwTTH4H.ltrans0.ltrans.o: In function `__vector_1':

C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WInterrupts.c:372: multiple definition of `__vector_1'

libraries\EasyHID-main\usbdrvasm_includer.S.o:C:\Users\user\Documents\Arduino\libraries\EasyHID-main\usbdrv/usbdrvasm16.inc:35: first defined here

collect2.exe: error: ld returned 1 exit status

exit status 1

Ошибка компиляции для платы Arduino Nano.
 
Изменено:

Sergo_ST

★★★★★★✩
15 Мар 2020
798
731
Крайне странное поведение attachInterrupt, такое чувство как будто она определяет сразу оба вектора прерывания...

Придется напрямую:
C++:
#include <NecDecoder.h>
#include <EasyHID.h>
 
NecDecoder ir;
 
void setup() {
  HID.begin();
 
  EICRA &= ~(0x01 << ISC10);
  EICRA |= (0x01 << ISC11); //настраиваем внешнее прерывание по спаду импульса на INT1
  EIMSK |= (0x01 << INT1); //разрешаем внешнее прерывание INT1
}

ISR(INT1_vect) { //внешнее прерывание на пине INT1
  ir.tick();
}
 
void irIsr() {
  ir.tick();
}
 
void loop() {
  HID.tick();
}
 
  • Лойс +1
Реакции: Murat8877

poty

★★★★★★✩
19 Фев 2020
2,958
886
@Murat8877, номера векторов и номера пинов не совпадают. Используйте digitalPinToInterrupt(pin)