Hallo Leute,
ich bin gerade dabei für eine Robotersteuerung einen Timer in meinen Scetch zu Integrieren.
Als Vorlage habe ich die Anleitung von Heise unter: https://www.heise.de/developer/artik...s-3273309.html verwendet.
Da Timer 1 der im Heise Beispiel scheinbar von der Servo Library benötigt wird, verwende ich Timer 3.
Die Version mit dem Überlauf eines Timer-Registers funktioniert einwandfrei.
Hier der Code:
void setup()
{
....
noInterrupts();
// Gem Heise:
TCCR3A = 0;
TCCR3B = 0;
TCNT3 = 34286;
TCCR3B |= (1 << CS12) | (1 << CS10);
TIMSK3 = (1 << TOIE3);
interrupts();
....
}
ISR(TIMER3_OVF_vect)
{
TCNT3 = 34286;
....
}
Verwende ich aber die CTC (Clear Timer on Compare Match) Methode,
Hier der Code:
void setup()
{
....
noInterrupts();
// Gem Heise:
TCCR3A = 0;
TCCR3B = 0;
TCNT3 = 0;
OCR3A = 32150;
TCCR3B |= (1 << CS12) | (1 << CS10);
TIMSK3 = (1 << OCIE3A);
interrupts(); // Alle Interrupts aktivieren
....
}
ISR(TIMER3_COMPA_vect)
{
....
}
.. bekomme ich die folgende Fehlermeldung:
Kompiliere ... Fertig!
Kompiliert um: 16:19:18
libraries\Servo\avr\Servo.cpp.o (symbol from plugin): In function `ServoCount':
(.text+0x0): multiple definition of `__vector_32'
sketch\Robot_2016_1_6.ino.cpp.o (symbol from plugin).text+0x0): first defined here
c:/program files (x86)/arduino/hardware/tools/avr/bin/../lib/gcc/avr/4.9.2/../../../../avr/bin/ld.exe: Disabling relaxation: it will not work with multiple definitions
collect2.exe: error: ld returned 1 exit status
Mehrere Bibliotheken wurden für "IRremote.h" gefunden
Benutzt: C:\Users\klaus\Documents\Arduino\libraries\IRremot e
Nicht benutzt: C:\Program Files (x86)\Arduino\libraries\RobotIRremote
exit status 1
Fehler beim Kompilieren für das Board Arduino/Genuino Mega or Mega 2560.
Kann mir jemand Erklären was da los ist?
Grüsse Klaus
Lesezeichen