Saludos a la gente del foro ...estoy trabajando con una MMC conectada a un micro 18F452 , la idea es recibir datos via conexion RS232 y guardarlos en un archivo de texto que pueda ser leido en la PC . Gracias a toda la informacion que fui encontrando aca logre la conexion con la MMC , implementar la FAT16 y generar un archivo de texto escribiendo la respectiva entrada en el directorio raiz ,las FAT y sectores de datos ... donde tengo el problema ? pues bien ...todo funciona de maravilla siempre y cuando encienda la fuente con la MMC colocada en el zocalo . El zocalo que uso tiene una patita que se usa para identificar cuando la MMC esta presente ...tal es asi que dentro de mi programa reviso esa condicion , entonces si se detecta que se inserto la MMC corre el codigo de inicializacion , pero como dije antes la MMC no se pone en estado IDLE.
PRUEBAS REALIZADAS:
1) Simulo la extraccion e insercion de la MMC conectando y desconectando el pin que reconoce la presencia en forma manual (dejando la MMC en el zocalo ) . En este caso se inicializa correctamente ,con lo que aseguro que este segmento de codigo funciona
2) Añadi al circuito un transistor de corte en la alimentacion de la MMC controlado por el micro . Cuando se detecta la precencia el micro corta la alimentacion , espera 500ms , vuelve a alimentar y a partir de ahi corre la inicializacion (esto para evitar que en el momento de energizar aparezca algun ruido que la deje en un estado raro ) sinembargo tampoco se inicializa de esta manera .
3) He agregado retardos , mas pulsos de clock en la inicializacion , he deshabiltado SPI antes de alimentar la memoria dejando en estado bajo todos los pines conectados a ella , he asegurado que la frecuencia de trabajo SPI sea de 312khz en el momento de la inicializacion .....nada a funcionado ...la unica forma en que se inicializa es cortando la fuente
He leido las especificaciones y recomendaciones sobre las MMC y por lo que entiendo el comando CMD0 (reset) que es parte de la inicializacion deberia ser reconocido en cualquier estado si se lo envia con el CRC ...sinembargo la respuesta que obtengo es 0XFF en lugar de la esperada 0x01 ....El corte que hago con el transistor deberia dejar la MMC en el estado inicial ....
El codigo que utilizo en la inicializacion es el mismo que esta posteado en todos lados mmc_init() y funciona bien ya que se ejecuta correctamente al encender la placa ....
Bueno espero que puedan ayudarme o darme alguna idea ...ya que tengo todo funcionando y falta este detalle que parece una pavada pero me esta volviendo loco ....