Verwendung von UART-Takt 3,6864 MHz für einen Mikrocontroller

Ich möchte einen externen Oszillator mit 3,6864 MHz verwenden, um meinen ATMEGA328p zu takten, um eine „fehlerfreie“ serielle Kommunikation zu gewährleisten. Als ich mir diese Seite angesehen habe , sehe ich, dass 3,68464 MHz auch als 2 * 1,8432 MHz dargestellt wird. Ich weiß nicht, was das bedeutet. Bedeutet dies, dass ich zwei 1,8432-MHz-Takte verwenden müsste, um irgendwie 3,6864 MHz zu erzeugen? Oder zeigt es mir nur, wie dieser Wert (3,6864 MHz) zustande kam? Wenn Ersteres zutrifft, wie KANN ich 3,6864 MHz mit zwei Oszillatoren bei einer niedrigeren Frequenz erzeugen? Sind Oszillatoren mit diesen "mehrfachen" Raten von 1,8432 MHz verfügbar?

Wird diese Kommunikation wirklich fehlerfrei sein, wie die verlinkten Seiten behaupten?

Wie würde ich den Oszillator an den Mikrocontroller anschließen? Das Datenblatt hat mich etwas verwirrt, weil Abschnitt 8.4 den Anschein erweckt, als würde ich den Oszillator zwischen XTAL1 und XTAL2 platzieren, während 8.8 vorschlägt, dass ich ihn an XTAL2 anschließe, wobei XTAL1 nicht angeschlossen ist. Es gibt also einige Verwirrung, obwohl ich eher glaube, dass letzteres das ist, wonach ich suche. Aber wie kann ich die beiden Pins eines Oszillators nur mit dem XTAL1-Pin verbinden?

I want to use a 3.6864 MHz external oscillatorMeinst du einen Kristall mit zwei Stiften ? Wenn ja, folgen Sie dem, was in Abschnitt 8.2 gezeigt wird, einschließlich zweier externer Kondensatoren
Abschnitt 8.4 spricht über den Kristalloszillator , dessen Leitungen mit XTAL1 bzw. XTAL2 (plus den entsprechenden Kondensatoren) verbunden werden müssen, während Abschnitt 8.8 über eine externe Taktquelle spricht , die einen Kristalloszillator, Kondensatoren und alle Schaltungen enthält, die zur Erzeugung eines solchen Takts erforderlich sind. Ich bin heute auf eine Antwort gestoßen, die die Unterschiede zwischen den beiden erklärt .
UART-basierte serielle Kommunikation, die einen 16x-Takt verwendet, kann relativ große Schwankungen der Quarzfrequenz tolerieren, ohne Fehler zu verursachen. Eine Frequenz, die innerhalb von 1 % des Idealwertes liegt, ist genauso gut wie Ihre exakte Frequenz und ziemlich einfach zu erreichen, wenn Sie mit einer höheren Quarzfrequenz beginnen.
@JoeHass Würde eine längere Kommunikation (z. B. für ungefähr 1 Sekunde) nicht zu einer Anhäufung von Fehlern führen?
Nein, bei dieser Art der Kommunikation synchronisiert sich der Empfänger am Anfang jedes Bytes neu mit dem Sender. Der Empfänger sucht nach der fallenden Flanke jedes Startbits und verwendet diese als Bezugspunkt. Der Empfänger tastet dann jedes Bit in der Mitte der erwarteten Bitdauer ab. Der kumulierte Zeitfehler kann also fast die Hälfte einer Bitzeit betragen, wenn das Stoppbit kommt und die Kommunikation immer noch erfolgreich ist.
Die einzige Situation, in der Sie sich um die Auswahl der richtigen Quarzfrequenz kümmern müssen, ist, wenn der Mikrocontroller eine niedrige Taktfrequenz hat, Sie aber die serielle Kommunikation mit einer hohen Baudrate betreiben möchten. Sie müssen in der Lage sein, die Quarzfrequenz auf das 16-fache der Baudrate mit einem Unterschied von weniger als etwa 2 % in Bezug auf die ideale Baudrate zu unterteilen.

Antworten (1)

Das Datenblatt verwirrte mich ein wenig, weil Abschnitt 8.4 den Anschein erweckt, dass ich den Oszillator zwischen XTAL1 und XTAL2 platziere, während 8.8 vorschlägt, dass ich ihn an XTAL2 anschließe, wobei XTAL1 nicht verbunden ist

Der Mikrocontroller verfügt über mehrere Taktquellenoptionen (intern oder extern).
Eine davon besteht darin, einen externen Quarz an XTAL1 - XTAL2 anzuschließen (Abschnitt 8.2).

Geben Sie hier die Bildbeschreibung ein

Eine andere Taktquelle kann ein externer Oszillator sein (d. h. ein externes Gerät, das die Taktimpulse erzeugt), das wie verwendet werden kann

Geben Sie hier die Bildbeschreibung ein

Sie können das eine oder das andere verwenden, nicht beide.

In Bezug auf Ihre Frage zum UART sollten Sie Abschnitt 19.11 überprüfen, der mehrere Tabellen enthält, die den Fehlerprozentsatz für eine bestimmte Baudrate und verwendete Quarzfrequenz zeigen.

Für Ihren speziellen Fall mit einem Quarz von 3,6864 MHz ist die Tabelle, die die möglichen Baudraten und den Fehlerprozentsatz zeigt

Geben Sie hier die Bildbeschreibung ein

und es ist mit 0 % Fehler in allen gängigen Boud-Raten perfekt nutzbar.

Sicherlich verwende ich einen Quarz mit 3,6864 MHz und nicht 2 Quarze mit halber Frequenz, oder? Es klingt lächerlich, ich weiß, aber die Art und Weise, wie die Seite, die ich verlinkt habe, diese Uhr darstellte, ließ mich ziemlich zweifeln.
@Analon Ja, Sie müssen nur einen Einkristall verwenden, der an XTAL1-XTAL2 und die entsprechenden Kondensatoren angeschlossen ist.
Bitte beachten Sie, dass sich der 0 %-Fehler nur auf den Fehler beim Teilen der Haupttaktfrequenz bezieht, um einen Baudratentakt zu erzeugen. Diese Tabelle bezieht sich nicht auf Fehler beim Senden und Empfangen von Daten. "Fehlerfreie Kommunikation" hängt von vielen anderen Faktoren ab.