Problema con Tlc5940 ed arduino mega 2560 su pin 10.

Salve, ho qualche problema con la libreria del tlc5940.
Esattamente, utilizzando il tlc5940 sull'arduino mega 2560, quando uso la funzione analogWrite col pin 10, si comporta come un pin digitale, che funziona a 0 con 0 e a 255 con qualsiasi valore diverso da 0.
Come posso intervenire?
:wink:

Ciao,

attenzione che con l'Arduino 2560 (o Mega) la porta SPI non utilizza gli stessi pin che l'Arduino UNO.

Dalla libreria del TLC5940 i collegamenti hardware per il 250 o Mega:

http://code.google.com/p/tlc5940arduino/wiki/ArduinoMegaHardwareSetup

Ciao,
Marco.

Attenzione: per pilotere il TLC5940 vengono usati 2 timer. Non é possibile spostare semplicemente i pin a piacimento.
Ciao Uwe

Come potete vedere nel link postato da Marco Benini, quasi a fondo pagina fra gli optional pin vi è :
XERR - for checking for thermal overloads or disconnected LEDs
Mega pin 10 → XERR (Tlc pin 16)

Visto che questo è un’optional, ho già fatto tutte le prove senza collegarlo, ma il mio problema non è il funzionamento del tlc5940 (che riesco a far funzionare alla perfezione e con i collegamenti sono apposto), ma bensì è che io dovrei sfruttare proprio l’ultima uscita pwm rimastami a disposizione il pin 10 per variare l’intensità del led,ma la libreria del tlc5940,non me lo permette,poichè su quel pin risulta lo XERR del tlc5940.
Mi permette solo di fare la funzione on off , senza modulazione di intensità.
Come posso fare a modificare l’impostazione del pin 10 oppure come posso fare a spostare lo XERR, oppure ancora,come posso fare a rimuovere la funzione XERR, visto che è optional?

Ciao,

sei sicuro che sia abilitata nella libreria (di norma non lo e')?
Guarda nel file tlc_config.h

/** Enables/disables XERR (TLC pin 16) functionality to check for shorted/broken
    LEDs
    - 0 XERR is not connected (default)
    - 1 XERR is connected
    \note XERR is active low */
#define XERR_ENABLED    0

Comunque se vedi nella cartella pinouts della libreria c'e' un file che si chiama Arduino_Mega.h, li' trovi definito il pin 10 come XERR.

/** XERR (Mega pin 10) -> XERR (TLC pin 16) */
#define DEFAULT_XERR_PIN    PB4
#define DEFAULT_XERR_PORT   PORTB
#define DEFAULT_XERR_DDR    DDRB
#define DEFAULT_XERR_PINS   PINB

Potresti cambiare il pin non ti crei problemi, se lo vuoi tenere abilitato.
Nella libreria viene, nel file Tlc5940.cpp, configurato come input se abilitato:

#if XERR_ENABLED
    XERR_DDR &= ~_BV(XERR_PIN);   // XERR as input
    XERR_PORT |= _BV(XERR_PIN);   // enable pull-up resistor

Ciao,
Marco.