Forum: Mikrocontroller und Digitale Elektronik Baudraten Problem mit Resonator


von Dr G. Reed (Gast)


Lesenswert?

Hallo zusammen!

Folgendes Problem:

Habe eine Schaltung mit einem Atmel 168 entwickelt, auf dem STK 500 mit 
einem Baudratenquarz 3,6864 MHz

Verbindung zum PC über einen PL2303 Adaper, mit 230400 Baud lief 
problemlos.

Dann habe ich die Schaltung auf eine Platine gepackt, aus Platzgründen 
habe ich einen kleinen Resonator mit 4MHz verwendet.

Laut Tabelle müsste hier 250000 Baud mit 0 % Fehler möglich sein.

Der AVR sendet auch schön mit dieser Geschwindigkeit, hab ich mit dem 
Oszi überprüft, Bitzeit exakt 4us

Allerdings kommt nur Müll am PC an. Wenn ich Zeichen vom PC sende, kommt 
dort 1 Bit allerdings mit 3.5 anstatt 4 Mikrosekunden raus.

Es sieht so aus, als ob mit dem PL2303 keine 250000 Baud einstellbar 
wären.

Hat jemand schonmal einen uC mit einem USB Adapter bei 250000 Baud 
betrieben und kann hier was empfehlen ? Vielleicht FTDI ?

von Arc N. (arc)


Lesenswert?

Dr G. Reed schrieb:
> Es sieht so aus, als ob mit dem PL2303 keine 250000 Baud einstellbar
> wären.
>
> Hat jemand schonmal einen uC mit einem USB Adapter bei 250000 Baud
> betrieben und kann hier was empfehlen ? Vielleicht FTDI ?

FTDI geht definitiv. Die ... von Prolific sollte man großräumig meiden.

http://www.ftdichip.com/Support/Documents/AppNotes/AN232B-05_BaudRates.pdf

von Willi (Gast)


Lesenswert?

Dr G. Reed schrieb:
> Folgendes Problem:
>
> Habe eine Schaltung mit einem Atmel 168 entwickelt,

4MHz Taktfrequenz und 250kBd sind aber keine gute Paarung. Laß den 
Atmega besser mit 16-20MHz laufen.

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

Dr G. Reed schrieb:
> Laut Tabelle müsste hier 250000 Baud mit 0 % Fehler möglich sein.

Brauchst du denn tatsächlich diese hohe Geschwindigkeit?

von Stefan Frings (Gast)


Lesenswert?

@Willi
Kannst Du bitte erklären, warum die Kombination nicht gut ist?

von Dr G. Reed (Gast)


Lesenswert?

Willi schrieb:
> 250kBd sind aber keine gute Paarung

Wieso nicht ?

Der Prozessor muss nur 256 Bytes aus dem RAM möglichst schnell zum PC 
übertragen.

Bei 250000 Baud sind das 25000 Zeichen pro Sekunde, also 160 Takte pro 
Zeichen, Störungen durch Interrupts gibts nicht, also genügend Zeit....

von Dr G. Reed (Gast)


Lesenswert?

Markus W. schrieb:
> Brauchst du denn tatsächlich diese hohe Geschwindigkeit?

 115.2kBaud würden auch reichen, aber die krieg ich mit dem 4MHz 
Resonator nicht hin (8% Taktabweichung....)

Zur Info:

Ich verwende einen CSTCR 4.0 Resonator von Reichelt.

Leider gibts die dort nur als 4 5 und 6 MHz Typen, auch bei C hab ich 
keine Baudratenfreundlichen Frequenzen gefunden....

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

Dr G. Reed schrieb:
>  115.2kBaud würden auch reichen, aber die krieg ich mit dem 4MHz
> Resonator nicht hin (8% Taktabweichung....)

OK, verstehe...

Es gäb da noch die grundsätzliche Möglichkeit, von jedem Byte nur die 
unteren 4 Bits zu verwenden und die 4 oberen konstant auf 1 zu setzen. 
Dann spielt die exakte Übertragungsgeschwindigkeit keine so große Rolle 
mehr. Wenn ich mich recht erinnere, können dann Fehler bis 15% toleriert 
werden.

von Dr G. Reed (Gast)


Lesenswert?

Ich hab noch ein Gerät mit einem FT232RL rumliegen, das kann ich morgen 
mal anzapfen und als Adapter verwenden. Mal schaun, ob ich so die 
Baudraten hinbekomme.

Ansonsten muss ich halt das Layout etwas ändern und einen guten alten 
Quarz hernehmen....

von Dr G. Reed (Gast)


Lesenswert?

So, grad nochmal kurz an dem FT232RL Adapter gemessen:

Da kommen die Bits mit exakt 4us raus, wie es sein soll. Somit denke 
ich, dass ich gute Chancen habe, darüber die Verbindung hinzubekommen!

von avr (Gast)


Lesenswert?

Ich hab vor ca. 2 Wochen eine Platine mit dem FTDI232RL
gebaut und mal mit 100000 Baudgetestet.

Ähnliches hier:

Beitrag "[Sammelbestellung] FT232RL-Platinen"

Keine Probleme aufgetreten, saubere 10 µs mit dem
Oskar gemessen und mit Terminalprogramm keine Fehler.

avr

von Hans Peter B. (Gast)


Lesenswert?

Der UART im Pc arbeitet mit einem Grundtakt, der ein ganzzahliges 
Vielfaches der Baudrate  115200 bzw. 230400 Baud ist. Daher kannst du 
nicht die Übertragung mit einer krummen Baudrate von  250000 Baud 
fahren. Du kommst nicht darum herum weiterhin einen 3,6864 MHz Quarz zu 
verwenden, da bei diesen hohen Datenraten auch Taktfehler im 
Promillebereich zu Übertragungsfehler führen.
Hans Peter

von Dr G. Reed (Gast)


Lesenswert?

So wie ich das in Erinnerung habe, gelten diese festen Baudraten nur für 
die alten, echten seriellen Schnittstellen.

Die USB - virtuellen Comports sollten hier wesentlich flexibler sein.

Wenn ich mich grad nicht vermessen habe, sollte das auch zutreffen.
In Putty 250000 als Badrate eingestellt, und mit dem Oszi genau die 4us 
Bitzeit gemessen.

Werd ich die Tage nochmal genauer untersuchen....

von Simon K. (simon) Benutzerseite


Lesenswert?

Hans Peter B. schrieb:
> Der UART im Pc arbeitet mit einem Grundtakt, der ein ganzzahliges
> Vielfaches der Baudrate  115200 bzw. 230400 Baud ist. Daher kannst du
> nicht die Übertragung mit einer krummen Baudrate von  250000 Baud
> fahren. Du kommst nicht darum herum weiterhin einen 3,6864 MHz Quarz zu
> verwenden, da bei diesen hohen Datenraten auch Taktfehler im
> Promillebereich zu Übertragungsfehler führen.
> Hans Peter

Stimmt zwar, aber trifft hier nicht zu.

von avr (Gast)


Lesenswert?

Bei meinen 100000 Baud s.o. (mit PC mit WinXP)
hat Docklight nur angemerkt, dass dieser Wert
unüblich ist.

Aber die Übertragung war korrekt.

Es war tatsächlich auch nur ein gezielter Test
ob es geht, keine echte Anwendung ;)

avr

von Willi (Gast)


Lesenswert?

Dr G. Reed schrieb:
> Willi schrieb:
>> 250kBd sind aber keine gute Paarung
>
> Wieso nicht ?
>
> Der Prozessor muss nur 256 Bytes aus dem RAM möglichst schnell zum PC
> übertragen.

Weil die Datenrate potentiell den Prozessor bei der Verarbeitung 
überfordert.
In Deinem speziellen Fall, mag es ja reichen, aber es könnte der PC ja 
auch einmal Daten an den ATmega168 schicken. Wenn diese dann 
ungestückelt eintreffen, kann es beim Empfang eng werden.

Ohne ganz zwingende Gründe sind 4MHz mit diesem µC wie ein Auto mit 
angezogener Handbremse oder ein 3GHz PC mit 800MHz Takt.
Problemlos kann man ihn beispielsweise mit 18,432MHz laufen lassen und 
damit 'übliche', hohe Baudraten einstellen.

von Dr G. Reed (Gast)


Lesenswert?

Daten vom PC zum Atmel kommen nur als vereinzelte chars, mit 4MHz ist 
das was ich vorhabe locker umzusetzen.

Ich bin als (hauptsächlich) Assembler-Programmierer gegen das sinnlose 
Hochrüsten von Taktfrequenzen und dergleichen.....

von Willi (Gast)


Lesenswert?

Dr G. Reed schrieb:
> Ich bin als (hauptsächlich) Assembler-Programmierer gegen das sinnlose
> Hochrüsten von Taktfrequenzen und dergleichen.....

1. Die Taktfrequenz hängt nicht von der Programmiersprache ab.
2. 18,432MHz liegen voll im Rahmen; siehe Datenblatt.

von Dr G. Reed (Gast)


Lesenswert?

So, hab jetzt nochmal einen Test mit meinem FT232RL Adapter gemacht:

Verbindung mit 250000 Baud läuft problemlos!

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.