Autor Tema: Comenzando con memorias SD/MMC. Librería a nivel hardware.  (Leído 158556 veces)

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

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Comenzando con memorias SD/MMC. Librería a nivel hardware.
« Respuesta #60 en: 18 de Marzo de 2010, 18:35:45 »
Que macana !, es dificil diagnosticar problemas cuando no se cuenta con todo el material ( osciloscopio, debugger, etc ) Yo lo que haria seria seguir el arbol de funciones de ejecución y escribir una función que haga parpadear el LED tantas veces como el numero de error. De esa manera vas a saber en que lugar del código se plancha.

Saludos !

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Comenzando con memorias SD/MMC. Librería a nivel hardware.
« Respuesta #61 en: 18 de Marzo de 2010, 22:22:13 »
Hola Richi! eh! como vas a pedir disculpas por meterte? Si para eso es un foro esto, no? :)
Exactamente1  :lol:

mmm... Como dice Richi lo más dificil es establecer la comunicación con la memoria y como los pasos a seguir son sencillos uno no sabe para donde correr cuando falla. En el momento que comencé con esto fui variando las velocidades de SPI, le fui agregando clock de sincronización, des-habilitar la memoria en cada comando, no des-habilitarla, ect... Es una lucha!  :?

Y como dice nuevamente Richi, utiliza los led para saber hasta que punto hay comunicación o en realidad nunca la hay  :z)

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

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Comenzando con memorias SD/MMC. Librería a nivel hardware.
« Respuesta #62 en: 19 de Marzo de 2010, 18:58:26 »
Bueno, gracias por las sugerencias. La semana que viene le entro con todo...
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Comenzando con memorias SD/MMC. Librería a nivel hardware.
« Respuesta #63 en: 19 de Marzo de 2010, 19:00:30 »
Yo tengo el debugger spi de Microchip, si lo precisas te lo presto, Bruno.
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Comenzando con memorias SD/MMC. Librería a nivel hardware.
« Respuesta #64 en: 19 de Marzo de 2010, 19:18:26 »
Gracias Marcos! Espero que no sea necesario ;)

El problema va a ser que tambien deberia aprender a usar el debugger, no? :D :D
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Comenzando con memorias SD/MMC. Librería a nivel hardware.
« Respuesta #65 en: 19 de Marzo de 2010, 22:39:47 »
Yes, Yes !!! :D :D
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Chenao

  • PIC18
  • ****
  • Mensajes: 414
Re: Comenzando con memorias SD/MMC. Librería a nivel hardware.
« Respuesta #66 en: 20 de Marzo de 2010, 12:29:08 »
Saludos

Hola BrunoF te comento que ya llevo varios días cacharriando con la memoria y he encontrado errores muy parecidos a los que comenta el compañero RICHI777, la forma de descubrirlo fue el método que me sujuirio el compañero Suky cuando estaba en la etapa de simulación, y es ir probando función por función y así fue como detecte miles de errores  :D :D :D. La otra recomendación es hacer uno mismo las rutinas siguiendo alguna ayuda y así se va desmañarando la complicada memoria SD. Te hago una pregunta ¿Que marca de memoria estás utilizando?.
Un saludo desde Pereira - Colombia

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Comenzando con memorias SD/MMC. Librería a nivel hardware.
« Respuesta #67 en: 20 de Marzo de 2010, 13:51:49 »
Hola Chenao. Estoy usando una microSD marca SanDisk de 1Giga.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Comenzando con memorias SD/MMC. Librería a nivel hardware.
« Respuesta #68 en: 23 de Marzo de 2010, 04:47:33 »
Bueno. Estuve haciendo mas pruebas. Intentando debuggear el codigo.

El 95% de las veces, falla en la primera parte de la inicialización. Es decir acá:

Código: [Seleccionar]
do{
     if(SDCard_send_command(CMD0,0x00,Respuesta)==0){
        return(0);        // Si se recibe 0 error por timeout.-

y el 5% restante avanza un poquito:

Código: [Seleccionar]
do{
     if(SDCard_send_command(CMD0,0x00,Respuesta)==0){
        return(0);        // Si se recibe 0 error por timeout.-
     }else{i++;} 
  }while(((Respuesta&0x01)==0x00) && i<200);
  if(i>=200){return(0);} // Timeout esperando desactivación de SD Card.

Tengo hechos 3 divisores de tension conformados cada par por una resistencia de 1k en serie con cada linea y de alli 1.5k a GND.
Estoy alimentado la memoria con 3.3V directamente de la fuente, mientras que al uC lo alimento con 5V. Estoy trabajando @48Mhz. Pr obe el SPI en varios modos. Con divisor por 4 y por 16. Hacen lo mismo.

Yo me inclino hacia un error de hardware, pero vamos...que no es tan complejo, eh? Son 6 resistencias solamente... :5] :5]
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Comenzando con memorias SD/MMC. Librería a nivel hardware.
« Respuesta #69 en: 23 de Marzo de 2010, 08:15:56 »
Yo me inclino hacia un error de hardware, pero vamos...que no es tan complejo, eh? Son 6 resistencias solamente... :5] :5]

Si podes armarte una plaquita sería mejor, capaz sea el proto que te juega una mala pasada  :?
No contesto mensajes privados, las consultas en el foro

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Comenzando con memorias SD/MMC. Librería a nivel hardware.
« Respuesta #70 en: 23 de Marzo de 2010, 11:22:25 »
Hola Bruno, un paso importante donde se para. Podrias postear el código de la función SDCard_send_command para ver como esta implementado el corte por timeout ?

Saludos !

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Comenzando con memorias SD/MMC. Librería a nivel hardware.
« Respuesta #71 en: 23 de Marzo de 2010, 16:42:18 »
Yo me inclino hacia un error de hardware, pero vamos...que no es tan complejo, eh? Son 6 resistencias solamente... :5] :5]

Si podes armarte una plaquita sería mejor, capaz sea el proto que te juega una mala pasada  :?

Tengo una placa armada, pero como no me funciono ahi me pase al proto.

Hola Bruno, un paso importante donde se para. Podrias postear el código de la función SDCard_send_command para ver como esta implementado el corte por timeout ?

Saludos !


Hola RICHI. La libreria esta intacta como su autor(Suky) la ha hecho. Aca la dejo:

Código: C#
  1. /** \brief Envia comando a memoria SD.-
  2.    
  3.    \param cmd: Comando a enviar.-
  4.    \param arg: Argumento del comando.-
  5.    \return res: Respuesta al comando.-
  6.    \return  0 a ocurrido algún error, 1 todo ok.-
  7. */
  8. int1 SDCard_send_command(int cmd, int32 arg,int& res){
  9.  
  10.    int Trama[6]; // Comando, Argumento y CRC
  11.    int i,ResTmp;
  12.    // Construimos el paquete a enviar.-
  13.    Trama[0] = cmd | 0x40;
  14.    Trama[1] = make8(arg, 3);
  15.    Trama[2] = make8(arg, 2);
  16.    Trama[3] = make8(arg, 1);
  17.    Trama[4] = make8(arg, 0);
  18.  
  19.    if(cmd==0){
  20.       Trama[5]=0x95;
  21.    }else{  
  22.       Trama[5]=0xFF;
  23.    }
  24.    
  25.    for( i=0;i<16;i++) spi_xfer(SDCard,0xFF);
  26.    // Transfiere el paquete.-
  27.    spi_xfer(SDCard, Trama[0]);
  28.    spi_xfer(SDCard, Trama[1]);
  29.    spi_xfer(SDCard, Trama[2]);
  30.    spi_xfer(SDCard, Trama[3]);
  31.    spi_xfer(SDCard, Trama[4]);
  32.    spi_xfer(SDCard, Trama[5]);
  33.      
  34.    // // Se espera respuesta R1
  35.    i=0;
  36.    do{
  37.       ResTmp=spi_xfer(SDCard,0xFF);
  38.       i++;
  39.    }while((ResTmp&0x80)!=0 && i<200);// mientras no corresponda con 0xxxxxxx.-
  40.    if(i>=200){SDDeselect();return(0);}
  41.    res=ResTmp;  
  42.    #if RS232_DEBUG
  43.       printf("Repeticiones para respuesta de CmdXX: %u; Respuesta recibida:%u\r\n",i,Res);
  44.    #endif
  45.    return(1);
  46. }

"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Comenzando con memorias SD/MMC. Librería a nivel hardware.
« Respuesta #72 en: 23 de Marzo de 2010, 16:50:20 »
Yo probaria cambiando el valor 200 a un valor mucho mas grande para ver si viene por ahi. El tiempo que tarda el controlador interno de la tarjeta en inicializar todo no es nada despreciable.

Saludos !
« Última modificación: 23 de Marzo de 2010, 17:37:31 por RICHI777 »

Desconectado Chenao

  • PIC18
  • ****
  • Mensajes: 414
Re: Comenzando con memorias SD/MMC. Librería a nivel hardware.
« Respuesta #73 en: 24 de Marzo de 2010, 15:43:32 »
Saludos BrunoF, yo inicialmente la probé con una SD normalita que tenia un celular viejo y funciona bien, la implemente con un 16f877. Con la microsd en esas me encuentro, porque no intentas simularla en el proteus haber como sale, utilizando el debug SPI. La parte que más me saco canas fue la inicialización de la memoria lo solucione mandando los 3 comandos al mismo tiempo (resetear, inicializar y la configuración de la trama de escritura/leer), y fuí probando rutina por rutina hasta que me funciono. Espero que te halla servido los comentarios y seguire atento haber si se soluciona el problema.

Saludos.
Un saludo desde Pereira - Colombia

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Comenzando con memorias SD/MMC. Librería a nivel hardware.
« Respuesta #74 en: 24 de Marzo de 2010, 20:50:10 »
Hola muchachos.

Bueno. Aca estoy anclado a ver si logro hacer "algo".

Cambie el valor RICHI, como aconsejaste a 5000 pero sigue igual. No hay manera.

He estado estudiando el datasheet de las memorias SanDisk(uso una memoria SanDisk microSD de 512MB).

En la simulacion parecia que inicializaba bien. Ahora puse el SPI debugger y hay algo que no cierra en los datos enviados. Cuando envia CMD0 por ejemplo, que es el primer comando tengo entendido: se envia segun datasheet y lo que vi del codigo de Suky confirmandolo: 0x40 0x00 0x00 0x00 0x00 0x95.

Cuando envio eso, y miro el SPI  debugger del ISIS, aparece otra cosa: 0xA0 0x00 0x00 0x00 0x00 0x02.

Imagen:


link a imagen: http://img715.imageshack.us/img715/429/spidebug.png

Intente ver si era un problema del SPI debugger, pero ya he toqueteado todo y sigue valiendo eso. El resto de los comandos tampoco encajan con lo que deberian ser...

Seguire investigando...
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.