Pages: [1]   Go Down
Author Topic: SD datalogging lento ?  (Read 516 times)
0 Members and 1 Guest are viewing this topic.
Monselice PD Italy
Offline Offline
Faraday Member
**
Karma: 28
Posts: 5515
фон Крыса
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sto usando la SD library, per logare dei dati letti in maniera analogica, ho però un problema, salva i dati ad intervalli troppo lunghi, mi salva i tre dati ogni circa un secondo ma vorrei aumentare la velocità di salvataggio, avete idee di come posso fare ? la SDfat lib non posso usarla perchè il mio ATmega funziona a 8MHz e mi da dei problemi..
Grazie in anticipo..
Logged

Se corri veloce come un fulmine, ti schianterai come un tuono.

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 335
Posts: 23122
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

http://elm-chan.org/fsw/ff/00index_p.html
Petit FAT FS
E' limitata nelle funzioni ma ha un ridotto impatto sulle risorse, forse è anche più veloce. Non so.

Considera comunque che molta della lentezza ce l'hai perché accedi ad un file system quindi la libreria deve scrivere i dati come file e non semplicemente riversandoli su una memoria. Potresti provare con una memoria Flash usandola proprio come... "memoria": esistono chip I2C di diversi MB.
Logged


Monselice PD Italy
Offline Offline
Faraday Member
**
Karma: 28
Posts: 5515
фон Крыса
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

La ricordo la Petit Fs, me l'avevi consigliata con i tiny 84 ma non mi ci son trovato molto bene...  smiley-roll-sweat
ad ogni modo ho trovato una soluzione..
questo era il codice di prova prima:
Code:
#include <SD.h>

File file;

void setup() {
  Serial.begin(9600);
  SD.begin(10);
  file = SD.open("WR_TEST1.TXT", FILE_WRITE);

  while(millis() < 1000);  // delay so mills() is four digits

  for (uint8_t i = 0; i < 100; i++) {
    file.println(millis());
  }
  file.close();
}

void loop() {}
sostituendo il FILE_WRITE con O_CREAT | O_WRITE la velocità di salvataggio aumenta esponezialmente !!!
Logged

Se corri veloce come un fulmine, ti schianterai come un tuono.

Monselice PD Italy
Offline Offline
Faraday Member
**
Karma: 28
Posts: 5515
фон Крыса
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pardon, non salva correttamente, ora ci lavoro e scrivo eventuali novità
Logged

Se corri veloce come un fulmine, ti schianterai come un tuono.

Genova
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3474
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

A questo tuo treadh "Possibile che SDfat vada ed SD.h no ???"
http://arduino.cc/forum/index.php/topic,107093.msg805469.html#msg805469

Ve beh, poi provo e ti so dire  smiley-wink

Aspetto ancora risposta smiley
Quindi come hai risolto?

ciao


« Last Edit: June 03, 2012, 05:06:30 pm by pablos » Logged

no comment

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 574
Posts: 12678
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

A questo tuo treadh "Possibile che SDfat vada ed SD.h no ???"
http://arduino.cc/forum/index.php/topic,107093.msg805469.html#msg805469

Ve beh, poi provo e ti so dire  smiley-wink

Aspetto ancora risposta smiley
Quindi come hai risolto?

ciao
Mi sa che ancora non ha risolto nemmeno lì, ad occhio i problemi mi sembrano sempre gli stessi; il nostro ratto93 deve ancora prendere la giusta dimestichezza con queste lib smiley
Logged


Monselice PD Italy
Offline Offline
Faraday Member
**
Karma: 28
Posts: 5515
фон Крыса
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho risposto al vecchio thread smiley
ora sono riuscito a farlo andare, ma non scrive ancora abbastanza velocemente...
sono sui 3Hz (inteso come frequenza di salvataggio) e sono ancora troppo pochi..
l'inghippo sta tutto qui ( con questa sintassi apre o crea il file e scrive in coda i nuovi dati) :
Code:
File dataFile = SD.open("datalog.txt", O_CREAT | O_WRITE | O_APPEND);
Logged

Se corri veloce come un fulmine, ti schianterai come un tuono.

0
Offline Offline
Shannon Member
****
Karma: 136
Posts: 10525
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

non usare un filesystem ma scrivi i dati raw... certo però non uoi accederci direttamente dal PC, devi fare un paio di rigiri (copiare a basso livello l'immagine e poi aprire l'immagine in formato testo)
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Monselice PD Italy
Offline Offline
Faraday Member
**
Karma: 28
Posts: 5515
фон Крыса
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

non usare un filesystem ma scrivi i dati raw... certo però non uoi accederci direttamente dal PC, devi fare un paio di rigiri (copiare a basso livello l'immagine e poi aprire l'immagine in formato testo)
potresti spiegarmi come funziona questa cosa ?
Io alla fine ho bisogno di un file di testo con dei numeri separati da virgole su colonne.. per poi poterli lavorare con excel e similari..
Logged

Se corri veloce come un fulmine, ti schianterai come un tuono.

0
Offline Offline
Shannon Member
****
Karma: 136
Posts: 10525
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

si, ma tu fregatene per ora.
allora immagina la tua SD come un array di byte. La FAT dice che i primi X byte sono riservati per la tabella partizioni, e poi bisogna fare i blocchi da 521, etc.. etc..., e ogni aggiornamento va ad aggiornare un bel pò di tabelle spase per la SD.

se invece ce ne freghiamo di essere "plug and play", allora NON usiamo un file system, ma usiamo direttamente i byte della SD, esattamente come se fosse una EEPROM.. poi dovrai usare un programma per estrarre i dati "raw" (o l'immagine), ne esistono un bel pò, e linux ha dei comandi "incorporati" (dd per esempio).
Estraendo i dati raw avrai un fine .img o senza estensione, ma se tu lo apri come se fosse un TXT, magicamente troverai tutti i tuoi dati.
Certo, richiede un passaggio in più lato PC, però non è nè troppo complicato e praticamente istantaneo se ti fai uno script apposta (farsi il programma da soli mi sa che diventa complicato)

edit: cerca "read raw data SD" su gooogle e ti escono un bel pò di discussioni in giro per vari forum
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Monselice PD Italy
Offline Offline
Faraday Member
**
Karma: 28
Posts: 5515
фон Крыса
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Il problema lo vedo nel come salvare il dato tramite arduino smiley
Logged

Se corri veloce come un fulmine, ti schianterai come un tuono.

0
Offline Offline
Shannon Member
****
Karma: 136
Posts: 10525
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

che domande... apri SD.h e ci dai un'occhiata smiley
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

0
Offline Offline
Shannon Member
****
Karma: 136
Posts: 10525
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

edit: molto vecchia, ma l'ho trovatra in 2 minuti di ricerca: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1235956807
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Monselice PD Italy
Offline Offline
Faraday Member
**
Karma: 28
Posts: 5515
фон Крыса
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

La stavo giusto guardando per capirci qualcosa smiley
Logged

Se corri veloce come un fulmine, ti schianterai come un tuono.

Pages: [1]   Go Up
Jump to: