No mencionó el PIC que está utilizando, pero asumiendo que es uno de los más pequeños, como el PIC16, entonces con su RAM limitada (el 99% de los PIC16 no tienen más de 1K de RAM) sería imposible implemente incluso un sistema de archivos FAT16 ya que se necesitan múltiples buffers de 512 bytes. (Microchip tiene una biblioteca útil para implementar un sistema de archivos FAT16 / FAT32 pero solo es aplicable a PIC18, PIC24, dsPIC33 y PIC32).
Usted mencionó que debido a la memoria RAM limitada, le gustaría simplemente escribir o leer un byte a la vez. Aunque, como han dicho otros, una tarjeta SD normalmente se divide en bloques de 512 bytes, no es necesario utilizar todos los bytes. En el peor de los casos, podría almacenar solo un byte por bloque y desperdiciar los otros 511. Esto parece absurdo, pero debido al enorme tamaño de las tarjetas SD disponibles en la actualidad, realmente funcionaría. Si tiene una tarjeta de 8 GB, significa que hay bloques de 16M, lo que significa que puede almacenar 16 MB de datos de esta manera.
Sin embargo , será muy lento, algo así como 10 ms o más por bloque de 512 bytes, ya que tendrá que emitir un comando para Borrar cada bloque antes de que se escriba. (En el improbable caso de que solo haya almacenado un byte por bloque, como se mencionó anteriormente, esto significa que tomaría 10 ms para escribir ese byte).
No mencionó la cantidad de datos que está contenida en una de sus entradas de registro, pero sería mucho mejor si pudiera almacenar una entrada (digamos 25 bytes o lo que sea) y escribirla a un bloquear. Por lo tanto, cada bloque se convierte en una entrada de registro. Debido a que el tiempo para escribir los bytes está una vez más dominado por el tiempo que toma borrar el bloque, escribir una entrada de registro de entrada será tan rápido como escribir una sola entrada. byte.
Ya que básicamente estás usando esto como memoria extendida, no tienes que quitar la tarjeta y leerla en una PC (lo que requeriría usar un software especial para volcar los bloques en bruto). En su lugar, ya que de todos modos ya tiene la rutina de bloque de lectura en su código, y asumiendo que tiene un UART, descargaría los datos de registro en forma serial a una PC; Podría usar un puente FTDI UART a USB y los datos aparecerían en su PC como un puerto COM.