Hallo zusammen, ich muss leider den 1000sten Thread zu dem Thema öffnen aber ich komme irgendwie auf keinen grünen Zweig. Ich programmiere mit dem CCS Compiler und möchte wie schon oben erwähnt eine mmc Karte ansprechen. Genauer gesagt möchte ich in eine Container Datei schreiben. Hierzu habe ich mir den Anfang der Datei im Hex Editor gesucht und versuche an diese Adresse zu schreiben. Nun habe Probleme mit meiner Schreibroutine: int mmc_write_block( int16 iAdrH, int16 iAdrL) { unsigned int16 i; output_bit(CS_MMC,0); delay_ms(1); mmc_send_command(0x58,0x4,0x2000,0xff); if((mmc_response(0x00))==1)return 3; //spi_read(0xff); //spi_read(0xff); spi_write(0xfe); //Start Byte for(i=0;i<512;i++) //Data { SPI_write('M'); } spi_write(0xff); // 2 byte CRC spi_write(0xff); if((SPI_READ(0xFF)&0x0F)!=0x05) return 2; if (mmc_response(0xff)==1)return 1; //mmc busy?? SPI_READ(0xff); output_bit(CS_MMC,1); SPI_READ(0xFF); return 0; } Die Routine gibt mir immer 0 zurück --> also müsste alles funktioniert haben, allerdings ist meine MMC Karte leer. Ich kann langsam nicht verstehen woran das liegt! Der Code ist ja fast identisch zu dem Microchip Beispielcode http://www.microchipc.com/sourcecode/ Die initialisierung vorher hat ohne Probleme geklappt.
So lange hats gebrauch aber ich hatte im letzten Monat nicht viel Zeit. Mein Programm schreibt jetzt auf die MMC, Allerdings allerdings nicht an die Stelle deren Adresse ich übergebe sondern 32 Blöcke (16kByte) vorher, das ganze wird ir langsam wirklich unklar So schaut meine Command Routine aus, da mach ich doch nichts falsch oder? void mmc_send_command(unsigned char ucCom1, unsigned int32 iArg, unsigned char ucCom2) { SPI_WRITE(ucCom1); spi_write(make8(iArg,3)); spi_write(make8(iArg,2)); spi_write(make8(iArg,1)); spi_write(make8(iArg,0)); SPI_WRITE(ucCom2); } anstatt jetzt auf Stelle 270336 zu schreiben wird auf 253852 geschrieben. Kann das irgendwie mit meiner Container Datei zusammen hängen? Wenn ich die Karte Frisch formatiere, tritt der gleiche Fehler auch auf! Gruß Stephan
Hallo, hab leider (noch) keinen Plan....bin aber dran ;) Hab hier einen PIC18F248 (also quasi identisch) an den ich eine SD Karte angeschlossen habe. Quäle mich gerade durch den Beispielcode von Microchip. Der läuft ja leider nicht direkt auf dem CCS Compiler (wäre ja auch zu schön gewesen ;) ) gruss Matze
Hallo Matze Schau doch mal unter http://www.microchipc.com/sourcecode/#mmc Hier findest du ganz unten auf der Webseite auch Code für den CCS Compiler. Vielleicht hilft dir das ja weiter. Ulrich Radig hat zu diesem Thema auch sehr viel geschrieben. Allerdings für einen anderen Controller, ein grosser Teil der Software müsste aber eigentlich direkt übertragebar sein. Beste Grüsse und ich hoffe, es hilft dir ein wenig weiter Geri
Dank Dir! Hab den Wald vor lauter Bäumen nicht gesehen.....war mir sicher, der Code für MMC wär nicht für den CCS Compiler gewesen und hab nicht weiter nachgesehen... gruss Matze
Hallo an alle hier. Ich habe da evtl. eine Hilfe, aber leider auch gleich eine Frage. :-) Dieser Code funktioniert bei älteren MMC's ohne Probleme. Aber wenn ich jetzt neuere Karten Kaufe, muss ich immer zuerst alle testen. Das klingt jetzt sicher bescheuert. Aber eigentlich sollten doch entweder alle oder gar keine MMC Karten funktionieren. Natürlich gehen alle Karten im Computer Card Reader. (Warum auch nicht....) Also mit diesem Code funktionieren: (Kingston 128MB, Pretec 32MB, Pretec 64MB, Sandisk 64MB) Nicht funktionieren tun (Alle derzeit auf dem Markt befindlichen SanDisk auch RS Versionen, extreMememory 128MB, Pretec 128> MB) Weitere habe ich nicht gekauft, da mir klar wurde das bei meinem Code was nicht stimmt. Aber eben ich probiere seit einer Woche mit meinem Oszi alles zu vergleichen (Computer Card Reader <-> Meine 18F452 Version). Ich bekomme beim CMD0 zwar meistens eine 1 zurück, aber das CMD1 bringt alles erdenkliche ausser die 0 zurück. Übrigens die Hardware ist wie üblich mit den Spannungsteilern 1k8 zu 3k3 auf 3.3 Volt gewandelt, DataOut DataIn mit 2k2 auf VC3 gelegt. Ich würde mich wirklich sehr freuen wenn hier jemand meine Sorgen teilen kann, oder sogar lösen kann. Vielen Dank
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.