Skocz do zawartości

Arduino Nano - rejestry (biblioteki Tone i IRremote)


Pomocna odpowiedź

Napisano

Witam,

Mam arduino nano i używam biblioteki IRremote.h do sterowania pilotem .

Dodałem także buzzer  z funkcją tone, i zaczyna się problem w postaci komunikatu.

Tone.cpp.o (symbol from plugin): In function `timer0_pin_port':

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

libraries\IRremote-2.2.3\IRremote.cpp.o (symbol from plugin):(.text+0x0): first defined here

collect2.exe: error: ld returned 1 exit status

Czy ktoś możne doraźnie mnie wesprzeć?

Z komunikatu wynika ze jest konflikt i trzeba zmodyfikować pliki ale  co na co zmienić to dla mnie czarna magia.

Mogę przesłać pliki (Tone.cpp i IRremote.cpp.)  jak będzie taka potrzeba.

(edytowany)

Problem polega na tym, że obie biblioteki używają tego samego timera. Właściwie w takim przypadku musiałbyś albo napisać jedną z tych bibliotek od nowa, aby używała innego timera, albo poszukać takiej gotowej. Ewentualnie możesz sterować buzzerem sofrware-owo, bez przerwania, bo przecież to nie jest jakaś wielka częstotliwość.

Edytowano przez deshipu
  • Lubię! 1

Nie wiem jakie tam melodyjki potrzebujesz wygrywać na tym sprzęcie, ale jeśli rzecz sprowadza się do paru pipnięć lub choćby tylko dźwiękowego potwierdzenia jakiegoś zdarzenia to generacja prostych tonów na timerze jest do ogarnięcia w kilka minut. Napisz dokładnie co chcesz zrobić. Jeśli nie używasz jeszcze innych bibliotek o których tu nie wspomniałaś, to po zajęciu timera 1 przez komunikację IR zostaje jeszcze wolny (w sensie nieużywany) timer 2. On też może sprzętowo generować sygnał prostokątny na pinie więc kilka zapisów do rejestrów i masz dźwięk. A swoją drogą gdy czujesz wstręt do programowania żywcem na rejestrach sprzętu, to nie wyobrażam sobie by nie istniała jakaś biblioteka do piszczenia tym timerem. A są też metody beztimerowe:

https://forum.arduino.cc/index.php?topic=235774.0

które jednak (z tego co się domyślam) zajmują 100% procesora na cały czas trwania dźwięku, ale w przypadku krótkiego, np. 100ms bipnięcia potwierdzającego wciśnięcie przycisku to może nie być problem.

  • Lubię! 1

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...