Étape 9: Mise à jour
J’ai augmenté avec succès la fréquence d’acquisition de données à 19 KHz.
Cela a entraîné en utilisant deux tampons de 512 octets (double mise en tampon) et une réécriture des sections boucle Sub et interruption.
L’audio est beaucoup plus propre.
J’ai aussi testé à 38 Khz, avec des résultats très prometteurs. Cependant à ce tampon occasionnels de la fréquence des périodes d’attente sont présents. Il est probable que les améliorations futures dans la conception de la carte SD et la vitesse de fonction de bibliothèque SD, permettra de surmonter ce problème. Pour ceux qui veulent expérimenter modifier la variable prescalar juste avant l’installation de Sub.
J’ai mis en place la bufa et bufb.
Dans l’interruption systématique, j’ai mis un indicateur appelé aready - c’est vrai, en écrivant à la bufa, false pour bufb.
Le drapeau writeit est vrai quand une écriture est requis et la valeur false lorsque la carte SD se termine.
Lorsqu’un buffer est plein (buffcount == BUF_SIZE) :
- Je vérifie si la carte SD est terminée par écrit, dans quel cas writeit == false et j’ai réinitialiser le pointeur de mémoire tampon à zéro, passer le tampon drapeau aready et définir le vrai drapeau de writeit.
- Si la carte SD est encore écrit, je vais un collationnant (bufcount--; et compteur--;) et l’interruption de la sortie.
Une fois que j’ai le bon nombre de lectures, que j’ai arrêté l’interruption, rédiger le dernier bloc de données et bien rangé.
La majorité des données est écrit en boucle Sub :
if(writeit) {/ / données sont prêtes à écrire
Si (aready) {}
tempfile.Write (bufb, BUF_SIZE) ; écrire le bloc de données à partir de bufb
} else {}
écriture en bloc initier de bufa
tempfile.Write (bufa, BUF_SIZE) ; écrire le bloc de données
}
writeit = false ; drapeau que l’écriture se fait
}