mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC32 Daten auf USB-Stick schreiben -> sehr langsam


Autor: Cyberfuzzy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bin dabei mit einem PIC32, Daten auf einen USB-Stick zu schreiben. 
Dazu verwende ich das fertige Programm von Microchip: „USB Host - Mass 
Storage - Simple Demo“ aus den „Microchip Applications Libraries“ mit 
einem PIC32MX795F512L. Ich schaffe es jedoch nicht, die Daten mit einer 
vernünftigen Geschwindigkeit auf den Stick zu schreiben. Die Datenrate 
liegt immer nur bei ca. 40 - 70 KB/s. Damit schaffe ich also nicht mal 
den Low-Speed USB-Standard. Allerdings ging ich davon aus, dass der 
Mikrocontroller den Full-Speed Standard (1,5 MB/s) schafft. Am USB-Stick 
liegt es jedenfalls nicht. Am normalen PC schafft der auch hohe 
Geschwindigkeiten.

Hier ist ein Ausschnitt aus meiner Test-Routine, die ich im fertigen 
Projekt „USB Host - Mass Storage - Simple Demo“ integriert habe, um eine 
Textdatei mit 1 MB auf den USB-Stick zu schreiben:

//****************************
//Anfang Test: Datei schreiben
//Bei Tastendruck geht LED1 an und die Daten werden auf den USB-Stick 
geschrieben
//Wenn LED1 aus geht, ist der Schreibvorgang beendet
//****************************
int bytes = 1024*4; //4 KB (4096 Byte)
char mb[bytes]; //String für 4096 Zeichen
int a; //Zählvariable
for(a=0; a<bytes ;a++)
{
                mb[a] = '0'; //String mit Nullen füllen
}

mPORTGClearBits(BIT_13); //LED1 off

do //warten bis Taster gedrückt wurde
{
                tasten = PORTG & 0x1000; //Tasten einlesen
} while(tasten);
mPORTGSetBits(BIT_13); //LED1 on

for(a=0; a<256; a++) //256 * 4 kb = 1 MB
{
                FSfwrite(mb,1,bytes,myFile); //Daten auf USB-Stick 
schreiben
}
//**************************
//Ende Test: Datei schreiben
//**************************


Die Dauer um 1 MB zu schreiben messe ich also ungefähr mit der LED. Auf 
Tastendruck gehts los, wenn die LED aus geht, ist der Schreibvorgang 
beendet. Das dauert bei mir immer so ca. 14 – 15 Sekunden.

Jetzt meine Frage:
Sind die Einstellungen im Projekt „USB Host - Mass Storage - Simple 
Demo“ nicht für hohe Datenraten optimiert? Falls ja –was kann ich da 
ändern? Oder schafft der PIC32MX795F512L tatsächlich nicht mehr?

Vielen Dank schonmal für eure Hilfe!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.