Buongiorno a tutti,
Sto sviluppando un progetto di un GFA con la possibilità di descrivere una matrice di punti e utilizzarli come campionatura della forma d'onda e proprio a fagiolo un amico mi ha chiesto di dargli una mano a sviluppare il suo che è un proiettore laser a galvanometri.
Per generare la forma d'onda col GFA creo una matrice di integer e in loop continuo vado ad utilizzare questi valori per settare lo stato dei vari output di una porta usando il comando PORTx=Valori[...] poi uso gli output per passare il valore ad un DAC parallelo e l'uscita del DAC agli opamp che offsettano e amplificano il segnale.
Sdoppiando questo sistema posso tranquillamente creare i 2 valori analogici da passare alla scheda di controllo dei galvanometri.
Il problema è che la quantità di punti da visualizzare è davvero notevole e molto superiore della memoria di Arduino pensavo quindi di utilizzare una memoria esterna (EEprom o SDcard).
Le caratteristiche fondamentali che devo tenere in considerazione sono la grande quantità di letture e la velocità di lettura.
Vi chiedo quindi di consigliarmi la strada giusta:
Se uso una SDcard rischio di rovinarla presto se continuo a leggere?
qual è la comunicazione più veloce per questo device? SPI? I2C?
Arduino memoria esterna veloce
14 messaggi
• Pagina 1 di 2 • 1, 2
0
voti
wimatech ha scritto:SPI? I2C?
SPI è più veloce del I2C. Alcuni micro-controllori ATmega possono gestire una SRAM esterna. Se il problema è la RAM valuta di usare un micro-controllore ARM con più memoria RAM.
0
voti
per fare un conto a spanne parliamo di circa 10000 valori a 12bit, consideriamo 16bit nel caso volessi mettere un DAC più accurato.
Ho fatto questa prova (non so se e quanto possa essere corretta ed indicativa), in un file di testo ho scritto 10000 volte il valore 65535 e l'ho salvato sul PC nelle sue proprietà mi dice che pesa 70KB.
Posso considerarlo un valore indicativo di dimensione che mi serve o ho fatto una mera stupidaggine?
Ho fatto questa prova (non so se e quanto possa essere corretta ed indicativa), in un file di testo ho scritto 10000 volte il valore 65535 e l'ho salvato sul PC nelle sue proprietà mi dice che pesa 70KB.
Posso considerarlo un valore indicativo di dimensione che mi serve o ho fatto una mera stupidaggine?
0
voti
Perché vuoi far passare i dati dal microcontroller?
Quello che tu vuoi fare è
microcontroller --> RAM esterna --> microcontroller --> DAC
Se usi una RAM esterna con interfaccia parallela, puoi usare questa versione semplificata:
microcontroller --> RAM esterna --> DAC
Durante la lettura della RAM, il microcontroller si limita ad incrementarne l'indirizzo di lettura, i pin collegati alla porta dati della RAM devono essere tri-state.
Quando invece carichi i dati nella RAM, disattivi il DAC e configuri i pin del microcontroller come output.
Boiler
Quello che tu vuoi fare è
microcontroller --> RAM esterna --> microcontroller --> DAC
Se usi una RAM esterna con interfaccia parallela, puoi usare questa versione semplificata:
microcontroller --> RAM esterna --> DAC
Durante la lettura della RAM, il microcontroller si limita ad incrementarne l'indirizzo di lettura, i pin collegati alla porta dati della RAM devono essere tri-state.
Quando invece carichi i dati nella RAM, disattivi il DAC e configuri i pin del microcontroller come output.
Boiler
0
voti
Sei sicuro che la velocità di elborazione sia sufficiente per passare tutti quei dati all'adc?
Gia per gestire sorgenti audio, si usa DMA, perché l'elaborazione software non è sufficiente, secondo me dovresti preoccuparti prima di questo, poi della ram veloce.
saluti.
Gia per gestire sorgenti audio, si usa DMA, perché l'elaborazione software non è sufficiente, secondo me dovresti preoccuparti prima di questo, poi della ram veloce.
saluti.
-

lelerelele
4.899 3 7 9 - Master

- Messaggi: 5505
- Iscritto il: 8 giu 2011, 8:57
- Località: Reggio Emilia
0
voti
L'idea della ram esterna è sorta dal fatto che non riesco a memorizzare nel uC tutti i punti che mi servono quindi pensavo di "appoggiarli" in ram.
perché sostanzialmente la proiezione è composta da un loop continuo che spara sulla porta un valore numerico così:
Ora andrò a cercare in rete cos'è il DMA e se trovo indicazioni per gestire la Ram parallela tri-state e farmi un po di cultura perché sono 2 cose di cui non ne so nulla
perché sostanzialmente la proiezione è composta da un loop continuo che spara sulla porta un valore numerico così:
- Codice: Seleziona tutto
int SINE[100]={127, 134, 142, 150, 158, 166, 173, 181, 188, 195, 201, 207, 213, 219, 224, 229, 234, 238, 241, 245, 247, 250, 251, 252, 253, 254, 253, 252, 251, 250, 247, 245, 241, 238, 234, 229, 224, 219, 213, 207, 201, 195, 188, 181, 173, 166, 158, 150, 142, 134, 127, 119, 111, 103, 95, 87, 80, 72, 65, 58, 52, 46, 40, 34, 29, 24, 19, 15, 12, 8, 6, 3, 2, 1, 0, 0, 0, 1, 2, 3, 6, 8, 12, 15, 19, 24, 29, 34, 40, 46, 52, 58, 65, 72, 80, 87, 95, 103, 111, 119};
void setup()
{
DDRA = B11111111;// Setta tutte le porte D come uscita per il DAC
}
int p=0;
void loop()
{
for(int i=0;i<=100;i++){
PORTA=SINE[i];
delayMicroseconds(p);
}
}
Ora andrò a cercare in rete cos'è il DMA e se trovo indicazioni per gestire la Ram parallela tri-state e farmi un po di cultura perché sono 2 cose di cui non ne so nulla
0
voti
wimatech ha scritto:L'idea della ram esterna è sorta dal fatto che non riesco a memorizzare nel uC tutti i punti che mi servono quindi pensavo di "appoggiarli" in ram.
Ma non puoi calcolarli nel mentre?
0
voti
Come velocita' e durata la scelta migliore sarebbe una FRAM (o FeRAM, e' lo stesso), sono piu veloci, consumano meno, sono non-volatili, ed hanno cicli garantiti di scrittura di almeno 10^14, contro i 10000 delle flash ... non so pero' se siano disponibili delle schedine gia pronte per Arduino, a parte quelle SPI di Adafruit.
"Sopravvivere" e' attualmente l'unico lusso che la maggior parte dei Cittadini italiani,
sia pure a costo di enormi sacrifici, riesce ancora a permettersi.
sia pure a costo di enormi sacrifici, riesce ancora a permettersi.
-

Etemenanki
9.507 3 6 10 - Master

- Messaggi: 5935
- Iscritto il: 2 apr 2021, 23:42
- Località: Dalle parti di un grande lago ... :)
14 messaggi
• Pagina 1 di 2 • 1, 2
Chi c’è in linea
Visitano il forum: Google [Bot] e 4 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)





