ich habe festgestellt, dass es Probleme beim Init. der MMC-Karte geben kann. Konkret tritt dies z.B. bei einer 32MB-Karte bei mir auf. (eine 128MB und 512MB läuft)
Nach einiger Suche habe ich ein Timing-Problem festgestellt:
Bei der Init. der MMC-Karte muss bei dem Init-Kommando (0x41) eine längere Zeit zw. ChipSelect und dem Schreiben der Takten gewartet werden. Dann klappt alles einwandfrei.
Ich habe die Funktion 'Write_Command_MMC' erweitert:
Auszug:
Code: Alles auswählen
[....]
MMC_Disable();
//sendet 8 Clock Impulse
Write_Byte_MMC(0xFF);
//set MMC_Chip_Select to low (MMC/SD-Karte Aktiv)
MMC_Enable();
if (*CMD == 0x41) for(unsigned int a=0;a<2050;a++) nop(); //Wartet eine kurze Zeit
//sendet 6 Byte Commando
for (unsigned char a = 0;a<0x06;a++) //sendet 6 Byte Commando zur MMC/SD-Karte
{
Write_Byte_MMC(*CMD++);
}
[....]
Ich werde diese Änderung zusammen mit der FAT16 mit Schreibunterstützung von Stephan mal in die Webserver-Quellen einbauen. Wird dann in Kürze unter http://www.mikrocontroller.com zu finden sein...
Gruß,
Ingo.