Go Down

Topic: Modificare velocità hardware SPI (Read 602 times) previous topic - next topic

Luigi Chelli

Ciao ragazzi!
vi chiedo aiuto perchè vorrei riuscire a ridurre il clock della porta SPI hardware su di un arduino uno.
L'uso che ne farei è con la libreria per tlc5940, vorrei abbassare la velocità di comunicazione per avere meno disturbi sul segnale.
In teoria Alex Leone in questo post (http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1218174457/196#196) spiegherebbe di andarsi a vedere la pagina 170 del datasheet (http://www.atmel.com/dyn/resources/prod_documents/doc2545.pdf) ma proprio non riesco a capire!!!
vi prego, datemi una mano:)))
Grazie infinite.
Luigi.

uwefed

Quanto ne so io il TLC5940 non lo colleghi mica sulla porta SPI del ATmega, ma usi un protocollo tutto suo.
Ciao Uwe

Luigi Chelli

Intato uwe ti ringrazio come sempre del tuo interessamento :D

venendo al discorso......mmm..... non è proprio come dici tu, la libreria diciamo standard, usata da tutti (http://code.google.com/p/tlc5940arduino/) solo inizialmente utilizzava il bitbang dei valori (penso voglia dire il modulare direttamente gli output pin dell'arduino).
Ben presto proprio alex leone, lo sviluppatore, modificò la libreria per utilizzare l'hardware spi, ottenendo prestazioni piu elevate.


Nel mio caso ho montato i tlc separati tra loro di circa 1.5m e devo riuscire a farne comunicare 8 senza errori...
I segnali da portare sono 5 piu l'alimentazione, e la banda è nell'ordine dei 15 MHz mi pare.
Io sto facendo diverse prove e ho trovato che:
1) con un cavo semplice a 7 poli (5 segnale + 2 alimentazione) non schermato arrivo a connettere fino a 5 tlc.
2) un cavo a 7 poli intrecciati con schermatura unica intorno mi crea diversi disturbi, connetto solo 2 tlc.
3) un cavo a 7 poli intrecciati e schermati signolarmente mi crea ancora piu disturbi, neanche un tlc funziona.

Visto che sono un ignorante di teoria di segnali e scelta di cavi ho pensato di ridurre semplicemente la velocità ...

Nel link del post precedente lo sviluppatore della libreria  spiega (da quanto ho capito) che c'è un modo di dimezzare la velocità di trasmissione, cioè commentando la riga 327 del file Tlc5940.cpp :
"SPSR = _BV(SPI2X); // double speed (f_osc / 2)"

poi aggiunge che è possiile ridurre ancora la velocità andando ad agire sulla frequenza dello SPI dell'arduino.... ed è qui che mi sono bloccato!

purtroppo sono nel mezzo di un progetto importante e dovrei risolvere velocemente questo problema!
vi prego aiutatemi :D

PS: qualcuno sa spiegarmi i disturbi che ho riscontrato utilizzando le schermature?
bilanciando i segnali otterrei qualcosa? e che tipo di cavi dovrei usare?

grazie mille!!!

Go Up