Forum: Mikrocontroller und Digitale Elektronik CP2102 unter win xp / nt mit 500000 Baud


von Andreas Juhl (Gast)


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?

von René K. (king)


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."

von Andreas Juhl (Gast)


Lesenswert?

Also unter win XP geht es doch, nur win 2000 Macht probleme!

Der CP2102 wird erkannt, nur die Kommunikation zwischen meinem Windows
Programm (RQbasic) und der schnittstelle nicht!

von Wolfram (Gast)


Lesenswert?

Schau dir die Sache mal mit einem Terminalprogramm an, ob alles was
deine Schaltung sendet auch ankommt. Wenn ja, vielleicht hast du die
Timeouts nur falsch gewählt.

von Andreas Juhl (Gast)


Angehängte Dateien:

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?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Zwischen Windows 2000 und Windows XP existieren keine grundlegenden
Unterschiede; beide sind Versionen von Windows NT, die aus
Marketinggründen nicht mehr so genannt werden.

(Windows 2000 ist NT 5.0, Windows XP ist NT 5.1)

Daher wird das Problem an einer anderen Stelle zu suchen sein.

von Wolfram (Gast)


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.

von Andreas Juhl (Gast)


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!

von Wolfram (Gast)


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!

von Andreas Juhl (Gast)


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!

von DerAndere (Gast)


Lesenswert?

>> MIT DEM ATMEL GEHEN HALT BEI 8MHz nur 38400 oder 500000,

Genau, das sind bekanntlich die einzigen möglichen Baudraten-
Wissenschaftlich erwiesen.

von Wolfram (Gast)


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.

von Andreas Juhl (Gast)


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!

von Wolfram (Gast)


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

von Andreas Juhl (Gast)


Lesenswert?

Ich werds mal am Montag im geschäft testen, das Terminal Programm
scheint besser zu sein!

von Andreas Juhl (Gast)


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.

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.