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

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

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Comenzando con memorias SD/MMC. Librería a nivel hardware.
« Respuesta #105 en: 27 de Julio de 2010, 12:05:38 »
Los he puesto a 48 MHz en los 18Fx550 y a 40 MHz los 18Fx620.

Suky, ¿has cambiado la configuración de algo para los 48mhz? Estoy usando un 18f2550  y he puesto los fuses para que trabaje a 48MHz. Lo que no sé es si la configuración que tienes hecha en el ejemplo de 40MHz vale o la tengo que cambiar.

Un saludo!!

No se debería hacer ningún cambio, o por lo menos yo no lo he hecho.

Avances  :-/ :-/


HE probado el código que me pasaste hace tiempo de CCS y funcionan todas las tarjetas, tanto las MMC como las SD. Estas últimas eran las que no conseguí hacer funcionar Y NO HE HECHO NADA!!!!

Creo que era culpa de una soldadura fría, por eso funcionaba alguna que otra vez....

Ahora, ¿porqué no lo consigo con la fat?

Me voy a poner con ccs y ya miraré el c18...

Excelente!  :-/ Me gustaría que compares con la ultima versión, agregué más demora en la espera de una respuesta por parte de la memoria, o sea do{}while(i<200) quedo como do{}while(i<2000).

por cierto suky una gran web!!!!

me has aclarado las dudas que me quedaban en este tema....

Voy a agregar un enlace de la mía a la tuya (si no te importa)

Claro que no hay problemas, y yo hago lo mismo!  :mrgreen:


Saludos!

No contesto mensajes privados, las consultas en el foro

Desconectado Slalen

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1079
    • Página web personal de Guillermo Herrero González
Re: Comenzando con memorias SD/MMC. Librería a nivel hardware.
« Respuesta #106 en: 27 de Julio de 2010, 12:33:57 »
pues he visto que con el de las fat me manda por el 232   printf("\r\n--> Se inicia sincronizacion\r\n"); y ya no me envía          printf("\r\n--> Se envia CMD0 (Se desactiva SD Card)\r\n\r\n"); como si se resetease y tengo el wdt desactivado....

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Comenzando con memorias SD/MMC. Librería a nivel hardware.
« Respuesta #107 en: 29 de Julio de 2010, 19:20:19 »
pues he visto que con el de las fat me manda por el 232   printf("\r\n--> Se inicia sincronizacion\r\n"); y ya no me envía          printf("\r\n--> Se envia CMD0 (Se desactiva SD Card)\r\n\r\n"); como si se resetease y tengo el wdt desactivado....


:undecided: Se resetea, o sale de la rutina pero no hay otro printf que indique ha sucedido eso? Es raro que iniciandose con el otro código falle en este  :?

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

Desconectado Slalen

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1079
    • Página web personal de Guillermo Herrero González
Re: Comenzando con memorias SD/MMC. Librería a nivel hardware.
« Respuesta #108 en: 30 de Julio de 2010, 03:17:26 »
Envía printf("\r\n--> Se inicia sincronizacion\r\n"); y se reinicia la rutina SDCard_init

Es algo muy extraño

Desconectado msegredo

  • PIC10
  • *
  • Mensajes: 7
Re: Comenzando con memorias SD/MMC. Librería a nivel hardware.
« Respuesta #109 en: 30 de Julio de 2010, 07:59:12 »
Te comento que realice un nuevo hardware con la adecuación de los niveles de tensión mediante buffer 74hc125, trabajando el interface SPI a 10 MHz sin ningun problema. El único cambio que hice fue en las esperas por alguna respuesta (while(i<100)) lo subi a 2000, y pude iniciar SD Card, microSD Kingston y SanDisck de 512Mb, 1 Gb y 2 Gb sin problemas!  :-/


Saludos!

Podes subir el circuito? muchas gracias. A partir de que velocidad sería necesario? Gracias una vez mas

Desconectado Slalen

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1079
    • Página web personal de Guillermo Herrero González
Re: Comenzando con memorias SD/MMC. Librería a nivel hardware.
« Respuesta #110 en: 30 de Julio de 2010, 08:13:50 »
Suky, te puedo decir exáctamente lo que hace

Código: [Seleccionar]
  #if RS232_DEBUG
         printf("\r\n--> Se envia CMD0 (Se desactiva SD Card)\r\n\r\n");
   #endif

   i=0;
   do{
      if(SDCard_send_command(CMD0,0x00,&Respuesta)==0){
         return(0);        // Si se recibe 0 error por timeout.-
      }else{i++;}   
   }while((Respuesta.b0==0x00) && i<2000);
   if(i>=2000){return(0);} // Timeout esperando desactivación de SD Card.

salta en el return(0);

msegredo lo tienes aqui

Desconectado msegredo

  • PIC10
  • *
  • Mensajes: 7
Re: Comenzando con memorias SD/MMC. Librería a nivel hardware.
« Respuesta #111 en: 30 de Julio de 2010, 23:53:27 »
Suky, te puedo decir exáctamente lo que hace

Código: [Seleccionar]
  #if RS232_DEBUG
         printf("\r\n--> Se envia CMD0 (Se desactiva SD Card)\r\n\r\n");
   #endif

   i=0;
   do{
      if(SDCard_send_command(CMD0,0x00,&Respuesta)==0){
         return(0);        // Si se recibe 0 error por timeout.-
      }else{i++;}   
   }while((Respuesta.b0==0x00) && i<2000);
   if(i>=2000){return(0);} // Timeout esperando desactivación de SD Card.

salta en el return(0);

msegredo lo tienes aqui

muchas gracias Slalen, entonces se utilizan 2  74HC125, uno para los niveles 3.3 y otro para dejar los niveles en 5. Comunicación par un lado y para el otro.

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Comenzando con memorias SD/MMC. Librería a nivel hardware.
« Respuesta #112 en: 31 de Julio de 2010, 12:29:15 »
Suky, te puedo decir exáctamente lo que hace

Código: [Seleccionar]
  #if RS232_DEBUG
         printf("\r\n--> Se envia CMD0 (Se desactiva SD Card)\r\n\r\n");
   #endif

   i=0;
   do{
      if(SDCard_send_command(CMD0,0x00,&Respuesta)==0){
         return(0);        // Si se recibe 0 error por timeout.-
      }else{i++;}   
   }while((Respuesta.b0==0x00) && i<2000);
   if(i>=2000){return(0);} // Timeout esperando desactivación de SD Card.

salta en el return(0);

msegredo lo tienes aqui


Entonces no se recibe la respuesta adecuada, o sea la memoria no pasa al estado IDLE según se testea, pero porque!  :( Partiendo del código que ya funciona puedes ir agregando algunas funciones de FAT, por ejemplo unicamente la de Init_FAT, para detectar el posible inconveniente   :undecided:


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

Desconectado Slalen

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1079
    • Página web personal de Guillermo Herrero González
Re: Comenzando con memorias SD/MMC. Librería a nivel hardware.
« Respuesta #113 en: 02 de Agosto de 2010, 02:35:36 »
Pero yo creo que no afectan las demás funciones!!

Me falla aquí:
Código: [Seleccionar]
BOOL SDCard_init(void){

   UINT8_VAL Respuesta;
   UINT16 i;
   
   TRIS_SD_CS=0;
   SD_CS=1;
   
   // Configuración del Módulo SPI.-
   InitSPI();
   
  #if RS232_DEBUG 
      printf("\r\n--> Se inicia sincronizacion\r\n");
   #endif   
   SD_CS=1;
   Delay_ms20();
   for(i=0;i<20;i++) WriteMedia(0xFF);   // Para sincronización.
   SD_CS=0;
   Delay_ms20();
   #if RS232_DEBUG
         printf("\r\n--> Se envia CMD0 (Se desactiva SD Card)\r\n\r\n");
   #endif

   i=0;
   do{
      if(SDCard_send_command(CMD0,0x00,&Respuesta)==0){
         return(0);        // Si se recibe 0 error por timeout.-
      }else{i++;}   
   }while((Respuesta.b0==0x00) && i<2000);

He ido modificando los intentos para dejarlos igual que en el otro código. Ahora mismo está exacto, pero no va....

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Comenzando con memorias SD/MMC. Librería a nivel hardware.
« Respuesta #114 en: 02 de Agosto de 2010, 11:13:07 »
Como dice Bruno, hay que ver si hay señal en los pines SPI de la memoria y el PIC, y sin son correctos, porque en la programación no se me ocurre que tocar  :?


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

Desconectado Slalen

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1079
    • Página web personal de Guillermo Herrero González
Re: Comenzando con memorias SD/MMC. Librería a nivel hardware.
« Respuesta #115 en: 03 de Agosto de 2010, 02:43:00 »
Tengo señal en el clock, en el chip select y en las líneas cardetect y writeprotect, pero no tengo ni en sdi ni sdo.

¿Pero de éstas líneas no se encarga el picc?

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Comenzando con memorias SD/MMC. Librería a nivel hardware.
« Respuesta #116 en: 03 de Agosto de 2010, 14:10:46 »
O sea que al realizar un spi_write se genera la señal de clock pero no hay señal en SDO? El compilador se encarga de configurar el módulo SPI, pero si hay algún tipo de error (bug de la versión) no vamos a tener los resultados deseados.  :?


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

Desconectado Slalen

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1079
    • Página web personal de Guillermo Herrero González
Re: Comenzando con memorias SD/MMC. Librería a nivel hardware.
« Respuesta #117 en: 04 de Agosto de 2010, 02:21:08 »
Suky, ¿qué versión usas tú?

Yo estoy con la 4.105

Si es eso, con C18 debería tirar.... o voy a probar

Desconectado Slalen

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1079
    • Página web personal de Guillermo Herrero González
Re: Comenzando con memorias SD/MMC. Librería a nivel hardware.
« Respuesta #118 en: 04 de Agosto de 2010, 05:56:38 »
Pues con c18 me hace lo mismo.... esto no lo entiendo!!

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Comenzando con memorias SD/MMC. Librería a nivel hardware.
« Respuesta #119 en: 04 de Agosto de 2010, 10:57:11 »
 :oops: Me vas a querer asesinar! Pensé que en la configuración de las librerías que deje en la página tenia Fosc/16 (Lo tenia presente de dejarlo así  :? ) para que en la configuración del SPI no se supere los 10 MHz máximos que según datasheet soporta  :oops: Pasa a Fosc/16 o SPI_FOSC_16, o también puedes configurar el microcontrolador a menor velocidad.

Disculpas  :oops:  Saludos!

No contesto mensajes privados, las consultas en el foro


 

anything