Forum: Mikrocontroller und Digitale Elektronik Krumme Baudraten mit Windows erzeugen..


von Kim S. (Gast)


Lesenswert?

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

von Peter II (Gast)


Lesenswert?

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.

von Matthias L. (Gast)


Lesenswert?

>nur erstmal müßte ich die verwendete Baudrate herausfinden..

Wäre da nicht ein Oszi am Besten geeignet?

von holger (Gast)


Lesenswert?

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

von Hans (Gast)


Lesenswert?

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

von Peter II (Gast)


Lesenswert?

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.

von Ingo W. (Gast)


Angehängte Dateien:

Lesenswert?

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

von Reinhard Kern (Gast)


Lesenswert?

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

von Anja (Gast)


Lesenswert?

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

von Peter II (Gast)


Lesenswert?

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.

von Anja (Gast)


Lesenswert?

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

von Peter II (Gast)


Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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

von Oliver J. (skriptkiddy)


Lesenswert?


von Reinhard Kern (Gast)


Lesenswert?

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

von ingo (Gast)


Lesenswert?

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

von tom (Gast)


Lesenswert?

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.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von Michael (Gast)


Lesenswert?

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.

von Anja (Gast)


Lesenswert?

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

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von Salander (Gast)


Lesenswert?

hterm beispielsweise.

von Anja (Gast)


Lesenswert?

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

von Reinhard Kern (Gast)


Lesenswert?

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

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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
Noch kein Account? Hier anmelden.