Autor Tema: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A  (Leído 74968 veces)

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

Desconectado electroximo

  • PIC10
  • *
  • Mensajes: 36
Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
« Respuesta #15 en: 14 de Junio de 2007, 11:12:01 »
pues estoy intentando mejorar la recogida del byte de inicio del bloque que me manda la tarjeta para que no se quede bloqueada y lograr escribir y leer varios bloques .....como me ha sucedido lo del bloqueo de la seccion he tenido que pasarme a otro sitio de la memoria. Estoy un poco perdido, la verdad.. :mrgreen:

Desconectado NANO1985

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
    • Desarrollos Tecnologicos - Tucuman - Argentina
Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
« Respuesta #16 en: 14 de Junio de 2007, 11:35:32 »
viste esto??? , creo,... tambien hicieron una aplicacion de una memoria MMC a un micro.... pero la programacion la hacen a base de PBP,... incluso está publicado el código,.... pero no hay forma que yo entienda lo que dice ni profundizar demasiado en los pasos que dan.....jaja.. ese lenguaje no lo manejo.... fijate.... este es el link.

http://www.todopic.com.ar/foros/index.php?topic=15553.0
"La inquebrantable voluntad de vencer"
"hay dos cosas infinitas... El universo y la Estupidez humana" Albert Einstein
 "El sabio actua sin anhelos, permanece sosegado,... así no es afectado por el resultado de sus acciones sean éstas el triunfo o el fracaso"
- UNIVERSIDAD TECNOLOGICA NACIONAL - FACULTAD REGIONAL TUCUMAN -

Desconectado electroximo

  • PIC10
  • *
  • Mensajes: 36
Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
« Respuesta #17 en: 14 de Junio de 2007, 11:53:13 »
Si que lo habia visto , tampoco entiendo mucho , pero(como siempre hay un pero) yo he basado mi programa en la libreria a la que creo que se basa este link.

Desconectado electroximo

  • PIC10
  • *
  • Mensajes: 36
Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
« Respuesta #18 en: 14 de Junio de 2007, 12:00:00 »
mandame un trozo de tu codigo de escritura y le hecho un vistazo, a ver si me acuerdo un poquillo del asm.Me comentaste que habias encontrado un link de un manual , era el mismo que el que te comente yo?


Ah!! otra cosa sabes como se puede refrescar el foro para que aparezcan los ultimos escritos , es que me toca cerrar el explorer para poder verlos. :)

Desconectado NANO1985

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
    • Desarrollos Tecnologicos - Tucuman - Argentina
Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
« Respuesta #19 en: 14 de Junio de 2007, 12:03:54 »
MMMMMmmm tenés toda la razón.... igualmente vas más avanzado ..porque vos ya tenés las librerias de comunicacion SPI,... yo las tengo que hacer...  no me queda otra...  :?
mirá todavia sigo intentando la recepción del byte de grabacion exitosa (0x05)...
esto sería así verdad?...

(1)- despues de mandar los 512 byte encabezado por un byte de start (0xFE) mando dos CRC (0xFF)
(2)- y a continuacion espero (simpre mandando otro byte 0xFF) el byte de confirmacion de escritura (0x05)

esto es todo verdad??? porque ya intenté varias formas de capturarlo, pero como creo que la SD lo manda una sola vez se me complica un poco,... no se si tarda en mandarlo o es practicamente luego de los 2 bytes CRC,...

(yo actualizanzo el explorer simplemente se cargan los mensajes nuevos.....)
(aguantame un segundito,... ya te paso el codigo del micro... )
"La inquebrantable voluntad de vencer"
"hay dos cosas infinitas... El universo y la Estupidez humana" Albert Einstein
 "El sabio actua sin anhelos, permanece sosegado,... así no es afectado por el resultado de sus acciones sean éstas el triunfo o el fracaso"
- UNIVERSIDAD TECNOLOGICA NACIONAL - FACULTAD REGIONAL TUCUMAN -

Desconectado NANO1985

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
    • Desarrollos Tecnologicos - Tucuman - Argentina
Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
« Respuesta #20 en: 14 de Junio de 2007, 12:22:18 »
ACÁ VA LA FRACION DEL CÓDICO,... LA PRIMERA RUTINA ES LA QUE ENVIA EL COMANDO,... LA SEGUNDA ES LA QUE RECIBE LA RESPUESTA 0X00 DE LA TARJETA,... Y LA ULTIMA ES LA RUTINA EN SI DE ESCRITURA DE LA TARJETA... (CMD24)
"La inquebrantable voluntad de vencer"
"hay dos cosas infinitas... El universo y la Estupidez humana" Albert Einstein
 "El sabio actua sin anhelos, permanece sosegado,... así no es afectado por el resultado de sus acciones sean éstas el triunfo o el fracaso"
- UNIVERSIDAD TECNOLOGICA NACIONAL - FACULTAD REGIONAL TUCUMAN -

Desconectado electroximo

  • PIC10
  • *
  • Mensajes: 36
Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
« Respuesta #21 en: 14 de Junio de 2007, 12:27:48 »
se lo que te pasa ,si no te entido mal , es que mientras esperas tienes que mandar 0xFF por SD0 del micro para que el reloj del spi  no se pare mientras esperas contestacion .
Ya que si se para  la tarjeta no tiene reloj para contestar.
la respuesta que tiens que esperar  es un 0 antes de enviar el byte de start y el bloque  y crc despues hay que esperar un 5 ,

que es que ha llegado bien ; la respuestas posibles que te pueden llegar lo tienes en el punto --> 5.2.3.5Data response del manual que te he dicho.

Si tienes un osciloscopio podras ver perfectamente la contestacion de la tarjeta metiendo en un bucle cerrado el envio del comando.Vamos a ver es codigo.........

Desconectado NANO1985

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
    • Desarrollos Tecnologicos - Tucuman - Argentina
Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
« Respuesta #22 en: 14 de Junio de 2007, 12:45:39 »
BIEN ...ME ENTENDISTE BIEN... LUEGO DE MANDAR LOS DOS BYTES (0XFF) DEL CRC... MANDO UNA VEZ MAS EL 0XFF PARA QUE LA TARJETA SIGA TENIENDO CLOCK...
SUPUESTAMENTE CON ESTE ULTIMO BYTE DEBERIA RECIBIR EN EL BUFFER DEL MICRO (SSPBUF)... EL REGISTRO DE CONFIRMACION DE ESCRITURA,... SIENDO EL MISMO EL 0X05,... PERO COMO LO MANDA UNA SOLA VEZ SE ME HACE PRACTICAMENTE IMPOSIBLE DE VISUALIZAR EN EL OSCILOSCOPIO.... Y NO SÉ QUE ES LO QUE ME ESTÁ LLEGANDO.... NI EN QUE MOMENTO,...

EL BUCLE CERRADO LO HAGO CON EL COMANDO 24???... ES DECIR MANDO INFINITAS VECES LA RUTINA QUE TE PASÉ "WRITE_SD"???... PORQUE YA LO INTENTÉ Y LA sd NO CONFIRMA ESCRITURA....

"La inquebrantable voluntad de vencer"
"hay dos cosas infinitas... El universo y la Estupidez humana" Albert Einstein
 "El sabio actua sin anhelos, permanece sosegado,... así no es afectado por el resultado de sus acciones sean éstas el triunfo o el fracaso"
- UNIVERSIDAD TECNOLOGICA NACIONAL - FACULTAD REGIONAL TUCUMAN -

Desconectado electroximo

  • PIC10
  • *
  • Mensajes: 36
Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
« Respuesta #23 en: 14 de Junio de 2007, 13:00:53 »
vaya tela con el asm , es bastante farragoso, yo creo que el problema es que se para el reloj ,
 bien lo que no se como se hace es en asm . si quieres te pongo el trozo de mi codigo en c ? ,
bueno si has trabajado algo en c...

He leido tu mensaje, puedes hacerlo solo con el comando 24 si enviar nada esperando siempre el 0.


lo metes en un bucle infinito para que puedas verlo en el osciloscopio , o si no no lo podras ver.De esta manera podras ver si la tarjeta te contesta bien no vaya a ser que te mande una respuesta con error , normalmente la que me ha pasado a mi es el de comando ilegal , por una direccion erronea. Intentalo a ver que tal y me cuentas




Desconectado NANO1985

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
    • Desarrollos Tecnologicos - Tucuman - Argentina
Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
« Respuesta #24 en: 14 de Junio de 2007, 13:06:35 »
ok... voy a probar ahora y te comento....
dale...pasame algo de tu rutina en C.... asi le hecho un vistazo....
"La inquebrantable voluntad de vencer"
"hay dos cosas infinitas... El universo y la Estupidez humana" Albert Einstein
 "El sabio actua sin anhelos, permanece sosegado,... así no es afectado por el resultado de sus acciones sean éstas el triunfo o el fracaso"
- UNIVERSIDAD TECNOLOGICA NACIONAL - FACULTAD REGIONAL TUCUMAN -

Desconectado electroximo

  • PIC10
  • *
  • Mensajes: 36
Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
« Respuesta #25 en: 14 de Junio de 2007, 14:06:36 »
bueno , no lo tengo muy comentado , a ver que te parece :

         //..................escritura del bloque..................


         PORTFbits.RF0=0;         //OPERACIONES DE LA TARJETA ENCENDIDAS
         for(i=0;i<15;i++)           
            {                        //tiempo de espera para normalizacion
             WriteSPI1(0xFF);
             while(SPI1STATbits.SPITBF==1);
            }


         antes=5;
         // comando de escritura CMD24
         WriteSPI1(0x58);                //comando 24
         while(SPI1STATbits.SPITBF==1);   
         WriteSPI1(alta & 0x00FF);
         while(SPI1STATbits.SPITBF==1);                     
         WriteSPI1(media & 0x00FF);
         while(SPI1STATbits.SPITBF==1);
         WriteSPI1(baja & 0x00FF);
         while(SPI1STATbits.SPITBF==1);
         WriteSPI1(0x00);            //no varia nunca
         while(SPI1STATbits.SPITBF==1);
         WriteSPI1(0xFF);         //CRC PREESTABLECIDO
         while(SPI1STATbits.SPITBF==1);

                              //espero respuesta de la tarjeta
       do{
         WriteSPI1(0xFF);
         while(SPI1STATbits.SPITBF==1);
         while(DataRdySPI1()!=1);
         antes=ReadSPI1();
         }while(antes!=0x00);

         WriteUART2(antes);
   
         antes=8;            //para evitar problemas le pongo un numero
                           // que no puede enviar nunca

            WriteSPI1(0xFF);
            while(SPI1STATbits.SPITBF==1);
            WriteSPI1(0xFF);
            while(SPI1STATbits.SPITBF==1);

         //espero un poco antes de enviar los datos
 
            WriteSPI1(0xFE);      //BYTE DE COMIENZO
            while(SPI1STATbits.SPITBF==1);

            for(i=0;i<=511;i++){
            WriteSPI1(array);            //envio de datos
            while(SPI1STATbits.SPITBF==1);
            }

            WriteSPI1(0xFF);
            while(SPI1STATbits.SPITBF==1);
            WriteSPI1(0xFF);         //CRC PREESTABLECIDO
            while(SPI1STATbits.SPITBF==1);

               //espero la respuesta de la tarjeta
               // el and es para prevenir algun problema
               //ya que mis registros son de 16 bits


         do{

         while(DataRdySPI1()!=1){
            WriteSPI1(0xFF);
            while(SPI1STATbits.SPITBF==1);
            }
         antes=ReadSPI1();

         }while(((antes) & (0X000F))!=0x05);

         WriteUART2((antes) & (0X0F));



         PORTFbits.RF0=1;
            for(k=0;k<5;k++)
            {
               WriteSPI1(0xFF); //ciclos para que la tajeta termine
               while(SPI1STATbits.SPITBF==1);
            }


Lo siento me tengo que ir , nos vemos mañana  :mrgreen: , y me comentas como te ha ido . Adeu.

Desconectado NANO1985

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
    • Desarrollos Tecnologicos - Tucuman - Argentina
Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
« Respuesta #26 en: 14 de Junio de 2007, 14:12:42 »
HOLA..... A VER LE HECHO UN VISTAZO A TU CÓDIGO....

aprobecho para comentarte que despues de un gran repaso por la rutina que manda el comando 24 modifiqué un par de cosillas y ahi estoy recibiendo la confirmacion de escritura!!!!! 0x05!!!  :-/ bendito 5  :5} ....
ahh... pero te comento que tube que hacer un bucle.... es decir...
(aqui comienza el bucle) --- > manda el comando 24 luego espera 00, despues manda el startbyte los 514 bytes incluyendo los ultimos 2 de CRC, y manda nuevamente 0xFF para que no pare el clock, espero la respuesta 0x05, si no responde vuelvo mandar todo el comando 24 desde el principio,... es decir intento escribir repetidas veces... ahora... si responde 0x05 listo....salgo del bucle... y a otra cosa...

LO UNICO QUE NOTÉ ES QUE NO SIEMPRE TARDA LO MISMO EN ESCRIBIR.... HAY VECES QUE EL COMANDO ENTRA MUY RÁPIDO..... Y OTRAS VECES....QUE SE CLAVA... Y NO PASA NADA Y LO TENGO QUE RESETAR MANUALMENTE Y EMPEZAR DE NUEVO
"La inquebrantable voluntad de vencer"
"hay dos cosas infinitas... El universo y la Estupidez humana" Albert Einstein
 "El sabio actua sin anhelos, permanece sosegado,... así no es afectado por el resultado de sus acciones sean éstas el triunfo o el fracaso"
- UNIVERSIDAD TECNOLOGICA NACIONAL - FACULTAD REGIONAL TUCUMAN -

Desconectado El_Guitre

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1046
Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
« Respuesta #27 en: 15 de Junio de 2007, 01:30:56 »
gente aca les mando el programa que uso para acceder una mamoria SD, para leer y escribir, espero les sirva de ayuda. Saludos.

Desconectado NANO1985

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
    • Desarrollos Tecnologicos - Tucuman - Argentina
Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
« Respuesta #28 en: 15 de Junio de 2007, 09:52:43 »
muy buen aporte guitre!!! 8) pero yo no creo que lo pueda usar ya que ni idea de C  :z)  estoy programando en assembler asi que seguiré intentando,... GRACIAS NUEVAMENTE!!
"La inquebrantable voluntad de vencer"
"hay dos cosas infinitas... El universo y la Estupidez humana" Albert Einstein
 "El sabio actua sin anhelos, permanece sosegado,... así no es afectado por el resultado de sus acciones sean éstas el triunfo o el fracaso"
- UNIVERSIDAD TECNOLOGICA NACIONAL - FACULTAD REGIONAL TUCUMAN -

Desconectado NANO1985

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
    • Desarrollos Tecnologicos - Tucuman - Argentina
Re: LECTO-GRABADOR de tarjetas MMC , SD, MicroSD con pic 16F877A
« Respuesta #29 en: 15 de Junio de 2007, 09:54:58 »
Electróximo.... hoy me voy a demorar un poco en iniciar sesión.... pero voy a aparecer igual que ayer... mientras tanto hechale un ojo al codigo de el guitre... saludos
"La inquebrantable voluntad de vencer"
"hay dos cosas infinitas... El universo y la Estupidez humana" Albert Einstein
 "El sabio actua sin anhelos, permanece sosegado,... así no es afectado por el resultado de sus acciones sean éstas el triunfo o el fracaso"
- UNIVERSIDAD TECNOLOGICA NACIONAL - FACULTAD REGIONAL TUCUMAN -