Sie sind auf Seite 1von 3

Librera FAT16 - Documento de Suky

Aqu se presenta una librera para el manejo de memorias SD Card con el sistema de archivos FAT16. Est desarrollada en C, compatible con varios compiladores. Para lograr la integracin de varios compiladores se tiene el archivo GenericTypeDefs.h en el cual se definen los tipos de variables y HardwareSPI.c/HardwareSPI.h para all realizar las modificaciones respecto al control del mdulo SPI del microcontrolador. Por el momento se han realizado pruebas en CCS y C18. Funciones disponibles y sus parmetros: Buscando una direccin de carpetas. Por ejemplo si en nuestra memoria SD tenemos la siguiente estructura de directorios /Logger/temp/data, y deseamos crear una carpeta o archivo en ella debemos determinar el cluster donde se encuentra definida para trabajar en ella. Para ello utilizamos la siguiente funcin: FAT_FindDirectory(Direccion,DirectorioInicial,UbicacionCarpeta); donde: Direccin: indica la estructura de directorios a buscar (/LOGGER/TEMP/DATA). DirectorioInicial: Indica a partir de que carpeta buscamos estructura. En principio iniciaramos en la carpeta raz y este valor seria 0. UbicacionCarpeta: En esta variable se devuelve el cluster donde trabajar. NOTA: La bsqueda se realiza a partir de los nombres cortos.Crear una carpeta. Para ello primero definimos el nombre corto (Mayscula) y el nombre largo, que puede ser el mismo. NombreCorto[12]=CARPETA NombreLargo[30]=Carpeta creada con PIC Utilizamos la siguiente funcin: FAT_CreateDirectory(NombreLargo,NombreCorto,Ubicacin) donde: Ubicacin: es la direccin del Cluster en donde la crearemos. Esta direccin puede ser DirectorioRaiz (Definida dentro de la librera como 0) o una que se obtiene a buscar una direccin de carpetas con FAT_FindDirectory(). Retorna: La direccin donde se ha creado la carpeta para posterior trabajo dentro de ella (Crear un archivo, otra carpeta, ect) Creacin de un archivo. Es idntico a crear una carpeta pero con el adicional de indicar el string a escribir en dicho archivo. Dadas las capacidades fsicas del microcontrolador el tamao del string siempre ser menor a un cluster. FAT_CreateFile(NombreLargo,NombreCorto,Ubicacion,Texto) Agregar datos a un archivo. Si tenemos ya un archivo creado con datos almacenados y necesitamos agregar ms datos con esta funcin es relativamente sencillo donde podemos ir generando un archivo de cualquier tamao. La funcin a utilizar es la siguiente:

FAT_OpenAddFile(NombreArchivo,UbicacionCarpeta,Texto) donde: NombreArchivo: Nombre corto de archivo en donde agregaremos datos. UbicacionCarpeta: Direccin de carpeta contenedora del archivo. Texto: Texto a agregar al archivo. Abrir un archivo y leer su contenido: En la librera se lee el archivo y se enva por puerto serial, es aqu donde se debe cambiar a gusto. FAT_OpenFile(NombreArchivo,UbicacionCarpeta) donde: NombreArchivo: Nombre corto de archivo en donde leeremos datos. UbicacionCarpeta: Direccin de carpeta contenedora del archivo. Ejemplo en CCS: #include <18F4620.h> #device adc=8 #fuses H4,NOWDT,NOPROTECT,NOLVP,NODEBUG #use delay(clock=40000000) #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8) #include "FAT16.c" UINT8 Texto[512]="Texto Creado con PIC....\r\n"; void main(){ int1 Card_Work=0; char NombreCorto[13]; char NombreLargo[50]; UINT16 UbicacionFolder=0; setup_adc_ports(NO_ANALOGS|VSS_VDD); setup_adc(ADC_OFF); setup_psp(PSP_DISABLED); setup_wdt(WDT_OFF); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_DISABLED|T1_DIV_BY_1); setup_timer_2(T2_DISABLED,0,1); setup_timer_3(T3_DISABLED|T3_DIV_BY_1); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); InitHard_SDCard(); delay_ms(1000);

while(1){ if((SD_DETEC==0)&&(Card_Work==FALSE)){ delay_ms(500); if(SD_DETEC==0){ Card_work=1; SDCard_init(); FAT_init(); strcpy(&NombreCorto[0],"CARPET~1"); strcpy(&NombreLargo[0],"Carpeta de PIC"); UbicacionFolder=FAT_CreateDirectory(&NombreLargo[0],&NombreCorto[0],DirectorioRaiz); strcpy(&NombreCorto[0],"ARCHIV~1.txt"); strcpy(&NombreLargo[0],"Archivo con PIC.txt"); FAT_CreateFile(&NombreLargo[0],&NombreCorto[0],UbicacionFolder,&Texto[0]); FAT_OpenAddFile(&NombreCorto[0],UbicacionFolder,&Texto[0]); } } if((SD_DETEC==1)&&(Card_Work==TRUE)){ Card_work=0; } } }

Das könnte Ihnen auch gefallen