Dann versuch es doch mal mit der einfachen Version, ohne AVR-DOS.
Ich weiß nicht, wieviel dein sonstiger Code ausmacht, aber der hier inklusive Lesen und Schreiben von 1000 Sektoren und Ausgabe auf den
UART belegt gerade mal 1492 Byte, also noch viel Platz bis 4K.
Code:
$regfile = "M128def.dat"
$crystal = 16000000
$baud1 = 115200
Open "Com2:" As Binary As #1
Enable Interrupts
Dim Mmc_error As Byte
Dim In_ptr As Word ' Address-Pointer for read
Dim In_sect As Long
Dim In_buffer As String * 512
Print #1 , "Wait for Drive"
$include "Config_MMC.bas"
'Hier werden als Test die ersten 1000 Sektoren der Karte eingelesen und auf den UART ausgegeben und dann wieder auf die SD geschrieben.
In_ptr = Varptr(in_buffer)
If Gbdriveerror = 0 Then
Mmc_error = Driveinit()
If Mmc_error = 0 Then
Print #1 , "Driveinit Ok. "
For In_sect = 0 To 1000
Mmc_error = Drivereadsector(in_ptr , In_sect)
If Mmc_error = 0 Then
Print #1 , "ReadSector(" ; In_sect ; ") ok." 'Zum Inhalt drucken, Kommentare entfernen !!!!!!!!!!
Print #1 , In_buffer 'Dann wird es aber langsamer, 115200 baud beim übertragen
Mmc_error = Drivewritesector(in_ptr , In_sect)
Else
Print #1 , "Error during ReadSector(" ; In_sect ; ") : " ; Mmc_error
End If
Next In_sect
Else
Print #1 , "Error during Driveinit(): " ; Mmc_error
End If
End If
End
Hierbei werden die Sektoren direkt geschrieben. Das reicht für die Ein- und Ausgabe im µC.
Wenn du eine Datei in Windows sehen willst, legst du vorher eine dummy-Datei der benötigten Größe an und schreibst dann deren Sektoren.
Gruß
Rolf
Lesezeichen