Bedeutung von Fehlermeldung beim Verifizieren

Hallo Leute,
ich habe ein Projekt bei dem ein TLC5940 (PWM-Controller) und ein ClickEncoder (für Navigation durch lcd Menü) zum Einsatz kommen.
Ich verwende für beide Bauteile Bibliotheken:
ClickEncoder.h
TimerOne.h, wird für ClickEncoder.h benötigt
TLC5940.h

Einzeln funktionieren beide Bauteile, als ich die Programme zusammenführen wollte bekam ich folgende Fehlermeldung:

Versteh ich das richtig das TimerOne.h und TLC5940.h beide eine Variable Namens "__vector_13" besitzen?

Falls ja, kann ich einfach in der Lib den Variablennamen ändern?

Gruß
Steffen

Mach eine Kopie vorher und probiere es einfach aus.

Ich habe ein kostenloses Programm gefunden, ich glaube Filelocater lite oder so, mit dem kann man in allen Dateien eines Verzeichnises Text suchen und austauschen lassen. Somit übersiehst du nix.

Die Bibliothek TLC5940 arbeitet mit Timern.
Wenn beide Bibliotheken den gleichen Timer verwenden dann kannst Du nicht einfach einen Variablennamen ändern und glauben das geht dann.
Schau Dir mal die genau beiden Bibliotheken an.
Grüße Uwe

Ok, timer1 wird zweimal benutzt.
tlc - timer1, timer2
TimerOne -timer1

Kann ich die Timer von Tlc zu 2 und 3 machen?

Ich hab hier mal die Timeraufrufe aus der TLC5940.cpp:

ISR(TIMER1_OVF_vect)
{
    disable_XLAT_pulses();
    clear_XLAT_interrupt();
    tlc_needXLAT = 0;
    if (tlc_onUpdateFinished) {
        sei();
        tlc_onUpdateFinished();
    }
}

/* Timer Setup */

    /* Timer 1 - BLANK / XLAT */
    TCCR1A = _BV(COM1B1);  // non inverting, output on OC1B, BLANK
    TCCR1B = _BV(WGM13);   // Phase/freq correct PWM, ICR1 top
    OCR1A = 1;             // duty factor on OC1A, XLAT is inside BLANK
    OCR1B = 2;             // duty factor on BLANK (larger than OCR1A (XLAT))
    ICR1 = TLC_PWM_PERIOD; // see tlc_config.h

    /* Timer 2 - GSCLK */
#ifdef TLC_ATMEGA_8_H
    TCCR2  = _BV(COM20)       // set on BOTTOM, clear on OCR2A (non-inverting),
           | _BV(WGM21);      // output on OC2B, CTC mode with OCR2 top
    OCR2   = TLC_GSCLK_PERIOD / 2; // see tlc_config.h
    TCCR2 |= _BV(CS20);       // no prescale, (start pwm output)
#else
    TCCR2A = _BV(COM2B1)      // set on BOTTOM, clear on OCR2A (non-inverting),
                              // output on OC2B
           | _BV(WGM21)       // Fast pwm with OCR2A top
           | _BV(WGM20);      // Fast pwm with OCR2A top
    TCCR2B = _BV(WGM22);      // Fast pwm with OCR2A top
    OCR2B = 0;                // duty factor (as short a pulse as possible)
    OCR2A = TLC_GSCLK_PERIOD; // see tlc_config.h
    TCCR2B |= _BV(CS20);      // no prescale, (start pwm output)
#endif
    TCCR1B |= _BV(CS10);      // no prescale, (start pwm output)
    update();

und die Aufrufe aus der TLC5940.h:

/** Enables the Timer1 Overflow interrupt, which will fire after an XLAT
    pulse */
#define set_XLAT_interrupt()    TIFR |= _BV(TOV1); TIMSK = _BV(TOIE1)
/** Disables any Timer1 interrupts */
#define clear_XLAT_interrupt()  TIMSK = 0

#else

/** Enables the Timer1 Overflow interrupt, which will fire after an XLAT
    pulse */
#define set_XLAT_interrupt()    TIFR1 |= _BV(TOV1); TIMSK1 = _BV(TOIE1)
/** Disables any Timer1 interrupts */
#define clear_XLAT_interrupt()  TIMSK1 = 0

#endif

/** Enables the output of XLAT pulses */
#define enable_XLAT_pulses()    TCCR1A = _BV(COM1A1) | _BV(COM1B1)
/** Disables the output of XLAT pulses */
#define disable_XLAT_pulses()   TCCR1A = _BV(COM1B1)

Ich hab es schon probiert, leider aber immer irgedwas übersehen umzuschreiben.
Habe mich aber auch noch nie mit Timern beschäftigt.

Weis jemand was ich ändern muss?

Gruß Steffen

Timer3 gibt es nur auf dem Mega

Und wenn dann ist es wesentlich vernünftiger die Encoder Library anzupassen

ich muss eine isr des Encoders 1mal pro ms ausführen, gibts da ne Methode ohne Interrupt's?

millis() tut es dafür eventuell wenn loop() schnell genug durchläuft. Also keinen blockierenden Code schreiben. Siehe BlinkWithoutDelay Beispiel