logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

RF + Servo - Sterowanie radiowo serwem - konflikt bibliotek?

sliwa200 25 Sty 2017 00:26 1008 6
REKLAMA
  • #1 16225953
    sliwa200
    Poziom 2  
    Posty: 3
    Witam,
    programuję odbiornik (Pro mini) sygnału przez RF (XY-MK-5V, 433MH), który ma sterować pracą serwa.
    Wykorzystywane są biblioteki

    #include <Servo.h>
    #include <VirtualWire.h>
    #include <Wire.h>


    niestety przy kompilacji wyskakuje cała seria błędów:

    libraries\VirtualWire\VirtualWire.cpp.o: In function `__vector_11':
    C:\Users\...\Documents\Arduino\libraries\VirtualWire/VirtualWire.cpp:571: multiple definition of `__vector_11'
    libraries\Servo\avr\Servo.cpp.o:C:\Program Files (x86)\Arduino\libraries\Servo\src\avr/Servo.cpp:81: first defined here
    collect2.exe: error: ld returned 1 exit status
    
    exit status 1
    Błąd kompilacji.
    

    Z tego co poczytałem, być może jest to efekt używania tego samego timera 16bit przez obie biblioteki.

    Ale być może to inny problem...
    Prosiłbym Was o pomoc i sugestie, co mogłoby ten problem rozwiązać

    Niestety nie jestem zbyt zaawansowany w te klocki...
  • REKLAMA
  • #2 16225965
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #3 16226725
    sliwa200
    Poziom 2  
    Posty: 3
    Podstawy znam, pytanie tylko gdzie szukać rozwiązania?

    Modyfikowanie bibliotek? Jak/w którym miejscu? Zmiana bibliotek? Zmiana sprzętu?

    Masz sugestie jak można spróbować problem rozwiązać to proszę - podziel się ;)
  • #4 16226737
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #5 16226772
    dondu
    VIP Zasłużony dla elektroda
    Posty: 13906
    Pomógł: 1292
    Ocena: 809
    Problem polega na tym, że w obu bibliotekach masz zdefiniowaną funkcję przerwania o wektorze __vector_11 co prawdopodobnie dotyczy przerwania Capter timera1. Jest to podane w tekście błędu, który pokazałeś.
  • #6 16226952
    sliwa200
    Poziom 2  
    Posty: 3
    Diagnozę mniej więcej znam, bo większość jest w komunikacie błędu, a doczytałem że problem tyczy timera1.

    Ale czy da się w miarę prosto zmienić by działało (i jeśli tak to gdzie?) czy to jednak może być poważniejsza robota przy zmianie kodu bibliotek?

    Podobno jednym z rozwiązań może być dokupienie sterownika serw PWM Shield, bowiem wykorzystuje inną komunikację - ale to bym wolał wykorzystać ostatecznie.
  • REKLAMA
  • #7 16226961
    dondu
    VIP Zasłużony dla elektroda
    Posty: 13906
    Pomógł: 1292
    Ocena: 809
    Przeanalizuj obie biblioteki pod kątem tego jak używają timera i przerwania, i być może wymyślisz sposób jak to pogodzić i utworzyć jedno wspólne przerwanie.

    Swoją drogą dotarłeś do granic Arduino i może nadszedł czas by porzucić ten kierunek i wykorzystywać mikrokontroler bez gotowych bibliotek:
    http://mikrokontrolery.blogspot.com/p/spis-tresci.html

Podsumowanie tematu

✨ Użytkownik programuje odbiornik RF (XY-MK-5V, 433MHz) na platformie Pro Mini, aby sterować serwem, jednak napotyka błędy kompilacji związane z konfliktami w bibliotekach Servo i VirtualWire, które obie definiują funkcję przerwania __vector_11, co sugeruje użycie tego samego timera 16-bitowego. Użytkownik poszukuje rozwiązań, takich jak modyfikacja bibliotek lub zmiana sprzętu. Odpowiedzi sugerują analizę kodu bibliotek w celu pogodzenia użycia timerów oraz rozważenie zakupu PWM Shield jako alternatywy.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA