Escribí un pequeño programa con el microcontrolador PIC32MX que envía datos a un archivo txt en la tarjeta SD, luego lee los datos del archivo y finalmente compara los datos antes de enviarlos con los datos después de enviarlos, desde el archivo txt de la SD.
Lo hago para verificar si los bytes se guardan / recuperan correctamente (o no) en / desde el archivo txt creado en la tarjeta SD.
Los datos constan de solo dos caracteres, 'G' y 'H'. Primero escribo 500 bytes de 'G' y luego 500 bytes de 'H'. repetidamente por 10 veces y el número total de bytes en el archivo txt sería 10kB.
Además, los datos en el archivo txt de la SD aparecerían así: GGG ... HHH ... GGG ... HHH ... etc. Para escribir estos datos en el archivo, uso la función f_write ()
FRESULT f_write (
FIL* fp, /* [IN] Pointer to the file object structure */
const void* buff, /* [IN] Pointer to the data to be written */
UINT btw, /* [IN] Number of bytes to write */
UINT* bw /* [OUT] Pointer to the variable to return number of bytes written */
);
Y aquí radica el problema. Cuando configuro el Número de bytes para escribir, a 1000 bytes (500 'G's y 500' H's, el resultado en el archivo txt es solo GGGGG ... con no'H's. Cuando doblo el número de bytes para escribir, desde 1000 a 2000, solo entonces la secuencia GGG ... HHHH ... GGG ... HHH aparece correctamente.
Y la pregunta es, ¿por qué sucede esto? Normalmente, el último (correcto) resultado debería ocurrir cuando establezco el número exacto de bytes para escribir, en la función (1000) y no duplicándolo (2000)
¿Alguna idea de por qué sucede esto?
Gracias por tu tiempo