Salve a tutti,
nella necessità di effettuare del signal processing per il mio progetto ho optato per la board Zero data la sua velocità di clock, 32bit ecc..
Con forte sorpresa (e disappunto) ho misurato con micros() la velocità di campionamento ad alto livello di AnalogRead() a ~2.3 kHz (~440 us per campione).
Una prestazione insoddisfacente per le mie necessità.
Vista la alta velocità del clock (4 ordini di grandezza maggiore!) mi aspettavo prestazioni migliori. Sarebbe sufficiente una velocità di ~10kHz, ma non so come conseguirla.
Mi sono informato un po', e ho recuperato il codice di qualcuno che dimostra come attraverso l'uso di DMA si può arrivare a velocità di campionamento di addirittura 2us (~500kHz !), ma nel suo codice il contenuto effettivo dei campioni è instabile e sballa dopo un po', saturando a 1024 o facendo altre cose spiacevoli. Inoltre 500kHz è troppo! (link ZERO's ADC with DMA - Arduino Zero - Arduino Forum )
Addentrandomi nella giungla dell'argomento sono riuscito a trovare un link di riferimento al sito della atmel dove suggeriscono come implementare il DMA, ma non vi è alcun frammento di codice!!
(link Smart | Connected | Secure | Microchip Technology )
C'è qualcuno che ha qualche idea di come io possa risolvere il problema?
Grazie in anticipo.