Dass sind ja wirklich viele Fragen.
Ich habe mal ein paar Antworten mit in den Text geschrieben.
Ich habe einen Mega128 und da läuft es sehr gut. Mit dem Mage32 wird es aber sicherlich auch gehen.Zitat von Hackes
AVR-DOS brauchst du nur, wenn du wirklich Files über den AVR anlegen willst. Ich habe mir eine 256MB große Dummy-Datei mit Windows auf die frisch formatierte Karte geschrieben, dann den ersten Block gesucht und von da ab meine 512-Byte Blöcke geschrieben. Das geht mit den Befehlen "DriveReadSector" und "DriveWriteSector".Zitat von Hackes
Was du für die oben beschriebene Art nur brauchst ist die "Config_MMC.bas" und die MMC.LIB. Alles andere kannst du dann vergessen.Zitat von Hackes
Ich habe Soft-SPI genommen, also beliebige Ports vom AVR. Ist zwar nicht ganz so schnell, aber ich schreibe nur einen Block alle 10 Minuten, da macht das nichts. In Config_MMC.bas musst du dafür "Const Cmmc_soft = 1" setzen, und dann deine verwendeten Ports angeben.Zitat von Hackes
Ja, das ist das eigentliche Problem. Ich habe einen 3,3V Spannungsregler aus einem alten Kartenleser ausgebaut, der auch gleich seinen MMC-Kartenhalter opfern musste. Die Signale laufen dann über einen 4050.Zitat von Hackes
Der MISO Ausgang der Karte ist direkt auf den mit 5V betrieben µC gelegt. Wird problemlos erkannt.
Die Daten werden nicht im Flash gesammelt, sondern im SRAM des Mega. Du musst also 512 Byte frei haben zum Sammeln. Man kann wohl auch kleinere Bereiche beschreiben, das habe ich allerdings noch nicht probiert.Zitat von Hackes
Die Karten kannst du nur begrenzt (100.000 mal?) beschreiben, also nicht immer auf dem gleichen Block schreiben. Bei mir läuft eine long-Variable hoch, die die aktuelle Sektor-Nr. hält. Problem ist bei Stromausfall, da musst du dir die Nr. irgendwo merken, z.B. im EEprom.
Ich habe eine 256MB MMC Karte genommen, die bei einem Navi dabei war. Mit der ging es ohne Probleme. Andere Karten funktionierten nicht so einfach, keine Ahnung warum.Zitat von Hackes
Wie oben schon gesagt, würde ich einfach eine Textdatei mit einem Windows Texteditor erstellen. Die kannst du dann mit allen Programmen lesen.Zitat von Hackes
Mein Programm wird dir nicht viel helfen, aber die eigentlichen Befehle sind nurZitat von Hackes
Dim Out_ptr As Word ' Address-Pointer für lesen und schreiben
Dim Out_sect As Long 'Sektor-Nr zum Schreiben
Dim Out_buffer As String * 512 ' Zwischenspeicher für die Daten
Dim Mmc_write_error As Byte
Out_ptr = Varptr(out_buffer) 'Pointer zeigt auf den erste Adresse von out_buffer
Gbdriveerror = Driveinit() und 'Gbdriveerror ist 0, wenn alles ok war, ansonsten Fehlercode
Mmc_write_error = Drivewritesector(out_ptr , Out_sect)
Gruß
Rolf
Lesezeichen