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á:
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:
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...
![redhot :5]](http://www.todopic.com.ar/foros/Smileys/default/redhot.gif)