www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LPC2378 + Crossworks + USB


Autor: Harald Wilczak (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

hat jemand vielleicht ein Beispiel für die Programmierung der USB 
Schnittstelle des LPC2378 Controllers. Habe das Beispiel von Keil 
benutzt und es umgeschrieben, dass es auch unter Crossworks 1.7 
übersetzt werden kann. Dieses geänderte Projekt wieder im Keil 
compiliert und in das MCB2300 geflasht und es läuft. Mit Crossworks 
läuft zwar das Programm, der Interrupt kommt auch, aber die Goddluck LED 
kommt nicht.

Initeinstellungen habe ich auch kontrolliert und müsste passen.

Danke schön für Eure hilfe.

Gruss
Harry

Autor: mgiaco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Keine Ahnung wie du deine IRQ Handler gemacht hast aber wenn du die GNU 
varriante nimmst ...interrupt("IRQ") dann darauf achten das du keine 
opitmierung eingeschaltet hast.

mfg mathias

Autor: mthomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weiterhin sind RealView (und EWARM) scheinbar relativ tolerant gegenüber 
"vergessenen" volatiles, code dahingehend nochmal abklopfen. Bei vielen 
USB-Codes muss man auf das struct packing achten. Dies ist 
compilerspezifisch und üblicherweise wird nicht gepackt, um schnelleren 
Zugriff auf Elemente zu ermöglichen. Bei arm-elf/-eabi gibt es dazu ein 
attribut packed (ähnlich __packed aber nicht als "prefix" sondern 
"suffix"). Das pack pragma gibt es bei RealView, EWARM und GNU (vgl. 
Dokumentation pragma und variable attributes bei gcc.gun.org).

Martin Thomas

Autor: Harald Wilczak (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

danke schön für Eure Antworten. Die Compiler Optimierung habe ich 
ausgeschaltet.

Eine Packed Structur in Keil C

typedef __packed struct _USB_SETUP_PACKET {
  REQUEST_TYPE bmRequestType;
  BYTE         bRequest;
  WORD_BYTE    wValue;
  WORD_BYTE    wIndex;
  WORD         wLength;
} USB_SETUP_PACKET;

habe ich wie folgt in GNU C umgeschrieben:

typedef struct _USB_SETUP_PACKET {
  REQUEST_TYPE bmRequestType;
  BYTE         bRequest;
  WORD_BYTE    wValue;
  WORD_BYTE    wIndex;
  WORD         wLength;
} __attribute__((_packed_)) USB_SETUP_PACKET;

Ich denke, dass es so gehen müsste!

Gruss
Harry

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.