Dateierzeugung wie von Geisterhand (ATMega32)

OP #1490367
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
OP
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.