Me gustaría mucho poder ayudarte ya que me quiero meter con ese tema...pero tendrás que esperar una semana para que me ponga con ello, de todas maneras intentaré ayudarte en todo lo que pueda.
En principio yo me aseguraría si la inicialización de la mmc es correcta, como...
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// mmc_init() Initializes the unit.
//
// Paramaters: <none>
//
// Returns: 0 if initiated correctly
// Non-zero if initiation failed
//
// Special Info: This should be called immediately to initialize
// the multi media card.
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Pon sólo el código de inicialización y iguala una salida del PIC a la función mmc_init() de esta forma:
#include <18f4550.h>
#fuses HS,MCLR,NOWDT,NOPROTECT,NOPUT,NOBROWNOUT,NOPBADEN,NOLVP,NOCPD,NODEBUG,NOWRT,NOVRE
#use delay(clock=4000000)
#define LED PIN_C0
#define MMC_CS PIN_D4
#define MMC_CLK PIN_D6
#define MMC_DI PIN_D5
#define MMC_DO PIN_D7
#include "mmc_spi.c"
void main() {
while (TRUE)
{
if(mmc_init()==0)
LED PIN = 1;
else
LED PIN = 0;
}
}
Empieza poco a poco no quieras llegar y que todo funcione, esta es mi recomendación ya me diras si esto te funciona, ya que si tienes todo bien conectado con sólo este código se debería de iniciar tu MMC o SD card por spi.
Veo que tienes un cristal de sólo 4Mhz no sé si eso es suficiente para el funcionamiento de la MMC...ahí ando pez...