Hallo Harry,
ich war jetzt einfach mal neugierig und wollte das mal testen.
Meine Parameter sind:
XMEGA 384C3 mit 62MHz
Code
...
Define
OSCtype = int2MHz, PLLmul = 31, prescB = 1, prescC = 1, overdrive; // 62 MHz
SysTick = 10; // msec
StackSize = 384, iData;
FrameSize = 768, iData;
Scheduler = iData;
...
// MMC_Soft
FAT16 = MMC_Soft, IData; // SPI
F16_MMCport= PortB.7, PortB.3, PortB.2, PortB.4; // SPI
// /CS CLK MOSI MISO // SPI
F16_FileHandles = 4;
F16_DirLevels = 2;
F16_StrLen = 40; // only for file of text
F16_MMCspeed = superfast; // standard, slow, fast, superfast
...
Ich habe einen einfachen Systimer mit UpCount genutzt...
Code
...
DebugOut('Start SD-Test...');
ResetSysTimer(SDTestTimer);
SizeMBsdFree := F16_GetDiskFree;
sdZeitWert:= GetSysTimer(SDTestTimer);
DebugOut('SD Test Dauer: '+ IntToStr(sdZeitWert*10)+'ms');
...
Das Ergebnis:
Code
Start SD-Test...
SD Test Dauer: 0ms
Also dauert es nicht mal einen Systick (sprich unter 10ms), wenn ich mich nicht vertan habe.
Allerdings nutze ich in der Reihenfolge:
1. F16_DiskInit
2. F16_CheckDisk
3. F16_GetDiskSize
4. F16_GetDiskFree (hier ist der UpCounterTimer)
5. F16_GetDiskUsed
Achso, das ist die 16GB SD-Card aus China (von rolf)
Gruß
Thorsten