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
> 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:
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.
Und dann legt er sie auch noch in den Stream... Speaking Knowledge?
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.
...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.
Bluetooth hat relativ aufwendiges Handshake und Authentifizierungsverfahren, deswegen dauern die Anwortzeiten etwas laenger. Zigbee waere da etwas schneller.
> 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).
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.