Hallo, ich will hier ein Gerät das über RS485 kommuniziert dirakt am Atmega32 auslesen, wo die Daten noch als Uart RS232 rauskommen. Offenbar verwenden die aber einen Krummen baud Wert. Es ist ein 4MHz Quarz verbaut.. Die Plausibelsten Werte erahlte ich bei 2400 und 4800 baud..daher vermute ich die nutzen irgendwas dazwischen... Mit welcher Terminalsoftware in Win kann ich die Baudraten Variable wählen.. Ich nutze ien USB/RS232 konverter.. Ich brauche keine super stabilen werte diese kann ich mir notfalls mit einem anderen Atmel dann genau erzeugen..nur erstmal müßte ich die verwendete Baudrate herausfinden..
Kim Schmidt schrieb: > Mit welcher Terminalsoftware in Win kann ich die Baudraten Variable > wählen.. Putty kann das grundsätzlich, die Frage ist ob der Treiber von dem USB-Adapter damit klar kommt.
>nur erstmal müßte ich die verwendete Baudrate herausfinden..
Wäre da nicht ein Oszi am Besten geeignet?
>Die Plausibelsten Werte erahlte ich bei 2400 und 4800 baud..daher >vermute ich die nutzen irgendwas dazwischen... Dazwischen kann Windows nicht. Versuch mal 7Bit statt 8bit.
holger schrieb: >>Die Plausibelsten Werte erahlte ich bei 2400 und 4800 baud..daher >>vermute ich die nutzen irgendwas dazwischen... > > Dazwischen kann Windows nicht. Versuch mal 7Bit statt > 8bit. oder zwei Stop-bits
holger schrieb: > Dazwischen kann Windows nicht. wer sagt das? Es gibt nur keine Konstanten dafür, aber Windows kann es, die Frage ist ob es die Hardware kann bzw ob es der Treiber kann.
holger schrieb: > Dazwischen kann Windows nicht. Hängt von der Hardware ab. Ein "richtiger" Serialport kann das, ein FT323 ebenfalls, aber viele billige USB-serialadapter können nur Standartbaudraten. Das Terminal im Anhang, versucht die Wunschbaudrate (händisch eingeben) einzustellen, liest sie dann vom Treiber zurück und zeigt sie unten, in der Statuszeile an, wenn Du da einen auf Standart gerundeten Wert findest, kann deine Hardware nichts Anderes. mfG ingo
Ingo Wendler schrieb: > wenn Du da einen auf Standart gerundeten Wert > findest, kann deine Hardware nichts Anderes. Eine Hardware, die nur feste Baudraten kann, gibt es nicht (mehr) wirklich, es werden immer Teiler einer Mutterfrequenz eingestellt. Wenn da nur Normwerte zulässig sind, liegt das am Treiber. Allerdings hilft einem diese Erkenntnis auch nicht weiter, weil die Lösung, die Teilerregister direkt zu programmieren, heute nicht mehr gangbar ist. Gruss Reinhard
Reinhard Kern schrieb: > Allerdings hilft > einem diese Erkenntnis auch nicht weiter, weil die Lösung, die > Teilerregister direkt zu programmieren, heute nicht mehr gangbar ist. Lies mal ein paar FTDI-Datenblätter und Application notes. Es lassen sich sogar fractional divider durch einfache DLL-Aufrufe einstellen. Außerdem kann man das .inf-File des Treibers patchen und so "Standard-Baudraten" auf eigene Baudraten "umbiegen" Gruß Anja
Anja schrieb: > Außerdem kann man das .inf-File des Treibers patchen und so > "Standard-Baudraten" auf eigene Baudraten "umbiegen" ich kann mir überhaupt nicht mit den FTDI treiber aus. Aber irgendwie kann ich mir überhaupt nicht vorstellen das in einer inf Datei etwas über Baudraten steht. Diese Datei dient doch nur zum laden der Treiber. Die übergabe der Baudrate erfolgt doch direkt an den Treiber. Dafür gibt es die Standard Konstanten ( in der art baud_1200, baud_4800) Hinter jeden Konstante steht bei Windows auch genau diese Baudrate baud_1200 = 1200. Es macht doch überhaupt keinen sinn das hierbei noch die inf Datei beteiligt ist.
Peter II schrieb: > Es macht doch überhaupt keinen sinn das hierbei noch die inf Datei > beteiligt ist. Lies die Application Notes. Jeder kann doch seinen Treiber so machen wie er will oder? Gruß Anja
Anja schrieb: > Lies die Application Notes. Jeder kann doch seinen Treiber so machen wie > er will oder? klar kann man das machen, aber eine INF-Datei kann ich nach der installation einfach löschen und der Treiber geht immer noch. Also die INF-Datei kann es selber nicht sein.
Kim Schmidt schrieb: > Offenbar verwenden die aber einen Krummen baud Wert. Ich stimme Matthias zu und frage: Was sagt das Oszi? Damit kann man ein Bit sehr leicht ausmessen und die Baudrate entsprechend einstellen. Und dann kann man immer noch sehen, wie man das Problem geknackt bekommt. Ich könnte mir da einen einfachen Konverter vorstellen, der z.B. 3456 Baud nach 9600 wandelt. Das ist kaum ein Aufwand und es sind keine Puffer nötig, weil/wenn die Ziel-Baudrate kleiner als die PC-Baudrate ist...
Anja schrieb: > Lies mal ein paar FTDI-Datenblätter und Application notes. > Es lassen sich sogar fractional divider durch einfache DLL-Aufrufe > einstellen. Na wunderbar. Es hat bloss mit meiner Aussage, dass man die Teilerregister nicht direkt programmieren kann, auch nicht das geringste zu tun. Vielleicht ist dir ja schon mal die Tatsache begegnet, dass es im Userspace einen Ouput-Befehl überhaupt nicht mehr gibt. Daher meine Behauptung, es liegt am Treiber. Was ist daran falsch? DLLs gehören zum Treiber. Gruss Reinhard
Reinhard Kern schrieb: > Na wunderbar. Es hat bloss mit meiner Aussage, dass man die > Teilerregister nicht direkt programmieren kann, auch nicht das geringste > zu tun. Vielleicht ist dir ja schon mal die Tatsache begegnet, dass es > im Userspace einen Ouput-Befehl überhaupt nicht mehr gibt. Daher meine > Behauptung, es liegt am Treiber. Was ist daran falsch? DLLs gehören zum > Treiber. Das ist, wie in Beitrag "Re: Krumme Baudraten mit Windows erzeugen.." bereits geschrieben, für die FTDI's auch garnicht nötig, da sie, selbst mit dem VCP-Treiber unter Windows, über das normale API (SetCommState, mit entsprechend befülltem DCB) auf beliebige, ganzzahlige Baudraten, bis weit über 115,2k einzustellen sind. mfG ingo
oszi nehmen, bitrate ermitteln per bitzeit-messung, datenformat ermitteln per UART-paket Betrachtung, kieken ob der quarz an deinem atmega eine entsprechende bitrate am USART mit +-2% einstellen lässt, simple firmware nehmen/schreiben - empfangen und im debugger den empfangspuffer ansehen und gut ist... was soll das ganze windows+pc+ftdi blabla, der gute mensch möchte doch nur dieses gerät mit anscheinend krummer baudrate per atmega/uC auslesen... gruss + viel erfolg, tom.
Ingo Wendler schrieb: > Hängt von der Hardware ab. Ein "richtiger" Serialport kann das Naja. Die PC-Standard-UART (früher 8250, mittlerweile 16550) erzeugt ihre Baudrate aus einem 1.8432-MHz-Quarz, einem /16-Vorteiler und einem Baudratenteilerregister, das als Teiler ganzzahlige 16-Bit Werte von 1 bis 65535 akzeptiert. Bedingt durch den /16-Vorteiler ist die höchste physikalisch mögliche Baudrate 115200, die nächstniedrigere ist 57600 (/2), gefolgt von 38400 (/3) und 28800 (/4). Dazwischen liegende Werte sind nicht möglich. Ein anderes Verhalten ist nur mit anderen UARTs möglich, wie sie auf dedizierten Schnittstellenkarten zu finden sein können -- oder eben in USB-Seriell-Adaptern. Da verwendet FTDI die flexibelste UART. (Es gibt noch eine Frickellösung, die auf ausgesuchten Mainboards funktioniert, bei denen lässt sich die verwendete Taktfrequenz der im "Super-IO"-Chip untergebrachten UART mit einem Spezialtreiber modifizieren, so daß die UART nicht die eingestellte Baudrate, sondern ein definiertes Vielfaches davon verwendet, aber das geht eben nur mit ausgesuchter Hardware und ist nichtportierbares Gefrickel). Das eigentliche Problem des Threadstarters würde nicht bestehen, wenn der entweder eine vernünftige Taktquelle ("Baudratenquarz") für seinen AVR verwenden würde oder aber Atmel endlich mal weniger primitive UARTs in den AVRs verbauen würde.
Kim Schmidt schrieb: > ich will hier ein Gerät das über RS485 kommuniziert dirakt am Atmega32 > auslesen, wo die Daten noch als Uart RS232 rauskommen. Habt ihr mal die Fragestellung gelesen? Was hat das mit einem PC zu tun? @Kim Was auch immer "plausible Werte" sind, nimm ein Oszi und guck nach wie lang die Bitdauer ist, welche Bitanzahl/Paritätsbit verwendet wird und kontrolliere die Polarität des Signal. Stell den Empfänger auf ein Stopbit ein, damit macht man empfangsseitig erstmal nichts falsch. Bist du sicher, dass du das richtige Signal erwartest? Evtl. werden Binärdaten übertragen, die im ASCII-Terminal kryptische Zeichen erzeugen.
Kim Schmidt schrieb: > Mit welcher Terminalsoftware in Win kann ich die Baudraten Variable > wählen.. Kim Schmidt schrieb: > Ich nutze ien USB/RS232 konverter.. Michael schrieb: > Habt ihr mal die Fragestellung gelesen? Was hat das mit einem PC zu tun? Mit FTDI gehts mit jeder Terminalsoftware Gruß Anja
Anja schrieb: > Mit FTDI gehts mit jeder Terminalsoftware ... die die direkte Eingabe der gewünschten Baudrate zulässt und nicht nur eine vorgefertigte Liste zur Auswahl anbietet.
Rufus Τ. Firefly schrieb: > ... die die direkte Eingabe der gewünschten Baudrate zulässt und nicht > nur eine vorgefertigte Liste zur Auswahl anbietet. nee du kannst die Baudraten auch patchen (entweder direkt in der Registry im ConfigData-Schlüssel) oder über ein gepatchtes .inf File FtdiPort232.NT.HW.AddReg] HKR,,ConfigData,1,01,00,3F,3F,10,27,88,13,C4,09,E2,04,71,02,38,41,9c,80, 4E,C0,34,00,1A,00,0D,00,06,40,03,80,00,00,d0,80 Gruß Anja
Michael schrieb: > Habt ihr mal die Fragestellung gelesen? Was hat das mit einem PC zu tun? Hast du mal die Überschrift gelesen? Aber so genau weiss ich auch nicht was er will. Gruss Reinhard
Anja schrieb: > nee du kannst die Baudraten auch patchen (entweder direkt in der > Registry im ConfigData-Schlüssel) oder über ein gepatchtes .inf File Das ist übles Gefrickel und sollte nur im Notfall, wenn es wirklich nicht anders hinzubekommen ist, gemacht werden.
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.