L'écriture des données dans la SDcard se fait en mode "RAW" (directement dans la mémoire sans partition ni fichier), par blocs de 512 octets. Un buffer de 512 octets est donc déclaré en RAM dans l'ATmega32. Les données y sont directement enregistrées et lorsque le buffer est plein, on l'enregistre dans la SDcard (en utilisant le port SPI de l'ATmega32). Le problème est que pendant cet enregistrement qui dure quelques ms, les données continuent à arriver et sont alors perdues. (Un faible pourcentage, moins de 1% ). Mais cela est inacceptable.
Je travaille donc actuellement sur la technique du "double-buffering" qui consiste à utiliser deux buffers, on en remplit un pendant qu'on enregistre l'autre. Et derrière ce mot "pendant" se cache une seconde technique, le "multitâche" qui est tout à fait implémentable sur un ATmega.
Afin de pouvoir loger deux buffers de 512 octets en RAM un ATmega32 qui est pourvu de 2kB de RAM est nécessaire, le 1kB d'un ATmega8 ne suffisant pas (il y a d'autre variables à loger en RAM en plus des buffers).