Hallo Ich habe eine SD-Karte mit einer test.txt darauf. Diese habe ich geöffnet und deren Inhalt mittels einer Schleife in 2 neue txt-Dateien kopiert. Das selbe wollte ich dann auch mal mit einer MP3-Datei probieren. Doch nun das Problem: auf der SD-Karte befanden sich da die test.txt und die test.mp3. Doch mein Controller erstellte fleißig jedes Mal 2 txt-Dateien, auch als ich zuerst die test.txt löschte und danach sogar die Karte formatierte. Den Code hatte ich natürlich so angepasst, dass .mp3-Dateien erzeugt werden sollten. Wo könnten sich da alte Programmreste festgesetzt haben? Ich hab jetzt mal die Betriebsspannung gekappt. Danach funktionierte es. Ne Ahnung, womit das zusammenhängt? Dankeschön
Mit Code könnte man diese Programmreste natürlich besser sehen.
naja, ich nutze den FatFS Tiny von Chan. Und die Kopierroutine sieht dann so aus:
1 | int main(void){ |
2 | FRESULT result; |
3 | sei(); |
4 | |
5 | // PORTB=255; |
6 | // DDRB=255; |
7 | //DDRC=255; |
8 | DDR_SPI = (1<<DD_MOSI)|(1<<DD_SCK)|(1<<DD_SS); |
9 | |
10 | TCCR2=(1<<WGM21)|7; // 10,8kHz |
11 | OCR2=(XTAL_CPU/102400)-1; |
12 | TIMSK|=(1<<OCIE2); |
13 | |
14 | f_mount(0, &fs); |
15 | copy_file(); |
16 | for(;;); |
17 | } |
18 | |
19 | unsigned char copy_file(void) |
20 | { |
21 | WORD br, bw; // File R/W count |
22 | int Index=1; |
23 | char file[]="test.mp3"; |
24 | char filetype[]=".mp3"; |
25 | char prefix[]="Song"; |
26 | char filename[100]={}; |
27 | |
28 | |
29 | // Open source file on the drive 1 |
30 | f_open(&fsrc, file, FA_OPEN_EXISTING | FA_READ); |
31 | |
32 | for(Index;Index<3;Index++){ |
33 | |
34 | sprintf(filename, "%s%d%s",prefix,Index,filetype); |
35 | |
36 | // Create destination file |
37 | f_open(&fdst, filename, FA_CREATE_ALWAYS | FA_WRITE); |
38 | |
39 | // Copy source to destination |
40 | for (;;) { |
41 | res = f_write(&fdst, buffer, br, &bw); |
42 | if (res || bw < br) break; // error or disk full |
43 | res = f_read(&fsrc, buffer, sizeof(buffer), &br); |
44 | if (res || br == 0) break; // error or eof |
45 | } |
46 | |
47 | f_close(&fdst); |
48 | } |
49 | |
50 | // Close open files |
51 | f_close(&fsrc); |
52 | } |
der buffer hat eine Größe von 800
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.