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?
> 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."
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!
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.
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?
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.
>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.
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!
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!
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!
>> MIT DEM ATMEL GEHEN HALT BEI 8MHz nur 38400 oder 500000,
Genau, das sind bekanntlich die einzigen möglichen Baudraten-
Wissenschaftlich erwiesen.
>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.
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!
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
Ich werds mal am Montag im geschäft testen, das Terminal Programm scheint besser zu sein!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.