Forum: Mikrocontroller und Digitale Elektronik USB Verbindung


von Christian M. (crischi)


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

von Christian M. (crischi)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.