Autor Tema: Micro SD FAT16 creando archivos textO  (Leído 14182 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Micro SD FAT16 creando archivos textO
« Respuesta #15 en: 04 de Febrero de 2012, 20:13:38 »
Hola! El problema estaba en el archivo GenericTypeDefs.h, faltaba definir WORD, DWORD y eliminar byte dado que ese es reservado para CCS  :tongue: Lo adjunto  ;-)

Esto por lo menos compilo  :undecided:


Código: C
  1. #include <18F4620.h>
  2. #device adc=8
  3. #fuses H4,NOWDT,NOPROTECT,NOLVP,NODEBUG
  4. #use delay(clock=40000000)
  5. #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
  6.  
  7.  
  8. #include "FAT16.c"
  9.  
  10. unsigned char Texto[512]="Texto de prueba\r\n";
  11.  
  12. void main(){
  13.    char k,err;
  14.    int j;
  15.    UINT16 UbicacionFolder;
  16.    char NombreLargo[30]="Mi carpeta de pruebas";
  17.    char NombreCorto[13];
  18.    char NombreLargo1[30]="Mi archivo de pruebas 2.txt";
  19.    char NombreCorto1[13]="ARCHIVO2.TXT";
  20.    
  21.    
  22.    
  23.    setup_adc_ports(NO_ANALOGS|VSS_VDD);
  24.    setup_adc(ADC_OFF);
  25.    setup_psp(PSP_DISABLED);
  26.    setup_wdt(WDT_OFF);
  27.    setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
  28.    setup_timer_1(T1_DISABLED|T1_DIV_BY_1);
  29.    setup_timer_2(T2_DISABLED,0,1);
  30.    setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
  31.    setup_comparator(NC_NC_NC_NC);
  32.    setup_vref(FALSE);
  33.    
  34.    InitHard_SDCard();
  35.    while(1){
  36.       if(SD_DETEC==0){
  37.          delay_ms(20);
  38.          if(SD_DETEC==0){
  39.             k=0;
  40.             do{
  41.                delay_ms(50);
  42.                err=SDCard_init();
  43.             }while((k<10)&&(err==0));
  44.             if(err==1){
  45.                //SDCard_read_CSD();
  46.                //SDCard_read_CID();
  47.                FAT_init();
  48.                FAT_UpdateDateTime(12,11,11,17,30,48);
  49.                printf("Busca carpeta\r\n");
  50.                strcpy(&NombreCorto[0],"/CARPETA1");
  51.                if(FAT_FindDirectory(&NombreCorto[0],DirectorioRaiz,&UbicacionFolder)==1){
  52.                   printf("Carpeta encontrada, busca archivo\r\n");
  53.                   if(FAT_FindFile(&NombreCorto1[0],UbicacionFolder)==1){
  54.                      printf("Existe archivo, se agregan datos\r\n");
  55.                      FAT_OpenAddFile(&NombreCorto1[0],UbicacionFolder,&Texto[0]);
  56.                   }else{
  57.                      printf("No existe archivo, se crea\r\n");
  58.                      FAT_CreateFile(&NombreLargo1[0],&NombreCorto1[0],UbicacionFolder,&Texto[0]);
  59.                   }  
  60.                }else{
  61.                   printf("No existe carpeta, se crea y se crea archivo\r\n");  
  62.                   strcpy(&NombreCorto[0],"CARPETA1");
  63.                   UbicacionFolder=FAT_CreateDirectory(&NombreLargo[0],&NombreCorto[0],DirectorioRaiz);
  64.                   FAT_CreateFile(&NombreLargo1[0],&NombreCorto1[0],UbicacionFolder,&Texto[0]);
  65.                }
  66.                // *----------------------*
  67.                printf("Busca carpeta creada por a PC\r\n");
  68.                strcpy(&NombreCorto[0],"/CARPET~1");
  69.                if(FAT_FindDirectory(&NombreCorto[0],DirectorioRaiz,&UbicacionFolder)==1){
  70.                   printf("Carpeta encontrada, busca archivo\r\n");
  71.                   if(FAT_FindFile(&NombreCorto1[0],UbicacionFolder)==1){
  72.                      printf("Existe archivo, se agregan datos\r\n");
  73.                      FAT_OpenAddFile(&NombreCorto1[0],UbicacionFolder,&Texto[0]);
  74.                   }else{
  75.                      printf("No existe archivo, se crea\r\n");
  76.                      FAT_CreateFile(&NombreLargo1[0],&NombreCorto1[0],UbicacionFolder,&Texto[0]);
  77.                   }  
  78.                }else{
  79.                   printf("No existe carpeta\r\n");  
  80.                }              
  81.             }
  82.             while(SD_DETEC==0);
  83.          }  
  84.       }
  85.    }
  86.    
  87.    
  88. }


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Micro SD FAT16 creando archivos textO
« Respuesta #16 en: 04 de Febrero de 2012, 21:05:23 »
Hola Richi777 y Tannke.
Que buenos datos.
Richi777 Con que editor tenés esa opción de salida de texto? Yo uso mplab 8
También ando buscando algún editor que haga autoindentado.
   Saludos
       Jukinch

Hola, no es opción del editor, sino opciones especiales del compilador.

Saludos !

Desconectado Diego Gonzalez

  • PIC18
  • ****
  • Mensajes: 323
    • Visita mi web sobre electronica,fisica,mecanica y demas temas....
Re: Micro SD FAT16 creando archivos textO
« Respuesta #17 en: 05 de Febrero de 2012, 08:14:49 »
Tan rapido como pueda lo pruebo Suky, que crack estas hecho   ((:-))
Visita mi web sobre electronica,fisica,mecanica y demas temas....

http://sites.google.com/site/skygaps/Home

Desconectado Diego Gonzalez

  • PIC18
  • ****
  • Mensajes: 323
    • Visita mi web sobre electronica,fisica,mecanica y demas temas....
Re: Micro SD FAT16 creando archivos textO
« Respuesta #18 en: 11 de Febrero de 2012, 17:47:45 »
Hola compañeros,

Aqui estoy molestando de nuevo... :D

Llevo unos dias peleando con un sensor de temperatura por termopar (ya funciona), y ahora que ya he conseguido crear los archivos en la sd (cadenas de char), me surje la duda de como ir almacenando los datos que yo quiera en la SD. Me habia parado a pensarlo en su dia pero no me di cuenta de la importancia de ello. Pense que seria como escribir una cadena, pero por lo que veo necesito crear un array de char a partir de un int, o un float o lo que yo quiera, verdad? Cual es la mejor forma de meter datos en la sd? o cual seria el enfoque para resolver el problema?

Un saludo a todos!
Visita mi web sobre electronica,fisica,mecanica y demas temas....

http://sites.google.com/site/skygaps/Home

Desconectado Diego Gonzalez

  • PIC18
  • ****
  • Mensajes: 323
    • Visita mi web sobre electronica,fisica,mecanica y demas temas....
Re: Micro SD FAT16 creando archivos textO
« Respuesta #19 en: 11 de Febrero de 2012, 18:03:54 »
Hola compañeros,

Aqui estoy molestando de nuevo... :D

Llevo unos dias peleando con un sensor de temperatura por termopar (ya funciona), y ahora que ya he conseguido crear los archivos en la sd (cadenas de char), me surje la duda de como ir almacenando los datos que yo quiera en la SD. Me habia parado a pensarlo en su dia pero no me di cuenta de la importancia de ello. Pense que seria como escribir una cadena, pero por lo que veo necesito crear un array de char a partir de un int, o un float o lo que yo quiera, verdad? Cual es la mejor forma de meter datos en la sd? o cual seria el enfoque para resolver el problema?

Un saludo a todos!

Acabo de encontrar en la ayuda trasn un buen rato... sprintf. Voy a ver si se realizaria asi la grabacion de los datos, pasar float, int, lo que sea a un array y luego meterlo en la SD...

Código: [Seleccionar]
sprintf( )

--------------------------------------------------------------------------------
Syntax:
 sprintf(string, cstring, values...);

bytes=sprintf(string, cstring, values...)

 
 
Parameters:
 string is an array of characters.

cstring is a constant string or an array of characters null terminated. Values are a list of variables separated by commas. Note that format specifies do not work in ram band strings.

 
 
Returns:
 Bytes is the number of bytes written to string.

 
 
Function:
 This function operates like printf() except that the output is placed into the specified string. The output string will be terminated with a null. No checking is done to ensure the string is large enough for the data. See printf() for details on formatting.

 
 
Availability:
 All devices.

 
 
Requires:
 Nothing

 
 
Examples:
 char mystring[20];

long mylong;

 

mylong=1234;

sprintf(mystring,"<%lu>",mylong);

// mystring now has:

//      < 1 2 3 4 > \0

 
Visita mi web sobre electronica,fisica,mecanica y demas temas....

http://sites.google.com/site/skygaps/Home

Desconectado Diego Gonzalez

  • PIC18
  • ****
  • Mensajes: 323
    • Visita mi web sobre electronica,fisica,mecanica y demas temas....
Re: Micro SD FAT16 creando archivos textO
« Respuesta #20 en: 11 de Febrero de 2012, 18:50:33 »
Si, justamente ha sido con esa funcion. Muy facil!! :D

Perdon por las molestias... malditas ansias :-)
Visita mi web sobre electronica,fisica,mecanica y demas temas....

http://sites.google.com/site/skygaps/Home

Desconectado Diego Gonzalez

  • PIC18
  • ****
  • Mensajes: 323
    • Visita mi web sobre electronica,fisica,mecanica y demas temas....
Re: Micro SD FAT16 creando archivos textO
« Respuesta #21 en: 05 de Marzo de 2012, 16:54:39 »
Hola Suky

Una pregunta. ¿donde puedo encontrar referecias acerca de "WriteMedia()"

Estoy intentando usar la ultima version de la libreria, he cambiado el archivo GenericTypeDefs.h y ya compila, pero no se donde definir los pines del SPI, y demas configuraciones que eran faciles de definir en SDCard_hard

Un saludo y gracias
Visita mi web sobre electronica,fisica,mecanica y demas temas....

http://sites.google.com/site/skygaps/Home

Desconectado Diego Gonzalez

  • PIC18
  • ****
  • Mensajes: 323
    • Visita mi web sobre electronica,fisica,mecanica y demas temas....
Re: Micro SD FAT16 creando archivos textO
« Respuesta #22 en: 05 de Marzo de 2012, 16:55:10 »
Uso CCS y pic18f46k80 :)
Visita mi web sobre electronica,fisica,mecanica y demas temas....

http://sites.google.com/site/skygaps/Home

Desconectado Diego Gonzalez

  • PIC18
  • ****
  • Mensajes: 323
    • Visita mi web sobre electronica,fisica,mecanica y demas temas....
Re: Micro SD FAT16 creando archivos textO
« Respuesta #23 en: 05 de Marzo de 2012, 19:31:23 »
Ignora mi consulta Suky, voy entendiendo cosas
Visita mi web sobre electronica,fisica,mecanica y demas temas....

http://sites.google.com/site/skygaps/Home

Desconectado jose685

  • PIC10
  • *
  • Mensajes: 1
Re: Micro SD FAT16 creando archivos textO
« Respuesta #24 en: 08 de Marzo de 2012, 17:15:48 »
Hola a todos, Diego Gonzalez, con cual version de la librería trabajaste finalmente, llevo un par de semanas tratando de grabar en la sd y solo he conseguido grabar en los sectores reservados por lo q pierdo la fat :( .

Desconectado Vtronic

  • PIC16
  • ***
  • Mensajes: 121
Re: Micro SD FAT16 creando archivos textO
« Respuesta #25 en: 25 de Marzo de 2012, 01:04:17 »
Que tal, acabo de terminar unas pruebas referentes a las SD voy a escribir algunas de mis conclusiones tal vez te ayuden

A nivel software

Utilize Microchip MDD File System MDD link

Los pines para el manejo de la SD los configure en el archivo HardwareProfile.h

Con la libreria me fue posible leer datos en FAT16 y en FAT32 aún no he probado la escritura

Para que funcionara bien con FAT16 tuve que formatear la tarjeta con la librería MDD

Código: [Seleccionar]
FSformat(0,0,"PIC");
leer bien la sintaxis antes de formatear


A nivel Hardware

Utilice el modulo SD de las famosas pantallas de ITead studio

El pic para la prueba fue el PIC24FJ256DA210 el cual utiliza PPS (Pin Re-Mapping peripheral) por lo cual tuve que especificar que pines eran los que utilizaría para el manejo de la SD dentro de un void

Código: [Seleccionar]
//SPI
RPINR20bits.SDI1R=42;         // SDI1
RPOR12bits.RP24R=7; //SDO1
RPOR5bits.RP11R=8; //SCLK


En total fueron 4 Lineas para el manejo de la SD

Y aquí esta un pequeño video sobre el funcionamiento, la velocidad de lectura no varia cuando hago la lectura con FAT16 a FAT32



Espero que te sirva la info cualquier cosa pregunta, hace algunos días me pidieron un proyecto que tenia que grabar audio asi que los voy a seguir de cerca

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Micro SD FAT16 creando archivos textO
« Respuesta #26 en: 25 de Marzo de 2012, 09:34:09 »
Buen trabajo! Yo a las de Microchip les hice un retoque como para que acepte cualquier memoria, por aquí lo comento, y con eso ningún problema, o sea no fue necesario formatearla con la librería. También para C18 le modifico como configura el módulo SPI y sus distintas velocidades (Aplicaciones avanzadas en C18 II).

Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado Vtronic

  • PIC16
  • ***
  • Mensajes: 121
Re: Micro SD FAT16 creando archivos textO
« Respuesta #27 en: 25 de Marzo de 2012, 22:31:06 »
Gracias  :mrgreen: he visto tus documentos, no esta de mas decir que están de lujo, me sirvieron mucho para formarme una idea mas solida sobre el funcionamiento de estas librerías, y le daré una leída al link para ampliar la compatibilidad porque es algo esencial en estos sistemas y mas ahora que tengo que implementarlos en unos proyectos, gracias por los documentos son una guiá muy buena.

Desconectado mosesito

  • PIC10
  • *
  • Mensajes: 5
Re: Micro SD FAT16 creando archivos textO
« Respuesta #28 en: 06 de Septiembre de 2012, 01:36:12 »
hola amigo exelente trabajo una consulta, baje la libreria fat16 1.8 y copie el ejemplo fat  y me sale este error con  4.104 ccs

  #if defined(SDCARD_DEBUG)
      printf("Repeticiones para respuesta de CmdXX: %u; Respuesta recibida:%u\r\n",i,ResTmp.Val); (aqui sale error)
   #endif
   return(1);
el otro error es similar    gracais por su ayuda amigos

*** Error 114 "D:\SD1\SDCardSPI.c" Line 94(93,96): Printf format type is invalid  ::
*** Error 114 "D:\SD1\SDCardSPI.c" Line 131(108,111): Printf format type is invalid  ::
      2 Errors,  0 Warnings.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Micro SD FAT16 creando archivos textO
« Respuesta #29 en: 06 de Septiembre de 2012, 09:29:36 »
Problemas de usar CCS vs C18/Otros  :mrgreen: Sería así:

printf("Repeticiones para respuesta de CmdXX: %lu; Respuesta recibida:%u\r\n",i,ResTmp.Val);

En la linea 131 debe existir un problema similar, o sea %u para 8-bits y %lu para >8-bits.

Por aquí VelazquezBio a trabajado modificando algunas cosas para CCS.

Saludos!
No contesto mensajes privados, las consultas en el foro


 

anything