Forum: Mikrocontroller und Digitale Elektronik COM Port Reaktionszeit: USB2Serial vs. HC06


von Andreas (Gast)


Lesenswert?

Hallo zusammen,

ich möchte Daten zwischen einem STM32 Mikrocontroller und dem Windows 7 
PC in beide Richtungen übertragen.
Vorerst sieht der Aufbau folgendermaßen aus:

- STM32 sendet ein Byte
- PC empfängt dieses Byte und sendet es zurück.
RX und TX Leitungen hängen am Oszi.

Verwende ich ein USB2Serial Kabel, dauert es ca 500 - 1000 
Mikrosekunden, bis der PC das Antwortbyte auf den Bus legt (mit Oszi 
gemessen).

Wenn ich einen Bluetooth Adapter verwende, dauert die Reaktion 15 - 25 
Millisekunden (mit Oszi gemessen).

In beiden Fällen ist die Software auf dem STM32 und auf dem PC die 
gleiche.

Beim Bluetooth Adapter dauert es im Vergleich eine halbe Ewigkeit, bis 
der Bluetooth Treiber die Daten in den Stream legt.

Kennt jemand dieses Problem? Kann man in den Tiefen des Windows noch 
irgendetwas einstellen?

Gruß
Andreas

von Sandrea (Gast)


Lesenswert?

> Beim Bluetooth Adapter dauert es im Vergleich eine halbe Ewigkeit, bis
> der Bluetooth Treiber die Daten in den Stream legt.
>
> Kennt jemand dieses Problem?

Wer Funk kennt, nimmt Draht.

> Kann man in den Tiefen des Windows noch
> irgendetwas einstellen?

FORMAT C:

von Patent Anwalt (Gast)


Lesenswert?

Andreas schrieb:
> Kann man in den Tiefen des Windows noch
> irgendetwas einstellen?

Einfach den Systick hoch skillen.

Schnittstellen wie USB oder Ethernet sind darauf ausgelegt
grosse Datenmengen auf einmal zu transportieren. Bei
wenigen einzelnen Zeichen sind sie dagegen von der
Datenrate her ineffizient.

von Schwarz Schilling (Gast)


Lesenswert?

Wie hast du denn am Bus gemessen und an welchem?

von Schwarz Schilling (Gast)


Lesenswert?

Und dann legt er sie auch noch in den Stream...

Speaking Knowledge?

von Jim M. (turboj)


Lesenswert?

Andreas schrieb:
> Beim Bluetooth Adapter dauert es im Vergleich eine halbe Ewigkeit, bis
> der Bluetooth Treiber die Daten in den Stream legt.

Welcher Adapter wird beim µC verwendet? STM32 kennen kein natives 
Bluetooth IIRC. Die BT2UART Adapter haben oft lange Timeouts, um über 
Funk mit größeren Datenpaketen arbeiten zu können.

Andreas schrieb:
> Verwende ich ein USB2Serial Kabel, dauert es ca 500 - 1000
> Mikrosekunden, bis der PC das Antwortbyte auf den Bus legt (mit Oszi
> gemessen).

Wenn Du da noch einen USB2.0 High speeed Hub davor setzt, verringert 
sich das auf 0,25-0,5ms - offenbar läuft dann der Host Scheduler 
schneller.

von Ch.G. (Gast)


Lesenswert?

...tja eigentlich kann man hier doch nur mutmaßen an was es liegen 
könnte da man die interner/firmware dieser Adapter ja nicht wirklich 
kennt und auch nicht wirklich genau wissen kann was windows da noch so 
zwischendurch rum werkelt, aber plausibel klingt das schon das evtl. der 
Adapter "wartet" bis irgendwelche Puffer gefüllt sind oder ein timeout 
abgelaufen ist.
Probier doch einfach mal aus ob sich was an den Zeiten ändert wenn du 
ganze Pakete a 32 oder 64 bytes versendest.

von Pandur S. (jetztnicht)


Lesenswert?

Bluetooth hat relativ aufwendiges Handshake und 
Authentifizierungsverfahren, deswegen dauern die Anwortzeiten etwas 
laenger. Zigbee waere da etwas schneller.

von Stefan F. (Gast)


Lesenswert?

> Kennt jemand dieses Problem?

Ja, das ist völlig normal und der Grund, warum einige alte Geräte, die 
für "echte" serielle Ports gedacht waren, jetzt nicht mehr zuverlässig 
oder gar nicht mehr funktionieren.

Generell ist Windows nicht echtzeitfähig. Wenn du Schaltvorgänge zu ganz 
bestimmten Zeiten ausführen möchtest und die Abweichung garantiert unter 
100ms sein soll, dann musst du einen externen µC mit Uhr benutzen, demm 
du VORHER Befehle sendest, wann er was tun soll.

Deswegen hat jede zeitkritische Peripherie einen eigenen Mikrocontroller 
(z.B. Maus, Drucker, Motorsteuerungen, etc).

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Stefan U. schrieb:
> Generell ist Windows nicht echtzeitfähig.

Das Problem hier liegt aber nicht an Windows, sondern an der 
Hardwarearchitektur der involvierten Schnittstellen.

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.