Hi !
Ich habe eine Frage bezüglich der externen Taktquelle eines
atmega32
und zwar ist momentan alles noch mit standard bauteilen aufgebaut, soll
aber eine SMD Version umgesetzt werden.
Kann ich da einen 8,0000-HC49U-S (8MHz Quarz)
gegen einen CSTCC 8,00 (8MHz SMD Resonator)
tauschen ?? Oder gibt das eventuell Probleme bei Kommunikations
Anwendungen, also UART ???
Wenn der Resonator tatsächlich die Angabe "8,00" bzw. "8.00" trägt, dann
liegt die Abweichung von den 8 MHz unter 0,01 MHz, also unter 1/8
Promill. Das reicht für asynchrone Datenübertragung dicke aus.
Die Keramikresonatoren haben die Kondensatoren meist bereits eingebaut,
die Quarze nicht. Es gibt uebrigens auch SMD Quarze, zb im SMU4
gehaeuse, ich bevorzuge aber zur Zeit HC49 im 4mm hohen Gehaeuse fuer 20
Euro @100 Stueck, wohingegen die Keramikresonatoren um die 10 Euro @100
liegen.
Bei mittleren Baudraten (2400 baud) hat man eigentlich eine recht große
Toleranz. Ich habe mal vor kurzem eine Software-UART auf einem Tiny15
realisiert (wegen IR-Übertragung mit einem TSOP als Empfänger nur 1200
baud). Diese versagte auch dann nicht als ich dem Tiny15 mit einer Lampe
etwas einheizte (interner RC-Oszillator!)
Rüdiger Knörig wrote:
> Bei mittleren Baudraten (2400 baud) hat man eigentlich eine recht große> Toleranz. Ich habe mal vor kurzem eine Software-UART auf einem Tiny15> realisiert (wegen IR-Übertragung mit einem TSOP als Empfänger nur 1200> baud). Diese versagte auch dann nicht als ich dem Tiny15 mit einer Lampe> etwas einheizte (interner RC-Oszillator!)
Anmerkung:
Da alle Baudraten aus dem selben Takt durch herunterteilen erzeugt
werden, ist die Baudrate an sich wurscht, wenn es um die Abweichung
geht. Der Fehler ist relativ. Wenn z.B. zwei Baudraten sich bei einer
bestimmten Taktfrequenz mit dem selben "Initialfehler" erzeugen lassen,
dann bringt es nichts, bei Übertragungsproblemen durch einen ungenauen
Oszillator die jeweils andere zu nehmen, weil die dieselbe Prozentuale
Abweichung hat.
@ Johannes M. (johnny-m)
>Wenn der Resonator tatsächlich die Angabe "8,00" bzw. "8.00" trägt, dann>liegt die Abweichung von den 8 MHz unter 0,01 MHz, also unter 1/8>Promill. Das reicht für asynchrone Datenübertragung dicke aus.
Das glaube ich nicht. Resonatoren haben 0,5-1% Toleranz. Die 0,01 MHz
von 8,00 MHz ist ausserdem nicht 1/8 Promill sondern 1/8 Prozent!
Ausserdem sagt 8,00 nichts über die Toleranz aus, genausowenig wie 220
Ohm Kohleschichtwiderstände auf 1 Ohm genau sind (die haben 10% und mehr
Toleranz). Da kann mit einer höheren Baudrate schon Probleme geben, wenn
der systematische Fehler schon zu gross ist. Systematischer Fehler duch
die Rundung von UBRR und Toleranz des Resonators addieren sich und
sollte <1% bleiben!
Wenn es nicht um einen Großserie geht wo jeder Cent zählt, würde ich den
Quarz drin lassen.
MFG
Falk
P.S. Hier mal die Baudraten und Fehler eines 8 MHz Quarzes.
Baud UBRR Fehler [%]
75 6666 0,0
300 1666 0,0
1200 416 -0,1
2400 207 0,2
4800 103 0,2
9600 51 0,2
14400 34 -0,8
19200 25 0,2
28800 16 2,1
38400 12 0,2
57600 8 -3,5
76800 6 -7,0
115200 3 8,5
P.P.S. Die RC-Takter sterben wohl auch nie aus. :-(
> Systematischer Fehler duch> die Rundung von UBRR und Toleranz des Resonators addieren sich und> sollte <1% bleiben!
Wie schön wir schon wieder aneinander vorbeireden... Ich habe extra
(sinngemäß) geschrieben "bei Baudraten mit gleichem "Initialfehler"". Im
Initialfehler steckt der Rundungsfehler durch den Wert in UBRR drin.
Nimm aus Deiner Tabelle z.B. 19200 Baud. Wenn es mit denen nicht klappt,
bringt es überhaupt nichts, bei gleichem Basistakt 2400 Baud zu nehmen,
die mit dem gleichen Initialfehler behaftet sind.
Und ja, ich habe mich um eine Null vertan. 1/8 Prozent (bzw. kleiner
als 1/8 Prozent) ist aber noch dicke im grünen Bereich, vorausgesetzt
eben, die Baudrate lässt sich mit einem ausreichend kleinen Fehler
überhaupt erzeugen.
P.S.: Allerdings ist zu beachten, dass Resonatoren einen höheren TK
haben als Quarze. Da hakts dann schon eher wegen der
Temperaturabhängigkeit. Ein Resonator ist jedoch i.d.R. noch besser als
der interne RC-Oszillator.
P.P.S.: Grad mal nachgesehen: Die üblichen Toleranzen bei Resonatoren
liegen tatsächlich um 0,5 %...
Annika:
UART und Resonator CSTCC 8.00 funktioniert aus Erfahrung bestens und ist
stabil genug. Laß´ Dir nichts einreden. Selbst bei 9Bit + Parity mußt Du
Dir keine Sorgen machen.
@ Travel Rec. (travelrec)
>UART und Resonator CSTCC 8.00 funktioniert aus Erfahrung bestens und ist>stabil genug. Laß´ Dir nichts einreden. Selbst bei 9Bit + Parity mußt Du
Erfahrung? Stabil genug?
Wieviele Boards hast du damit aufgebaut? Wie hast du die Stabilität
gemessen?
>Dir keine Sorgen machen.
Bei welcher Baudrate? Wenn die Gegenstelle ein PC o.ä. ist, dann kann
man sich bis zu 3% Fehler leisten, weil der PC garantiert mit einem
Baudratenquarz praktisch fehlerfrei die Baudrate generiert bzw.
dekodiert.
MFG
Falk
Wir haben in der laufenden Serie aus Platzgründen von einem Quarz
(HC49-Typ) auf eine wesentlich kleineren Resonator (SMD) gleicher
Frequenz gewechselt. Solange der Fehler <2% ist (worse case Betrachtung
über Freq.-Abweichung und Temp.-abhängigkeit) funktioniert es sicher. Es
sollte aber auch mal ein Blick in das µC Datenblatt geworfen werden und
dort geprüft werden, ob Resonatoren als Taktgeber erwähnt werden. Ggf.
wird auch hier auf WICHTIGES hingewiesen.
>Erfahrung? Stabil genug?>Wieviele Boards hast du damit aufgebaut? Wie hast du die Stabilität>gemessen?
Mit wenigen Ausnahmen alle meine Controllerboards in meinem Umfeld (etwa
30), außerdem 40 Module für Modelleisenbahnsteuerung. Dabei verwende ich
teilweise eigene 1- / 2-Wire Interfaces mit bis zu 57600 Baud bei 9Bit +
Parity. Die Gegenstellen sind entweder AVRs, echte Com-Ports oder
Com-Port-Adapter. Keine Probleme bisher.
> Da alle Baudraten aus dem selben Takt durch herunterteilen erzeugt> werden, ist die Baudrate an sich wurscht, wenn es um die Abweichung> geht. Der Fehler ist relativ.
Bei sehr hohen Baudraten kommt noch die Charakteristik der
Schnittstellenwandler hinzu. Wenn Laufzeit und Flanke dieser Biester bei
L=>H und H=>L nicht identisch sind, addiert sich ein bitratenabhängiger
Fehler. Die Spezifikation des MAX232 endet immerhin bereits bei 120Kbps
- auch wenn man nicht selten mit dem doppelten davon arbeitet.
Bei der Wahl zwischen 2400 und 19200 ist das allerdings irrelevant.
Wenn man moeglichst viel Baudraten hinreichend genau erzeugen will,
sollte man sich vom 8MHz verabschieden und auf 7.3728MHz gehen. Der 8Mhz
bringt die Baudraten ueber 9600 nicht mehr richtig.
Hui, da ist ja doch noch ne ganze Menge herbei gekommen, seit ich das
letzte mal hier vorbeischaute...
Vielen Dank für die vielen ausführlichen Antworten, auch wenn ich nicht
alle verstehe :)
Also gut ist schonmal, das ich beide fürs UART verwenden kann.
Jedoch habe ich grade gemerkt, das es ja auch einen 12MHz internal
Oscillator im FT232RL gibt, mit dem ich dann doch auch über OSCO und
OSCI meinen atmega mit Takt versorgen kann, oder ist dieser nicht genau
genug, sollte doch, da er doch direkt für die Kummunikation gedacht ist,
richtig??
Da musste mal im Datenblatt des FT232RL nachschauen, was der fuer eine
Genauigkeit und Drift spezifiziert hat. Serielle Kommunikation benoetigt
besser als 2%. Dann musst auch noch im Datenblatt des Preozessors
nachschauen, ob du mit 12MHz auch deine Baurate hinreichend genau
hinbekommst.
Hallo Annika,
welche Anforderungen und Umgebungstemperaturen werden an den Quarz
gestellt. Welche Min. und Maximum Temperturen werden den Quarz und in
Zukunft Resonator beeinflussen. Ist der Quarz momentan in einem
Quarzofen. Wie sieht die Platine aus. Gibt es spezielle HF Bauteile
bzw. Anforderungen. Welche Baudraten benutzt du. 307k2 oder höher. Was
hängt an dem UART dran.