www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik USB Verbindung


Autor: Christian Meurer (crischi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo liebe Leute,

hat schon jemand Erfahrung mit der CDC-Firmware von Microchip für den 
PIC18xxxx sammeln können? In dem Falle könnte ich eine kleine Hilfe 
gebrauchen. Folgendes:
Die CDC emuliert eine RS232 über USB, der µC enthält die komplette HW 
für USB. Ein Programm auf dem µC läuft auch schon, das Befehle 
interpretiert. Verbindet man sich vom PC aus mit einem Terminal-Programm 
(z.B. Hyperterm) zum µC, dann ist alles ok: Kommando senden -> passende 
Antwort vom µC.

Ein selbstgeschriebenes PC-Programm hingegen scheitert. Offensichtlich 
scheint immer nur das 1. Zeichen anzukommen. Verbinde ich das 
PC-Programm mit einem weiteren PC mit Terminal, kann ich aber sehen, 
dass die komplette Zeichenfolge gesendet wurde (Vom selbstgeschriebenen 
PC-Programm).

Ein erster Verdacht: Ein Timing-Problem (Hand-Eingabe, automatisierte 
Eingabe), oder zu kleiner Buffer der USB-Firmware. Aber, dann habe ich 
vom Terminal-Programm aus eine Datei mit Befehlen gesendet, diese wurde 
wie erwartet verarbeitet, die Antworten vom µC waren ok.

Was übersehe ich?

Das PC-Programm ist mit VC 6 (WIN-API) geschrieben, das µC-Programm mit 
C18.

Gruß und vielen Dank im Voraus,

Christian

Autor: Christian Meurer (crischi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Problem gefunden:
Die Funktion getsUSBUSART() um einen String vom USB einzulesen zerstört 
den Buffer, wenn man nicht alles einliest, was gerade an Daten anliegt. 
Bsp.:
getsUSBUSART( buffer, 1 ); und 5 Zeichen im USB-Buffer
-> 1 Zeichen wird geholt, die nächsten 4 sind nach Aufruf der Funktion 
verloren

Beim Handbetrieb war das kein Problem, da ich niemals so schnell tippen 
kann, dass ich 2 Zeichen schaffe, während der µC nur 1mal durch den Loop 
geht, daher hat er immer alles gelesen. Bei Programm-gesteuerter 
Funktion sieht das schon anders aus.

Gruß

Christian

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.