Libreria Hardwareserial e arduino 0020

Ciao a tutti, sto lavorando ad un progetto con 32 tlc5940 e 512led monocolore.
Il tutto pilotato attraverso arduino e maxmsp connessi via seriale.

Ho riscontrato diversi problemi di velocità effettiva in questo tipo di comunicazione e così dividevo il carico su due arduini2009 in parallelo trasmettendo ad ognuno 254 byte per volta. Per fare ciò ho modificato la riga "#define RX_BUFFER_SIZE" fino al massimo consentito dalla variabie char, cioè 255 ottenendo però effettivamente solo 254 byte accumulabili nel buffer di ricezione (suppongo per questioni interne di libreria).

Adesso con l'uscita degli Uno mi sono deciso a cambiare i miei 2009 per questi ultimi, e effettivamente ho notato un netto miglioramento della velocità seriale, pur rimanendo lontano dai baud impostati.

Ho notato che la libreria HardwareSerial è completamente cambiata con il software arduino 0020, e stranamente non mi permette piu di impostare l'rx_buffer_size a 255 anzi sembra ci sia un limite di corretto funzionamento tra 170 e 220 mi pare (ho fatto pochi test)?

La domanda e l'aiuto che vi chiedo è:

  • è possibile arrivare ad un buffer in ricezione di 512 byte effettivi?
  • come mai non riesco neanche ad averne 254 come con arduino2009 e software 0019?

Grazie 3E8 :wink: !!!
Luigi

Ciao Luigi
Cosa intendi per

velocità seriale, pur rimanendo lontano dai baud impostati.

IL Baudrate é la velocitá di bit per secondo trasmessi sulla seriale. Per trasmettere un Byte ti servono da 10 a 11 Byte (a secondo del settaggio della seriale).
Percui 9600 Baud trasmettono nei migliori dei casi 960 Byte.
Ciao Uwe

Intanto ti ringrazio per avermi risposto uwe!
sisi sapevo che il baud equivale ai bit al sec e quindi i byte erano circa un decimo ma avevo problemi di velocità dovuti a maxmsp...oggi comunque sono riuscito a risolvere settando bene le sue opzioni dsp !!

Resta comunque la domanda iniziale che avevo fatto...
è possibile tweakare la libreria hardwareserial per ottenere un buffer in ingresso di 512 bytes?

come mai la nuova libreria nella 0020 non arriva neanche a 255 ?
oggi faccio altre prove per vedere se fosse un errore nel mio setup.. :-/

grazie infinite !!

Non so risponderti sulla questone del Buffer; quello potrebbe fare uno dei programmatori del Arduino uno e del IDE 0020.
Mi sembra strana la tua necessitá di avere un buffer cosí grande; sapendo che il buffer di tanti UART sono di qualche decina di byte.
Perché non mandi pachetti piú piccoli?
Non so se é possibile attivare un protocollo Xon-Xoff sulla seriale.
Ciao Uwe

Esistono delle diversità tra il vecchio 2009 e il nuovo UNO.
Visto che non possiedo un UNO e non mi sono ancora documentato a dovere provo ad azzardare un amia ipotesi :

Il problema potrebbe essere dovuto al 8u2 ed in particolare al firmware caricato al suo interno. Mi aspettavo un cambiamento della libreria in quanto adesso il ATmega328 scambia dati con 8u2 in seriale e quest'ultimo manda tutto quello gli arriva all'USB.
Quindi inizialmente tra i due si dovranno scambiare un po di informazione per sincronizzare le velocità.... Quindi se modifichi il buffer immagino che devi mettere mano anche sul firmaware dell'8u2..... ma non ti saprei dire dove trovare i sorgenti.

Fammi sapere le news.
Saluti
Drake