Ошибка компиляции

Тема в разделе "Arduino & Shields", создана пользователем Spell, 22 янв 2017.

  1. Spell

    Spell Нерд

    Добрый день.
    Помогите разобраться с ошибкой.
    Пытаюсь ардуину впихнуть BT-модуль через библиотеку SoftwareSerial и PCF8574.
    При компиляции вылезает вот такая ошибка:

    PCF8574\PCF8574.cpp.o: In function `__vector_3':
    C:\Users\Наталья\Documents\Arduino\libraries\PCF8574/PCint.h:104: multiple definition of `__vector_3'
    SoftwareSerial\SoftwareSerial.cpp.o:C:\arduino-1.6.4\hardware\arduino\avr\libraries\SoftwareSerial/SoftwareSerial.cpp:227: first defined here
    PCF8574\PCF8574.cpp.o: In function `PCint':
    C:\Users\Наталья\Documents\Arduino\libraries\PCF8574/PCint.h:73: multiple definition of `__vector_4'
    SoftwareSerial\SoftwareSerial.cpp.o:C:\arduino-1.6.4\hardware\arduino\avr\libraries\SoftwareSerial/SoftwareSerial.cpp:392: first defined here
    PCF8574\PCF8574.cpp.o: In function `PCint':
    C:\Users\Наталья\Documents\Arduino\libraries\PCF8574/PCint.h:73: multiple definition of `__vector_5'
    SoftwareSerial\SoftwareSerial.cpp.o:C:\arduino-1.6.4\hardware\arduino\avr\libraries\SoftwareSerial/SoftwareSerial.cpp:392: first defined here
    collect2.exe: error: ld returned 1 exit status

    Вроде как ругается на многоразовое определение функций (multiple definition of `__vector_3')
    Я полазил по этим файлам, там таких функций нет.

    Я сильно не спец в Сях. Подскажите, плз, что с этим делать?

    Вот код определения бибилотек:
    Код (C++):
    #include <CyberLib.h>

    #define BT_ON
    #ifdef BT_ON
      #include <SoftwareSerial.h>
      SoftwareSerial mySerial(9,10); // RX, TX
      char lstCommand = ' ';
    #endif

    #include <Wire.h>    // Required for I2C communication
    #include "PCF8574.h" // Required for PCF8574

    /** PCF8574 instance */
    PCF8574 expander;
     
     
  2. AlexU

    AlexU Гуру

    Речь идёт о векторах прерываний 'PCINTn_vect'. Обе библиотеки декларируют обработчики для одних и тех же прерываний.
    Устранять конфликты путём правки библиотек.
     
    Alex19 нравится это.
  3. Spell

    Spell Нерд

    Спасибо за подсказку.
    Не понял как править эти самые векторы. Однако, в библиотеке PCF8574 нашел строку, которая блокирует прерывания вообще. В данном случае они мне не нужны, так что вполне можно отключить.
     
  4. AlexU

    AlexU Гуру

    Лично Вам-то прерывания может и не нужны, а вот библиотеки без них работать не будут.
    Так понимаю, что PCF8574 можно подключить через интерфейс I2C -- http://playground.arduino.cc/Main/PCF8574Class. Там по ссылке приведён пример работы с PCF8574 без использования прерываний.
    Просто боюсь, Вы не сможете разрулить этот конфликт с прерываниями.