mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Fehler bei Benutzung von USB Massenspeicher mit PIC32 StarterKit


Autor: Thomas M. (thomas_m56)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Servus,

ich programmiere gerade einen PIC32MX795F512L auf einem Ethernet 
StarterKit und auf einem selbst entwickelten Board. Für mein Projekt 
möchte ich verschiedene Daten auf einem USB-Massenspeicher loggen. Ich 
begann die Programmierung mithilfe des "USB Host - Simple Thumb Drive" 
Demo von Microchip: 
http://ww1.microchip.com/downloads/en/DeviceDoc/MC...

Das Demo funktioniert wunderbar. Wenn ich nun aber das DEMO mit meinem 
Projekt verbinde habe ich das Problem, dass der USB Stick nach ein paar 
Sekunden (manchmal auch länger (ein paar Minuten), in letzter Zeit aber 
immer nach ca. 10 Sekunden) nicht weiter beschrieben wird oder sich 
sogar das ganze Board aufhängt.

Hier meine Einstellungen:
#pragma config UPLLEN   = ON            // USB PLL Enabled 
#pragma config FPLLMUL  = MUL_20        // PLL Multiplier 
#pragma config UPLLIDIV = DIV_2         // USB PLL Input Divider 
#pragma config FPLLIDIV = DIV_2         // PLL Input Divider 
#pragma config FPLLODIV = DIV_1         // PLL Output Divider 
#pragma config FPBDIV   = DIV_1         // Peripheral Clock divisor 
#pragma config FWDTEN   = OFF           // Watchdog Timer  
#pragma config WDTPS    = PS1           // Watchdog Timer Postscale 
#pragma config FCKSM    = CSDCMD        // Clock Switching & Fail Safe Clock Monitor 
#pragma config OSCIOFNC = OFF           // CLKO Enable 
#pragma config POSCMOD  = XT            // Primary Oscillator 
#pragma config IESO     = OFF           // Internal/External Switch-over #pragma config FSOSCEN  = OFF           // Secondary Oscillator Enable #pragma config FNOSC    = PRIPLL        // Oscillator Selection 
#pragma config CP       = OFF           // Code Protect 
#pragma config BWP      = OFF           // Boot Flash Write Protect 
#pragma config PWP      = OFF           // Program Flash Write Protect 
#pragma config ICESEL   = ICS_PGx2      // ICE/ICD Comm Channel Select #pragma config DEBUG    = OFF           // Debugger Disabled for Starter Kit 

Ansonsten habe ich ein T1 Interrupt alle 20ms mit Priorität 2 (Messungen 
werden durchgeführt), alle 50 ms wird ein T2 Interrupt ausgelöst mit 
Priorität 2 (Abfrage aller Eingänge) und über T3 wird jede ms ein Zähler 
erhöht. Die heap size habe ich auf 8192 Bytes eingestellt, das Feld mit 
der minimale stack size habe ich freigellassen. Beides habe ich aber 
auch schon ohne Erfolg variiert. Als USB Stick verwende ich einen ganz 
normalen Werbestick.

Hatt jemand eine Idee wo das Problem liegen könnte? 
(Oszillatoreinstellung,
Speicherreservierung, Interrupt Priorität (habe ich auch schon variiert, 
dabei ist mir aufgefallen dass ab einer Priorät von 4 der USB Stick gar 
nicht mehr initialisiert werden kann und das Programm hängen 
bleibt),...)

Danke für die Hilfe,
Thomas

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.