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

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado Diego Gonzalez

  • PIC18
  • ****
  • Mensajes: 323
    • Visita mi web sobre electronica,fisica,mecanica y demas temas....
Micro SD FAT16 creando archivos textO
« en: 03 de Febrero de 2012, 07:17:13 »
Hola a todos.

Tras largo tiempo peleandome con iniciar unas SD, y finalmente conseguir leerlas, escribirlas etc, me quiero meter con el formato FAT para darle mucha mas funcionalidad y versatilidad a los proyetos.
Estoy leyendo FAT al desnudo (bueno lo tengo mas que leido pero me guio mucho pasa determinar que es cada elemento(muchas gracias Ariel)) y estoy empezando a estudiar funciones de Suky.

El tema es que no consigo hacer carpetas o archivos en la SD. Mirando la funcion FAT_init veo que trabaja sobre la posicion 0 de la SD, y con el winhex me dice que el inicio del sector FAT esta en 0001EA00. Creo que ese es mi problema, pero es una tarjeta recien formateada en FAT (no FAT32) y no se si es normal esto (que al formatear te cree el sector FAT en posiciones distintas de la primera. Por otro lado tampoco se si es normal, que con el pic escriba todo un sector, y al formatear la informacion siga ahi grabada... sector 0x200,0x400,0x600 etc...

Que emocionante se esta poniendo esto, jamas hubiera pensado que llegaria a este punto :-/ sin vuestra ayuda no seria posible jejej

saludos ;-)
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 #1 en: 03 de Febrero de 2012, 08:16:59 »
Hola.

Actualizacion: Mediante SPI he formateado el primer sector de la sd a ceros, posteriormente a eso realice un formateo FAT y volvi a ver donde comenzaba el sector FAT, y estaba justo en la posicion 0!! Puede que a alguien le resute util. Ahora me localiza carpetas perfectamente, pero estoy tratando de crear archivos y aun no puedo. Saludos

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 #2 en: 03 de Febrero de 2012, 08:43:59 »
Código: [Seleccionar]
Iniciando SD Card

--> Se inicia sincronizacion

--> Se envia CMD0 (Se desactiva SD Card)
           >> Repeticiones para respuesta de CmdXX: 2; Respuesta recibida:0
           >> Repeticiones para respuesta de CmdXX: 2; Respuesta recibida:1

--> Se envia CMD1 (Se activa SD Card)
           >> Repeticiones para respuesta de CmdXX: 2; Respuesta recibida:1
           >> Repeticiones para respuesta de CmdXX: 2; Respuesta recibida:0

--> Se envia CMD16 (Se fija largo del Bloque para escritura/lectura : 512)
           >> Repeticiones para respuesta de CmdXX: 2; Respuesta recibida:0

--> Se envia CMD59 (Desactivación de CRC)
           >> Repeticiones para respuesta de CmdXX: 2; Respuesta recibida:0
Se ha iniciado correctamente la memoria!!!


--> Se envia CMD17 (Lectura de bloque)
           >> Repeticiones para respuesta de CmdXX: 2; Respuesta recibida:0
   >> Toquen recibido: 0xFE
   >> Terminada la lectura
FAT_init:
-->Bytes por sector:512
-->Sectores por cluster:8
-->Numero de sectores reservados:34
-->Numero de copias FATs:2
-->Numero de entradas directorio raiz:0
-->Numero de sectores ocupados por un FAT:0
-->Primer sector de FAT1:34
-->Primer sector de FAT2:34
-->Primer sector del directorio raiz:34
-->Numero de sectores utilizados por directorio raiz:0
-->Numero de bytes por cluster:4096

--> Se envia CMD17 (Lectura de bloque)
           >> Repeticiones para respuesta de CmdXX: 2; Respuesta recibida:0
   >> Toquen recibido: 0xFE
   >> Terminada la lectura

--> Se envia CMD17 (Lectura de bloque)
           >> Repeticiones para respuesta de CmdXX: 2; Respuesta recibida:0
   >> Toquen recibido: 0xFE
   >> Terminada la lectura
Dentro de la carpeta DATA agregamos archivo
Error al crear archivo
Al archivo creado le agregamos datos:
Error al intentar encontrar archivo

Código: [Seleccionar]
#include <18f46k22.h>  //archivo de cabecera
#fuses HSH,MCLR,NOWDT,NOPROTECT,NOLVP,NOPBADEN,NODEBUG,NOPLLEN,NOFCMEN // fuses  configurados
#use delay(clock=8M)     // Clock en la entrada CPU,Cristal externo 12Mhz*pll4=48Mhz OJO PLL enabled
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) //fuses  configurados
//#use spi(MASTER,SPI1,MODE=3,STREAM=SDCard,BITS=8,ENABLE=PIN_C2)//SCL1=C3,SDA1=C4,SDO1=C5,CS=C2,



#define LCD_DB4   PIN_B7
#define LCD_DB5   PIN_B6
#define LCD_DB6   PIN_B5
#define LCD_DB7   PIN_B4
#define LCD_RS    PIN_B3
//#define LCD_RW    PIN_B2
#define LCD_E     PIN_B2

#define RS232_DEBUG 1
#define FAT_Debug_rs232
#include "flex_lcd.c"
#include <SDCard_hard.c>
#include <FAT16_SDCard.c>
char Texto1[512]={"******Datos iniciales**********\r\n28/10/09 11:10:56 22ºC\r\n28/10/09 11:11:56 22ºC\r\n28/10/09 11:12:56 22ºC\r\n28/10/09 11:13:56 22ºC\r\n28/10/09 11:14:56 22ºC\r\n28/10/09 11:15:56 22ºC\r\n28/10/09 11:16:56 22ºC"};
char Texto2[512]={"\r\n******Datos Agregados**********\r\n28/10/09 11:10:56 22ºC\r\n28/10/09 11:11:56 22ºC\r\n28/10/09 11:12:56 22ºC\r\n28/10/09 11:13:56 22ºC\r\n28/10/09 11:14:56 22ºC\r\n28/10/09 11:15:56 22ºC\r\n28/10/09 11:16:56 22ºC"};
/*******************************************************************************/
void main(){
char NombreArchivo[13]="Datos.txt";
char Carpetas[20]={"/LOGGER/TEMP/DATA"};
int16 UbicacionFolder;

   setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_OFF);
   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);
   
   output_high(PIN_C0);
   output_high(PIN_C1);
   output_high(PIN_C2);
   
   delay_ms(2300);

   printf("Iniciando SD Card\r\n");

   if(SDCard_init()==0){
      printf("Error al iniciar\r\n");
   }else{
      printf("Se ha iniciado correctamente la memoria!!!\r\n\r\n");
      FAT_init();
     
      if(FAT_FindDirectory(Carpetas,DirectorioRaiz,UbicacionFolder)==0){
         printf("Error no se encuentra carpetas\r\n");
      }else{
         printf("Dentro de la carpeta DATA agregamos archivo\r\n");
         if(FAT_CreateFile(NombreArchivo,NombreArchivo,UbicacionFolder,Texto1)==0){
            printf("Error al crear archivo\r\n");
         }
         printf("Al archivo creado le agregamos datos:\r\n");
         if(FAT_OpenAddFile(NombreArchivo,UbicacionFolder,Texto2)==0){
            printf("Error al intentar encontrar archivo");
         }
      }
 
   }
   while(1){}
   
}

No entiendo que podria pasar :(
Visita mi web sobre electronica,fisica,mecanica y demas temas....

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

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Micro SD FAT16 creando archivos textO
« Respuesta #3 en: 03 de Febrero de 2012, 09:47:44 »
Utilizas la ultima versión? (Se puede bajar de micros-designs, ver 1.8 modificada por ultima vez el 12/11/11) Sino podrias debuggerar y ve donde ocurre el problema. Por aquí se ha tratado bastante sobre la librería.



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

Desconectado Diego Gonzalez

  • PIC18
  • ****
  • Mensajes: 323
    • Visita mi web sobre electronica,fisica,mecanica y demas temas....
Re: Micro SD FAT16 creando archivos textO
« Respuesta #4 en: 03 de Febrero de 2012, 14:33:14 »
Hola Suky, creo que usaba la que estaba realizada en CCS la vesion 1.5. Intente usar la generica (parece que la ultima) pero no paraba de darme errores y lo descarte, pero voy a tratar de volver a usarla. No estoy nada acostumbrado a usar muchas librerias genericas y todo eso, pero es un buen momento para intentarlo.

Este es un error que me sale y no soy capaz de eliminar... En el programa solo tengo <#include FAT16.c> y los demas ".c" y ".h" los meti en la misma carpeta del proyecto del mplab

Código: [Seleccionar]
Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "C:\Archivos de programa\PICC\Ccsc.exe" +FH "FAT_16f46k22.c" +DF +LN +T +A +M +Z +Y=9 +EA
*** Error 28 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 189(11,12): Expecting an identifier
*** Error 43 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 209(12,13): Expecting a declaration
*** Error 48 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 209(14,24): Expecting a (
*** Error 48 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 209(25,36): Expecting a (
*** Error 48 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 209(37,45): Expecting a (
*** Error 48 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 209(46,55): Expecting a (
*** Error 34 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 271(231,241): Unknown type
*** Error 48 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 271(242,245): Expecting a (
*** Error 48 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 272(9,10): Expecting a (
*** Error 43 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 272(13,14): Expecting a declaration
*** Error 43 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 273(18,19): Expecting a declaration
*** Error 43 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 273(19,20): Expecting a declaration
*** Error 34 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 311(9,13): Unknown type
*** Error 48 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 311(14,16): Expecting a (
*** Error 48 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 312(14,18): Expecting a (
*** Error 43 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 312(16,17): Expecting a declaration
*** Error 43 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 313(5,6): Expecting a declaration
*** Error 48 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 313(7,11): Expecting a (
*** Error 28 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 320(11,12): Expecting an identifier
*** Error 34 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 323(9,17): Unknown type
*** Error 48 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 323(18,21): Expecting a (
*** Error 48 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 324(18,26): Expecting a (
*** Error 43 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 324(22,23): Expecting a declaration
*** Error 43 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 325(5,6): Expecting a declaration
*** Error 48 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 325(6,15): Expecting a (
--- Info 300 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 208(7,11): More info:   First Declaration of bits
*** Error 31 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 360(7,11): Identifier is already used in this scope
*** Error 43 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 361(12,13): Expecting a declaration
*** Error 48 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 361(14,24): Expecting a (
*** Error 48 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 361(25,34): Expecting a (
*** Error 48 "C:\ProgramasPics_C\18f46k22\SDCardSPI.h" Line 75(6,10): Expecting a (
*** Error 43 "C:\ProgramasPics_C\18f46k22\SDCardSPI.h" Line 75(17,18): Expecting a declaration
*** Error 81 "C:\ProgramasPics_C\18f46k22\SDCardSPI.h" Line 75(22,23): Expecting a basic type
*** Error 48 "C:\ProgramasPics_C\18f46k22\SDCardSPI.h" Line 82(6,10): Expecting a (
*** Error 43 "C:\ProgramasPics_C\18f46k22\SDCardSPI.h" Line 82(23,24): Expecting a declaration
*** Error 36 "C:\ProgramasPics_C\18f46k22\SDCardSPI.h" Line 82(46,52): Expecting a ; or ,
*** Error 43 "C:\ProgramasPics_C\18f46k22\SDCardSPI.h" Line 82(53,54): Expecting a declaration
*** Error 48 "C:\ProgramasPics_C\18f46k22\SDCardSPI.h" Line 89(6,10): Expecting a (
*** Error 43 "C:\ProgramasPics_C\18f46k22\SDCardSPI.h" Line 89(24,25): Expecting a declaration
--- Info 300 "C:\ProgramasPics_C\18f46k22\SDCardSPI.h" Line 82(31,38): More info:   First Declaration of Address
*** Error 31 "C:\ProgramasPics_C\18f46k22\SDCardSPI.h" Line 89(32,39): Identifier is already used in this scope
--- Info 300 "C:\ProgramasPics_C\18f46k22\SDCardSPI.h" Line 82(46,52): More info:   First Declaration of Buffer
*** Error 31 "C:\ProgramasPics_C\18f46k22\SDCardSPI.h" Line 89(47,53): Identifier is already used in this scope
*** Error 43 "C:\ProgramasPics_C\18f46k22\SDCardSPI.h" Line 89(54,55): Expecting a declaration
*** Error 48 "C:\ProgramasPics_C\18f46k22\SDCardSPI.h" Line 96(6,10): Expecting a (
*** Error 43 "C:\ProgramasPics_C\18f46k22\SDCardSPI.h" Line 96(21,22): Expecting a declaration
*** Error 81 "C:\ProgramasPics_C\18f46k22\SDCardSPI.h" Line 96(26,27): Expecting a basic type
*** Error 48 "C:\ProgramasPics_C\18f46k22\SDCardSPI.h" Line 102(6,10): Expecting a (
*** Error 43 "C:\ProgramasPics_C\18f46k22\SDCardSPI.h" Line 102(21,22): Expecting a declaration
*** Error 81 "C:\ProgramasPics_C\18f46k22\SDCardSPI.h" Line 102(26,27): Expecting a basic type
*** Error 48 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 64(6,10): Expecting a (
*** Error 43 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 64(25,26): Expecting a declaration
--- Info 300 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 44(30,36): More info:   First Declaration of UINT32
*** Error 31 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 64(43,49): Identifier is already used in this scope
*** Error 43 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 64(46,47): Expecting a declaration
*** Error 36 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 64(65,68): Expecting a ; or ,
*** Error 43 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 64(69,70): Expecting a declaration
*** Error 48 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 68(15,25): Expecting a (
*** Error 43 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 68(24,25): Expecting a declaration
*** Error 48 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 70(4,13): Expecting a (
*** Error 48 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 70(14,17): Expecting a (
*** Error 48 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 70(18,21): Expecting a (
*** Error 48 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 71(4,9): Expecting a (
*** Error 43 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 71(10,11): Expecting a declaration
*** Error 43 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 71(11,12): Expecting a declaration
*** Error 43 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 72(4,7): Expecting a declaration
*** Error 43 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 72(7,8): Expecting a declaration
*** Error 48 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 72(9,10): Expecting a (
*** Error 43 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 72(11,12): Expecting a declaration
*** Error 43 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 72(12,13): Expecting a declaration
*** Error 48 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 72(13,14): Expecting a (
*** Error 43 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 72(15,17): Expecting a declaration
*** Error 43 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 72(17,18): Expecting a declaration
*** Error 48 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 72(18,19): Expecting a (
*** Error 43 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 72(21,22): Expecting a declaration
*** Error 28 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 72(34,38): Expecting an identifier
*** Error 43 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 72(39,40): Expecting a declaration
*** Error 32 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 73(15,18): Expecting a , or )
*** Error 43 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 73(19,23): Expecting a declaration
*** Error 43 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 73(23,24): Expecting a declaration
*** Error 43 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 73(24,25): Expecting a declaration
*** Error 32 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 74(15,24): Expecting a , or )
*** Error 48 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 74(25,27): Expecting a (
*** Error 43 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 74(28,29): Expecting a declaration
*** Error 32 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 75(15,24): Expecting a , or )
*** Error 48 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 75(25,27): Expecting a (
*** Error 43 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 75(28,29): Expecting a declaration
*** Error 32 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 76(15,24): Expecting a , or )
*** Error 48 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 76(25,27): Expecting a (
*** Error 43 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 76(28,29): Expecting a declaration
*** Error 32 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 77(15,24): Expecting a , or )
*** Error 48 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 77(25,27): Expecting a (
*** Error 43 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 77(28,29): Expecting a declaration
*** Error 43 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 78(4,6): Expecting a declaration
*** Error 43 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 78(6,7): Expecting a declaration
*** Error 48 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 78(7,10): Expecting a (
*** Error 43 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 78(12,13): Expecting a declaration
*** Error 43 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 78(13,14): Expecting a declaration
*** Error 43 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 78(14,15): Expecting a declaration
*** Error 28 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 79(18,22): Expecting an identifier
*** Error 43 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 79(23,24): Expecting a declaration
*** Error 43 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 80(4,5): Expecting a declaration
*** Error 43 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 80(5,9): Expecting a declaration
*** Error 43 "C:\ProgramasPics_C\18f46k22\SDCardSPI.c" Line 80(9,10): Expecting a declaration
      100 Errors,  0 Warnings.
Halting build on first failure as requested.
BUILD FAILED: Fri Feb 03 16:41:27 2012

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 #5 en: 03 de Febrero de 2012, 14:50:11 »
Suky, no me contestes aun!!! Acabo de encontrar tu articulo sobre librerias genericas en C, Espero que sea la respuesta para dejarme compilar. Si no soy capaz, te lo dire por aqui :oops:
Visita mi web sobre electronica,fisica,mecanica y demas temas....

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

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Micro SD FAT16 creando archivos textO
« Respuesta #6 en: 03 de Febrero de 2012, 15:21:41 »
 :shock: Me olvide de probarlo en CCS (ya lo tengo olvidado) y lo probé solo en los compiladores de Microchip. Si no te funciona, déjame ver que hay que agregar. El tema está en que en CCS hay que incluir los *.c y no los *.h  :?
No contesto mensajes privados, las consultas en el foro

Desconectado Diego Gonzalez

  • PIC18
  • ****
  • Mensajes: 323
    • Visita mi web sobre electronica,fisica,mecanica y demas temas....
Re: Micro SD FAT16 creando archivos textO
« Respuesta #7 en: 03 de Febrero de 2012, 15:25:58 »
Esque estoy rastreando un poco para entender como va eso de usar librerias genericas y no me compila ni siquiera sin tener nada puesto. En la carpeta del proyecto meto todos los .c y .h y tengo este codigo:

Código: [Seleccionar]
#include <18f46k22.h>  //archivo de cabecera

#fuses HSH,MCLR,NOWDT,NOPROTECT,NOLVP,NOPBADEN,NODEBUG,NOPLLEN,NOFCMEN // fuses  configurados
#use delay(clock=8M)     // Clock en la entrada CPU,Cristal externo 12Mhz*pll4=48Mhz OJO PLL enabled
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) //fuses  configurados
#define (__PCH__)  [b]--------> ¿esto hay que ponerlo asi? o directamente segun el chip seleccionado en Configure->Select Device del Mplab ya sirve[/b]
#include "GenericTypeDefs.h"

//#include "FAT16.h"


UINT8 Texto[512]="Texto Creado con PIC....\r\n";

void main(){}

y me da este error:

Código: [Seleccionar]
Clean: Deleting intermediary and output files.
Clean: Deleted file "FAT_16f46k22.ESYM".
Clean Warning: File "C:\ProgramasPics_C\18f46k22\FAT_16f46k22.o" doesn't exist.
Clean: Deleted file "FAT_16f46k22.ERR".
Clean: Done.
Executing: "C:\Archivos de programa\PICC\Ccsc.exe" +FH "FAT_16f46k22.c" +DF +LN +T +A +M +Z +Y=9 +EA
*** Error 28 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 189(11,12): Expecting an identifier
*** Error 43 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 209(12,13): Expecting a declaration
*** Error 48 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 209(14,24): Expecting a (
*** Error 48 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 209(25,36): Expecting a (
*** Error 48 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 209(37,45): Expecting a (
*** Error 48 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 209(46,55): Expecting a (
*** Error 34 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 271(231,241): Unknown type
*** Error 48 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 271(242,245): Expecting a (
*** Error 48 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 272(9,10): Expecting a (
*** Error 43 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 272(13,14): Expecting a declaration
*** Error 43 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 273(18,19): Expecting a declaration
*** Error 43 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 273(19,20): Expecting a declaration
*** Error 34 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 311(9,13): Unknown type
*** Error 48 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 311(14,16): Expecting a (
*** Error 48 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 312(14,18): Expecting a (
*** Error 43 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 312(16,17): Expecting a declaration
*** Error 43 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 313(5,6): Expecting a declaration
*** Error 48 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 313(7,11): Expecting a (
*** Error 28 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 320(11,12): Expecting an identifier
*** Error 34 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 323(9,17): Unknown type
*** Error 48 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 323(18,21): Expecting a (
*** Error 48 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 324(18,26): Expecting a (
*** Error 43 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 324(22,23): Expecting a declaration
*** Error 43 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 325(5,6): Expecting a declaration
*** Error 48 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 325(6,15): Expecting a (
--- Info 300 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 208(7,11): More info:   First Declaration of bits
*** Error 31 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 360(7,11): Identifier is already used in this scope
*** Error 43 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 361(12,13): Expecting a declaration
*** Error 48 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 361(14,24): Expecting a (
*** Error 48 "C:\ProgramasPics_C\18f46k22\GenericTypeDefs.h" Line 361(25,34): Expecting a (
      29 Errors,  0 Warnings.
Halting build on first failure as requested.
BUILD FAILED: Fri Feb 03 19:21:44 2012

Entonces ya no se si se debe a que tengo mal configurado algo (
Visita mi web sobre electronica,fisica,mecanica y demas temas....

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

Desconectado jukinch

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 608
Re: Micro SD FAT16 creando archivos textO
« Respuesta #8 en: 03 de Febrero de 2012, 18:33:55 »
Hola Diego y Suky:

Con relación a esto que preguntas:
#define (__PCH__)  --------> ¿esto hay que ponerlo asi?

En este trozo de código que pongo más abajo Suky utiliza directivas de preprocesado.
Código: C
  1. // CCS
  2. #if defined(__PCH__)
  3.    UINT8 BufferFAT[512];
  4. #endif
  5. // C18
  6. #ifdef __18CXX
  7.     #pragma udata BufferCARD
  8.     UINT8 BufferFAT[512];
  9.     #pragma udata
  10. #endif
  11. // C30 y C32
  12. #if defined (__C30__) || defined (__PIC32MX__)
  13.     UINT8 __attribute__ ((aligned(4))) BufferFAT[512];
  14. #endif

El compilador procesa eso antes que tu código, generando así una compilación condicional.

Suky logró hacer que el código de la librería sea genérico gracias a ello. En ese caso en particular mediante la directiva #if y la directiva #define hizo que el compilador pueda elegir que trozo de código compilar de manera automática, permitiendo que elija de acuerdo al compilador que se esta utilizando.

Esto:     __PCH__       es un identificador predefinido por el compilador CCS (página 91 del manual http://www.ccsinfo.com/downloads/ccs_c_manual.pdf).  Ya está predefinido así. Y permite que el compilador detecte que se está usando el compilador de la gama alta de pic18.

Los identificadores predefinidos de ccs son estos:
PCB es el compilador básico, para la linea PIC12.
PCM es el compilador para la linea media, o sea PIC16 .
PCH es para la linea alta donde están los PIC18

y los de c18 c30 o c32:

__18CXX es el compilador c18
(__C30__) es el compilador c30
(__PIC32MX__) y este para c32

        En síntesis, creo que no deberías poner:

#define (__PCH__)

dejá que el compilador elija el código por si sólo.
             Saludos.
                   Jukinch

"Divide las dificultades que examinas en tantas partes como sea posible para su mejor solución." -René Descartes

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Micro SD FAT16 creando archivos textO
« Respuesta #9 en: 03 de Febrero de 2012, 22:25:28 »
Muy bien explicado jukinch.  ;-)


Diego, déjame ver entre estos días de hacerme un tiempito para probar en CCS (por lo menos que compile, hardware para probarlo no dispongo) y te comento  :tongue:


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

Desconectado Diego Gonzalez

  • PIC18
  • ****
  • Mensajes: 323
    • Visita mi web sobre electronica,fisica,mecanica y demas temas....
Re: Micro SD FAT16 creando archivos textO
« Respuesta #10 en: 04 de Febrero de 2012, 09:42:23 »
Gracias por la explicacion Jukinch, cuando no funciona algo soy capaz de probarlo todo jejje, pero la verdad me imaginaba que fuera como realmente dices. Voy a tratar de entender mas esto de librerias genericas que me parece muy interesante. Ahora estoy con ccs y PCH, pero tengo pensado en breve ponerme con unos pics32 y comenzar a usar lo aprendido con sensores sd pantallas... :D.

Muchas gracias Suky, no te preocupes, tratare de intentar hacerlo funcionar con la version 1.5 que era solo de ccs.  Ademas probare con otros pics porsiacaso. por cierto uso ccs 3.124 que el 3.120 tenia bug con el spi del 18f46k22.

Pd: aunque sea un poco offtopic, alguno de vosotros ha realizado alguna prueba con archivos de sonido almacenados en SD? Es otra area que queria investigar. Me pondre a buscar informacion por internet. Esto se pone emocionanteeee  :-/

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

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

Desconectado jukinch

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 608
Re: Micro SD FAT16 creando archivos textO
« Respuesta #11 en: 04 de Febrero de 2012, 11:12:24 »
         Como práctica para entender las librerías recomiendo un truco que uso. Imprimirlas en papel y luego pintar con un resaltador lo que el compilador va a seleccionar para el compilador específico que usemos. Eso permite entender todo el código. Sinó entre tantos #if #endif al menos yo me pierdo.  :D
         Buen fin de semana.
             Jukinch
"Divide las dificultades que examinas en tantas partes como sea posible para su mejor solución." -René Descartes

Desconectado tannke

  • PIC16
  • ***
  • Mensajes: 176
Re: Micro SD FAT16 creando archivos textO
« Respuesta #12 en: 04 de Febrero de 2012, 17:12:44 »

Pd: aunque sea un poco offtopic, alguno de vosotros ha realizado alguna prueba con archivos de sonido almacenados en SD? Es otra area que queria investigar. Me pondre a buscar informacion por internet. Esto se pone emocionanteeee  :-/

En mi último proyecto que realicé (1º utilizando sd's) hice precisamente eso, lo utilizo para gravador de llamadas telefónicas. Conectado a la toma de telefono, extraigo el sonido, al descolgar el telefono lo detecto con el pic (18F2550 el que tenía a mano que andara rápido) y empiezo el muestreo a 8KHz y el volcado a la sd, lo hago directamente a formato WAV mono a 8Khz 8bits. Para sonido telefónico es suficiente ya que creo (según leí) es masmenos la calidad de sonido telefónica.
El formato wav es muy sencillo una cabecera de 58bits y el resto ya los datos de sonido.

El proyecto esta al 95% funcional, se escucha perfectamente solo que cada 10/15 segundos me da un saltito, creo que pierdo por ahi el volcado de algún buffer. (Utilizo 2 buffers de 512bytes)

http://www.ucontrol.com.ar/forosmf/programacion-en-c/generar-wav-con-pic/ Aqui nuestro amigo suky nos hace una buena explicación
http://www.sonicspot.com/guide/wavefiles.html mas información sobre el formato
« Última modificación: 04 de Febrero de 2012, 17:16:48 por tannke »

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Micro SD FAT16 creando archivos textO
« Respuesta #13 en: 04 de Febrero de 2012, 18:23:11 »
         Como práctica para entender las librerías recomiendo un truco que uso. Imprimirlas en papel y luego pintar con un resaltador lo que el compilador va a seleccionar para el compilador específico que usemos. Eso permite entender todo el código. Sinó entre tantos #if #endif al menos yo me pierdo.  :D
         Buen fin de semana.
             Jukinch

Es una buena idea, también los entornos inteligentes permiten seleccionar la salida del preprocesador directamente como archivo texto, es uy úitl cuando estas probando macros.

Saludos !

Desconectado jukinch

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 608
Re: Micro SD FAT16 creando archivos textO
« Respuesta #14 en: 04 de Febrero de 2012, 19:15:27 »
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
"Divide las dificultades que examinas en tantas partes como sea posible para su mejor solución." -René Descartes