uControl
Septiembre 08, 2010, 07:54:38 *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión
 
   Inicio   Ayuda Buscar Ingresar Registrarse  
Páginas: « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 »   Ir Abajo
  Imprimir  
Autor Tema: Manejo de Memoria SD con CCS-Librería nivel Hardware + FAT16.-  (Leído 16531 veces)
0 Usuarios y 1 Visitante están viendo este tema.
gabriela_jimena
PIC10F
*
Desconectado Desconectado

Mensajes: 7


« Respuesta #150 : Marzo 14, 2010, 08:54:51 »

Hola todos.

 Felicitaciones por el trabajo aqui realizado.

 Me encuentro realizando un detector de CO2 y estoy guardando los datos en una sd card. Me esta ocurriendo lo mismo q gabriela, cuando pretendo guardar mas de 500 filas me tira q la tarjeta sd "no tiene formato"
 Me gustaria saber si alguien soluciono el problema, o si tu gabriela lo pudiste solucionar.
 Tambien quisiera saber de donde sacaron las librerias fat y quien es el autor.
 
 De antemano gracias

 Saludos.

 Hola jigsaw

 Es raro lo q sucede, pero lamento decirte que todavia no he podido solucionarlo, todavia estoy haciendo pruebas. Ojala resulte ya que solo me falta eso para concluir mi datalogger o sino tendre que cambiarme al mikroC, debido a que he leido por ahi que con ese lenguaje no da problemas de este tipo con la sd card. laugh

 Si logras dilucidar algo me avisas.

 La colombianita.

En línea
LMG_03
PIC10F
*
Desconectado Desconectado

Mensajes: 13


« Respuesta #151 : Marzo 22, 2010, 03:16:34 »

hola a todos, comentando sobre este tema yo tambien tengo problemas al almacenar una cantidad de datos mayores a 60 KBytes más o menos, estuve buscando la solucion y la verdad es que no entiendo bien por que hace eso ya que antes en las fats estan grabadas las direcciones de los cluster correspondientes y cuando pasa de esta direccion no graba nada, solamente FF FF y ahí da error al intentar abrir el archivo con el blok de notas o cualquier otro, ya que el tamaño del archivo si lo almacena bien.
Investigando un poco ví que en el MPlab que tiene una libreria para las SD al final me pareció ver que decia que al final de la grabacion de un bloque de datos le seguía mandando 80 ciclos de reloj a la memoria, la verdad que no prové si funciona pero cualquier cosa aviso, o si ya lo han solucionado por favor ahorrarme el trabajo!! jeje.

Saludos y gracias
En línea
bily
PIC10F
*
Desconectado Desconectado

Mensajes: 24


« Respuesta #152 : Abril 01, 2010, 01:05:17 »

Hola Saludos a todos..
he estado haciendo las pruebas.. con fat16..
Pero pasa los siguiente en simulacion no existen problemas.. no pierde el formato.. ni cosa similar he revisado el codigo paso a paso..
en Hardware lo que sucede aveces solamente graba una cuantos K de informacion y se piede el formato..
pero aveces como me sucede  grabe 8 horas continuas y no existe el problemas..
No me explico en que momento pierde enl formato..lo estoy monitoreando con RS232 y sigue agregando datos al archivo...Con normalidad..solo cuando lo finalizo lo pongo a leer en la PC me parece sin formato... duda duda... la duda es cuando pierde el formato...y porque duda.. si la error esta en la forma de agregar los datos no deberia  :dudapresentar problemas en el archivo por ejemplo elegible que no se pueda leer duda.. pero al contrario.. hace perder el formato en su totalidad.... cabezaso a la pared
Alguien ya logro solucionar el proble del formato.. haber si comparten la informacion...talvez se me escapo algo en el momento de revisar el codigo..
Bueno Saludos.. Grin
En línea
Tucutun
PIC10F
*
Desconectado Desconectado

Mensajes: 4


« Respuesta #153 : Abril 10, 2010, 11:45:12 »

Hola muxaxos, soy nuevo aki asi k espero me disculpen si cometo alguna sonsera con la imagenes y todo eso.

He seguido todo sobre este post, yo tambien estoy realizando un datalogger, y tambien he tenido las dificultades, hasta k al final me aparece tambien lo de la perdida del formato.

Probando y probando encontre k en la libreria Fat16_SDCard1.4 hay un segmento k lo que hace es grabar en el cluster 0, sector 0(si no me ekivoco), y ahi es donde se pierde el formato. Sucede cuando se escriben 512 veces cualquier numero de caracteres, con 511 no pasa nada.

Bueno al grano, lo que hize, (y me funciona bien, ya no tengo ese problema para nada), es borrar cierta parte de la libreria, especificamente la funcion FAT_WriteAddFile.

Código:
int1 FAT_WriteAddFile(int32 SecClusEnd,int32 SecClusNew,int16 NSecAddWrite,int16 AddDirWrite,
                      int32 SecFileDir,int16 AddDirSec,int32 Size,char *WriteString){
char BufferFAT[512], j;
int16 i;

   if(AddDirWrite==0){  ////////////////////////////////////////////////////////////////////////borren esto
      j=0;/////////////////////////////////////////////////////////////////////////////////////////borren esto
      do{   ///////////////////////////////////////////////////////////////////////////////////////borren esto
         i=0;///////////////////////////////////////////////////////////////////////////////////////borren esto
         do{///////////////////////////////////////////////////////////////////////////////////////borren esto
            BufferFAT[i++]=*WriteString++;/////////////////////////////////////////////////////borren esto
         }while((i<512)&&(*WriteString!='\0'));/////////////////////////////////////////////////borren esto
         if(i<512){/////////////////////////////////////////////////////////////////////////////////borren esto
            do{BufferFAT[i++]=0x00;}while(i<512);/////////////////////////////////////////////borren esto
         }//////////////////////////////////////////////////////////////////////////////////////////borren esto
         // Grabamos en la memoria.-////////////////////////////////////////////////////////////borren esto si desean
         if(SDCard_write_block(((int32)(SecClusNew+j)*512),BufferFAT)==0){///////////////borren esto
            return(0);//////////////////////////////////////////////////////////////////////////////borren esto
         }//////////////////////////////////////////////////////////////////////////////////////////borren esto
         j++;///////////////////////////////////////////////////////////////////////////////////////borren esto
      }while(*WriteString!='\0');/////////////////////////////////////////////////////////////////borren esto
   }else{//////////////////////////////////////////////////////////////////////////////////////////borren esto
      // leemos el último sector donde se encuntra el archivo para agregar datos.-
      if(SDCard_read_block(((int32)(SecClusEnd+NSecAddWrite)*512),BufferFAT)==0){
         return(0);
      }
      do{
         i=AddDirWrite;
         do{
            BufferFAT[i++]=*WriteString++;
         }while((i<512)&&(*WriteString!='\0'));
         if(i<512){
            do{BufferFAT[i++]=0x00;}while(i<512);
         }
         // Grabamos en la memoria.-
         if(SDCard_write_block(((int32)(SecClusEnd+NSecAddWrite)*512),BufferFAT)==0){
            return(0);
         }
         AddDirWrite=0; // Lo reseteamos para la proxima iteracion.-
         NSecAddWrite++;
      }while(NSecAddWrite<BPB_SecPerClus); // Mientras se complete el cluster.-
      // Si es necesario escribimos en el siguiente Cluster.-
      if(SecClusNew!=0){
         j=0;
         do{  
            i=0;
            do{
               BufferFAT[i++]=*WriteString++;
            }while((i<512)&&(*WriteString!='\0'));
            if(i<512){
               do{BufferFAT[i++]=0x00;}while(i<512);
            }
            // Grabamos en la memoria.-
            if(SDCard_write_block(((int32)(SecClusNew+j)*512),BufferFAT)==0){
               return(0);
            }
            j++;
         }while(*WriteString!='\0');
      }
   }////////////////////////////////////////////////////////////////////////////////////////////////Y no se olviden de borrar esto
   // Cambiamos tamaño del archivo.-
   if(SDCard_read_block(((int32)SecFileDir*512),BufferFAT)==0){
         return(0);
   }
   BufferFAT[AddDirSec+28]=make8(Size,0);
   BufferFAT[AddDirSec+29]=make8(Size,1);
   BufferFAT[AddDirSec+30]=make8(Size,2);
   BufferFAT[AddDirSec+31]=make8(Size,3);
   if(SDCard_write_block(((int32)SecFileDir*512),BufferFAT)==0){
         return(0);
   }
   return(1);
}

Lo que hago es borrar la parte del codigo responsable de mandarnos al diablo el formato, bueno espero les funcione cualquier cosa me avisan. Como repito esto hizo que me funcionara muy bien y pude grabar mas de 6000 lineas sin problemas y nada de aveces si a veces no, es definitivo. Saludos.

P.D.: Si he hecho alguna pavada me avisan, jeje.



Edit: Para visualizar el código....
« Última modificación: Abril 10, 2010, 01:18:14 por Suky » En línea
Suky
Administradores
PIC24F
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 2084


PIC32, voy por ti! >:(


WWW
« Respuesta #154 : Abril 10, 2010, 01:23:25 »

Esa parte que se borra es para agregar datos si se comienza desde la dirección 0x00 del sector, si mal no recuerdo  Insultos Es un poco más de código pero más rápido  Tongue Pero seguro que el erré en algo  cabezaso a la pared Gracias Tucutun !
En línea

  Neuquén-Argentina 

InfoPIC
Tucutun
PIC10F
*
Desconectado Desconectado

Mensajes: 4


« Respuesta #155 : Abril 10, 2010, 09:40:04 »

Claro, esa parte tiene una razon de ser, peor creo k le falta pasarle un valor a una de esas variables para que no se vayan al 0, yo decidi borrarlo porque la verdad ya no daba y me dolia la cabeza d tanto  cabezaso a la pared , jeje, por eso decidi borrarlo y ya irme a  bang , jaja, pero creo que tu lo puedes corregir mejor Suky, no lo dije antes pero, muchas gracias por la libreria. Fins aviat.

Tucutun.
En línea
bily
PIC10F
*
Desconectado Desconectado

Mensajes: 24


« Respuesta #156 : Abril 20, 2010, 06:52:49 »

holas
he probado con las modificaciones Tucutun
pasa lo siguiente el archivo se dana con esa modificacion, el archivo es corrupto..
No se puede abrir, pero eso si graba hasta 10k tamano de archivo..

Saludos
En línea
Tucutun
PIC10F
*
Desconectado Desconectado

Mensajes: 4


« Respuesta #157 : Abril 20, 2010, 09:34:35 »

Ummmm... k raro, voy a probarlo otra vez, pork a mi me funkó, eso de corrupto me asombra duda, seria cuestion de ver los demas parametros, tamaño de memoria, estructura de la memoria, tamaño de datos a grabar, etc, etc, mañana pruebo mas tiempo y les aviso, saludos muxaxos.
En línea
gabriela_jimena
PIC10F
*
Desconectado Desconectado

Mensajes: 7


« Respuesta #158 : Abril 23, 2010, 10:40:51 »

Hola tucutun.

 Mira probe tu modificacion y me resulto  Grin(probe con guardar 9000 datos). Te agradezco la informacion.
 Y tambien le doy las gracias a suky por la disponibilidad de la libreria  bang.

Saludos.
En línea
fame15
PIC10F
*
Desconectado Desconectado

Mensajes: 5


« Respuesta #159 : Abril 27, 2010, 06:08:52 »

Hola Gabriela podes subir los codigos que estas usando ya que es eso lo que necesito y me estoy  cabezaso a la pared no se que mas hacer, desde te agradeceria mucho, gracias por adelantado....
En línea
fame15
PIC10F
*
Desconectado Desconectado

Mensajes: 5


« Respuesta #160 : Abril 29, 2010, 05:47:02 »

Hola Suky en la libreria FAT16 una parte vos mencionas que se puede leer la fecha y la hora desde un ds1307, en mi proyecto yengo un ds1307 y quiero hacer justamente eso leer la fecha y la hora desde esa libreria y no puedo, como lo puedo hacer?Huh?Huh?Huh??
A por cierto esa libreria me salvo las papas esta de lujo, muy buen trabajo, FELICITACIONES........ rolleyes2
En línea
Suky
Administradores
PIC24F
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 2084


PIC32, voy por ti! >:(


WWW
« Respuesta #161 : Abril 30, 2010, 11:23:38 »

Hay que utilizar alguna libreria que trabaje con el ds... En la página del amigo Diego hay una...


Saludos!
En línea

  Neuquén-Argentina 

InfoPIC
Suky
Administradores
PIC24F
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 2084


PIC32, voy por ti! >:(


WWW
« Respuesta #162 : Mayo 03, 2010, 10:19:38 »

Buenas! Me puse a trabajar en los problemas que se habian presentado, disculpen la demora pero requierre tiempo hacer los debug y detectar los inconvenientes  Tongue

Se modifica el archivo SDCard_hard dado que al deshabilitar el debug se comentaba que la tarjeta no inicializaba  Wink

Luego en FAT16_SDCard se corrige el problema que existia en algunos casos al utilizar OpenAddFile. La modificación que propone Tucutun no es de todo correcta ya que corrompe el archivo.

También quiero presentarles un nuevo esquemático para control de la memoria que asegura poder trabajar a mayor velocidad y estabilidad:



En el primer mensaje actualizo todo  Wink


Saludos!

* SDCard_hard.c (14.15 KB - descargado 137 veces.)
* FAT16_SDCard.c (38.95 KB - descargado 114 veces.)
* Esquema SD Card.png (20.1 KB - descargado 407 veces.)
« Última modificación: Mayo 03, 2010, 02:33:27 por Suky » En línea

  Neuquén-Argentina 

InfoPIC
Moyano Jonathan
PIC12F
**
Desconectado Desconectado

Mensajes: 206


Con muchos proyectos y poca $


« Respuesta #163 : Mayo 03, 2010, 02:14:47 »

Suky sos un grande ...pero la inmagen la podrías portar a PDF con mayor resolución por que no se notan los pines de los conectores...es decir los nombres de las distintas señales.
Sin más que decirte..
exelente trabajo  bang
En línea
Suky
Administradores
PIC24F
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 2084


PIC32, voy por ti! >:(


WWW
« Respuesta #164 : Mayo 03, 2010, 02:34:29 »

Disculpas, el hosting donde subi la imagen la redujo  Angry Ahí la adjunte al mensaje enterior.


Saludos!
En línea

  Neuquén-Argentina 

InfoPIC
Páginas: « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 »   Ir Arriba
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.9 | SMF © 2006-2009, Simple Machines LLC XHTML 1.0 válido! CSS válido!

Página creada en 0.439 segundos con 22 consultas. (Pretty URLs adds 0.028s, 2q)