Frequenza scrittura dati

Salve a tutti, sto esegueno un semplice progettino composto da arduino 2009 un accelerometro adxl335 e uno shield sd per il salvataggio dei dati. Ora il codice è dei piu banali copiato per la maggiore dai vari tutorial ed implica la semplice acquisizione del valore di digit da ogni asse dell'adxl335 e sucessiva scrittura su sd. Ora il problema che mi pongo è dato che voglio acquisire a frequenze di 50 Hz dovrei campionare ad un minimo di 100 Hz, ovvero salvare 100 campioni per ogni secondo su scheda sd (sempre se non ho capito male). A questo punto credo di aver capito che il problema non è l'acquisizione e la digitalizzazione del dato, ma la scrittura su sd.........esiste un modo per poter modificare la frequenza di scrittura o per poter allocare magari i dati e scriverli successivamente?????

Grazie intanto

potresti postare lo sketch che hai fatto, così vediamo cosa hai fatto...

in ogni caso credo che la scrittura su SD richieda un tempo fisico che non è modificabile.
potresti tenere in memoria i dati e salvarli in un secondo momento, ma questo dipende da quanti dati vuoi salvare.
per un numero limitato di valori potresti prevedere un array bidimensionale del tipo valori[N][3] dove hai N terne di valori (x,y,z). quando l'array è pieno salvi tutto su SD.
se il salvataggio devi farlo in continuo la vedo dura...

#include <RTClib.h>
#include <Time.h>
#include <TimeAlarms.h>
//datalogger
#include <Wire.h>
#include <SPI.h> //includo librerie per comunicazione SPI
#include <SD.h> //includo librerie per scheda SD
RTC_DS1307 RTC;
const int chipSelect = 10; //per la scheda usata e il 10
char Gravity [16];
char tempo [18];
char data [12];

void setup()
{
  {
  analogReference(EXTERNAL);
  // comunicazione porta seriale
  Serial.begin(9600);
  // stato dei pin
  pinMode(A0, INPUT);
  pinMode(A1, INPUT);
  pinMode(A2, INPUT);
  }
  // inizializzazione SD
  if (!SD.begin(chipSelect)) {
    Serial.println("Card failed, or not present");
    return;
  }
  Wire.begin();
  RTC.begin();
   if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running!");
    // following line sets the RTC to the date & time this sketch was compiled
//RTC.adjust(DateTime(2016,05,05,22,32,00)); //Per impostare orario inserisci es. 17 Aprile 2016 ore 22:30:00  (2016,04,17,22,30,00) lasciare commentato se non si deve impostare
}
Alarm.alarmRepeat(00,00,01,giorno); //imposta allarme per scrittura data alle 00:00:01 di ogni giorno
Alarm.timerRepeat(3600,ora); //imposta l'allarme per la scrittura dell'ora una volta all'ora (60*60 espresso in secondi)
}
void loop()
{  
int x = analogRead(A0);
int y = analogRead(A1);
int z = analogRead(A2);
{  
sprintf(Gravity,"%04d %04d %04d", x, y, z);
//Serial.print(Gravity); //scrive solo a schermo
File dataFile = SD.open("test.txt", FILE_WRITE);
  // if the file is available, write to it:
 if (dataFile) {
    dataFile.println(Gravity);
    dataFile.close();
   }
  // if the file isn't open, pop up an error:
  else {
    Serial.println("error opening datalog.txt");
  }    
}
Alarm.delay(1);
}

void giorno()
{DateTime now = RTC.now();
 sprintf(data, "      %02d/%02d/%04d", now.day(), now.month(), now.year());
 File dataFile = SD.open("test.txt", FILE_WRITE);
 dataFile.println(data);
    dataFile.close();
 }

void ora()
{DateTime now = RTC.now();
 sprintf(tempo, "      %02d:%02d:%02d", now.hour(), now.minute(), now.second());
 File dataFile = SD.open("test.txt", FILE_WRITE);
 dataFile.println(tempo);
    dataFile.close(); 
  }