CP2102 unter win xp / nt mit 500000 Baud

Gast #305872
Lesenswert?

Hallo,

hab hier eine Schaltung die über den CP2102 über den Virtuellen Comport
3 mit 500000 Baud daten an den PC schickt.

Unter win 98 funktioniert das tadellos, bei win NT und XP klappts aber
nicht? Wo kann das dran liegen?

Ich habe im Gerätemanager beobachtet, das unter 98 eine Baudrate bis ca
1000000 Baud einstellbar ist und bei win XP und NT nur bis 128000?

Liegt das daran? Brauch ich nen anderen treiber?
#305873
Lesenswert?

> Unter win 98 funktioniert das tadellos, bei win NT und XP klappts
> aber nicht? Wo kann das dran liegen?

"Klappt nicht" ist natürlich eine absolut präzise
Problembeschreibung. Ich kann damit jedenfalls nichts anfangen.

> Ich habe im Gerätemanager beobachtet, das unter 98 eine Baudrate
> bis ca 1000000 Baud einstellbar ist und bei win XP und NT nur bis
> 128000?

Schau hier:
http://www.cygnal.org/ubb/Forum9/HTML/000048.html

Zitat: "This is just limitation on that particular properties screen,
they're just not showing all the available rates."
Gast #305876
Lesenswert?

Also mein Basic verwendet scheinbar die windows Api? WAS auch immer das
ist.

ZITAT:


' This VB module is a collection of routines to perform serial port
I/O without
' using the Microsoft Comm Control component.  This module uses the
Windows API
' to perform the overlapped I/O operations necessary for serial
communications.
'

Ich weiß nicht, was ich noch einstellen könnte Timeoutmäßig!

Im Anhang ist das Comport Include file von Rapidq!

Vielleicht nimmt ja WIN 2000 irgend was anderes als die Windows API?
für die Comports?
Angehängte Dateien:
Gast #305878
Lesenswert?

>Vielleicht nimmt ja WIN 2000 irgend was anderes als die Windows API?
>für die Comports?

??? das ist aber jetzt nicht dein Ernst?

nette Routinen du hast  1 sekunde Timeout und einen Puffer von
1000Byte
Ich weiss nicht was du Sendest ,aber wenn es ein kontinuierlicher
Datenstrom ist dann muestest du den schon alle 20 ms spätestens
abgeholt haben!

Was siehst du denn nun in einem Terminalprogramm bei 500000 Baud?
Kommt da überhaupt etwas an oder nur teilweise oder garnichts?

Deine Baudrate mal runterzustellen auf 9600 oder so wäre auch ein Weg
um die Probleme einzugrenzen.
Gast #305879
Lesenswert?

Mein Windows Programm sendet immer wenn es bereit ist neue daten zu
empfangen ein byte.
Darauf antwortet mein AVR mit einem Paket von ca 26 byte, das wird dann
sofort im Programm am PC ausgelesen.
Dieser vorgang wiederholt sich maximal alle 15 ms.

Bei win 98 mit PC 200Mhz und 1700Mhz läufts, bei win xp mit 2700 Mhz
auch, nur bei den windows 2000 rechnern klappts nicht!
Gast #305880
Lesenswert?

und was ist jetzt das Problem ,einfach mal mit einem Terminalprogramm zu
probieren ob da überhaupt was ankommt auf der Schnittstelle.
Kann ja sein das ein anderes Programm sie geöffnet hat oder das sie
sonst irgendwelche Probleme hat. Das würdest du damit gleich
ausschliessen können.
Im übrigen, Ich weiss nicht wie sich ein cp2102 verhällt aber der
USB->seriell Wandler FTDI 232 hat die regel das ein Paket entweder nach

16ms oder wenn es 62Byte enthält abgeschickt wird. Sollte der cp2102
sich ähnlich  verhalten würde ich diese 15ms nochmal überdenken.
Über USB1.1 geht nur alle 1ms ein Paket ab. Also bei deiner Ansteuerung

ist diese hohe Datenrate absolut sinnlos.
also 15ms d.h. 66 Pakete pro sekunde a 26 Byte= 1716 Byte pro Sekunde
bei 8 Datenbits 1 Startbit 1 Stopbit=10Bit
sind das 17160 Bit pro Sekunde
du kämst also mit 19200 Baud vollkommen aus!
Gast #305881
Lesenswert?

Meine Datenrate ist nicht sinnlos, da ich nur 2 ms zeit habe die
datensignale vom AVR-Controller zum CP2102 und zum PC übertragen, da
der Controller die restliche zeit zum messen braucht.


MIT DEM ATMEL GEHEN HALT BEI 8MHz nur 38400 oder 500000, da ists ja
keine Frage was ich da eher nehm!

Mit Hyperterm hab ich es schon Probiert, ohne erfolg! Die schnittstelle
ist geöffnet, gibt aber keinerlei antwort!
Gast #305883
Lesenswert?

>Meine Datenrate ist nicht sinnlos, da ich nur 2 ms zeit habe die
>datensignale vom AVR-Controller zum CP2102 und zum PC übertragen, da
>der Controller die restliche zeit zum messen braucht.

Daten per Interrupt Senden/Empfangen ,aber das ist hier wohl nicht das
Problem, es sei denn du hast im Mikrocontroller einen Overrun beim
Empfang. Ich kenne dein Programm, nicht aber überprüf mal wenn sich auf
der Schnittstelle das Timing leicht ändern würde, ob sich dann ein
Overrun ergeben könnte (das nächste Anforderungsbyte kommt, bevor das
vorherige abgeholt wurde)
Du sagst ja selbst du bist ganz hart am Limit mit der Zeit.

>MIT DEM ATMEL GEHEN HALT BEI 8MHz nur 38400 oder 500000, da ists ja
>keine Frage was ich da eher nehm!

Ok. das ist ein Argument. Kenne ich das ich auch 500KBit benutze.

>Mit Hyperterm hab ich es schon Probiert, ohne erfolg! Die
>schnittstelle
>ist geöffnet, gibt aber keinerlei antwort!

Bei mir bietet Hyperterm unter win2000 auch für die normale serielle
Schnittstelle 230Kbit an, ohne das das funktionieren würde.
Nimm lieber:
http://www.der-hammer.info/terminal/index.htm
da kann man alle Baudraten einstellen.
Gast #305884
Lesenswert?

OK, danke Probier ich mal!

Nen überlauf gibts nicht, das hab ich softwaremäßig ausgeschlossen, der
AVR sendet nur, wenn das Programm meldet das es bereit ist, ist das
Programm nicht bereit, wird nicht gesendet!
Gast #305885
Lesenswert?

ich meinte Überlauf auf dem Mikrocontroller
sagen wir Win98/XP senden in Wirklichkeit alle 16ms (durch interne
Verzögerung)
und Win2000 wirklich alle 15ms und dein Programm auf dem
Mikrocontroller braucht 15,1 ms dann könnte es zu sowas kommen.
Ok. wilde Vermutung, manchmal ist ein Oszi recht nützlich wenn man
wissen will ob etwas über die Schnittstelle geht
Gast #305887
Lesenswert?

Also ich hab mir jetzt mal die mühe gemacht und das Programm in
Visul_Basic mit der verwendung MSCOMM geschrieben, und da funktioniert
es.
Es ist wohl so wie ich gedacht hab,RapidQ Basic benutzt die Com-
befehle aus der kernel32.dll, und wahrscheinlich geht das unter win
2000 aus irgendeinem Grund nicht
Mit der MSComm gehts.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren