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