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
Moderatori: MassimoB,
WALTERmwp,
xyz
14 messaggi
• Pagina 1 di 2 • 1, 2
0
voti
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
Proprio oggi mi hanno consegnato un teensy 4.1 che monta un ARM M7 a 600MHz ha una SRAM da 1024 K e lo slot per la sd già on board
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
3.402 3 7 9 - Master
- Messaggi: 4061
- 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
4.307 3 5 9 - Master
- Messaggi: 2958
- 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: Nessuno e 4 ospiti