Skocz do zawartości

Arduino Nano - rejestry (biblioteki Tone i IRremote)


Pomocna odpowiedź

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.

Link to post
Share on other sites

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
Link to post
Share on other sites

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
Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.