PIC18F2550 Oszillatoreinstellungen?

Ich bin etwas verwirrt über die Oszillatoreinstellungen für PIC18F2550. Ich habe einen 20-MHz-Quarz (keinen Oszillator) und ich möchte, dass PIC (wenn möglich) mit 48 MHz (sowohl PIC-Kern als auch USB) funktioniert.

Dies ist Teil einer Tabelle aus dem Datenblatt:Geben Sie hier die Bildbeschreibung ein

In der Tabelle sehen Sie, dass ich für einen 20-MHz-Eingangsquarz, wenn ich möchte, dass uC mit 48 MHz arbeitet, den Taktmodus auf HSPPL und die MCU-Taktteilung auf 2 einstellen muss. So verstehe ich zumindest die Tabelle. Ist meine Interpretation der Tabelle richtig?

So habe ich mein mikroC-Projekt basierend auf dieser Tabelle eingerichtet:Geben Sie hier die Bildbeschreibung ein

Ist das richtig? Wird uC mit 48 MHz (12 MIPS) betrieben? Geben Sie außerdem auf der rechten Seite (Feld Oszillatorfrequenz [MHz]) 20 MHz oder 48 MHz ein?

Außerdem habe ich bemerkt (wenn ich richtig liege), dass ich uC dazu bringen kann, mit 4-MHz-Quarz und 20-MHz-Quarz bei 48 MHz zu arbeiten. Gibt es einen Vorteil bei der Verwendung eines 20-MHz-Quarzes? Oder sollte ich einen 4-MHz-Quarz verwenden?

Antworten (1)

Erstens: Haben Sie einen 20-MHz-Quarz oder einen Quarzoszillator? Das sind zwei verschiedene Dinge. Ein Quarzoszillator erzeugt von sich aus ein 20-MHz-Taktsignal für den PIC, und Sie verwenden die externe Oszillatoroption damit.

Andererseits ist der Quarzkristall ein externer Teil des internen Oszillators und interne Komponenten bilden zusammen mit dem Quarz und den Lastkondensatoren einen vollständigen Oszillator. In einer solchen Konfiguration verwenden Sie verschiedene Kristallmodi. Sehen Sie sich auch Abbildung 2.2 auf Seite 27 des Datenblatts an.

Um diesen Teil nun richtig einzurichten, müssen Sie ein paar Dinge verstehen, also zitiere ich das Datenblatt:

Wenn der PIC18F4550 für USB-Konnektivität verwendet wird, muss er entweder einen 6-MHz- oder einen 48-MHz-Takt für den USB-Betrieb haben, je nachdem, ob der Low-Speed- oder der Full-Speed-Modus verwendet wird.

Sie müssen die Dinge so kombinieren, dass der USB-Takt 48 MHz oder 6 MHz beträgt, und dann müssen Sie die Betriebsfrequenz des Mikrocontrollers so einstellen, dass er mit angemessener Geschwindigkeit arbeitet. Diese beiden Uhren können unterschiedlich sein.

Auf Seite 26 des Datenblatts haben Sie ein schönes Diagramm, für dessen Analyse Sie sich Zeit nehmen sollten. Der USB-PLL-Eingang erwartet eine 4-MHz-Frequenz, die er verwendet, um die 96 MHz zu erzeugen, aus denen er die Betriebsfrequenz für USB und den Mikrocontroller ableitet.

In Ihrem Screenshot werden die 20 MHz durch 5 geteilt, um die für die USB-PLL erforderlichen 4 MHz zu erhalten, die diese dann auf 96 MHz erhöhen, wie im Abschnitt PLL-Prescaler zu sehen ist.

Dann haben Sie den Postscaler-Bereich für die Systemuhr. Es ist derzeit so eingestellt, dass es die von USB PLL erzeugten und durch 2 geteilten 96 MHz als Hauptsystemtakt verwendet. Sie haben auch andere Optionen, um die Hauptsystemuhr einzustellen. Ich kann mich nicht genau erinnern, was sie sind, und ich habe gerade meine Festplatte formatiert, also ist mikroC noch nicht installiert. Sie sollten Ihnen anbieten, den Systemtakt von einem internen Oszillator oder direkt von dem Takt abzuleiten, der verwendet wird, um die 4 MHz für die USB-PLL zu erzeugen, oder wie im Screenshot gezeigt von den 96 MHz, die von der USB-PLL erzeugt werden.

Der Punkt hier ist, dass Sie die Hauptuhr und die USB-Uhr unabhängig voneinander auswählen können. Wenn Sie beispielsweise einen 20-MHz-Oszillator haben, können Sie den PIC-Haupttakt mit diesen 20 MHz und gleichzeitig den USB-Takt mit den erforderlichen 48 MHz betreiben.

Als nächstes haben Sie den Oszillator-Auswahlteil. Für echte Quarzoszillatoren sollten Sie EC-Optionen verwenden und den Ausgang des Oszillators mit dem OSC1/CKLI-Pin (in Ihrem Fall Pin 9) verbinden. Sie können dann den 20-MHz-Oszillator verwenden, um den PIC anzusteuern.

Falls Sie einen Kristall verwenden, müssen Sie die Kristalloptionen verwenden. Das sind XT für niederfrequente Quarze bis 4 MHz und HS für hochfrequente Quarze bis 20 MHz, wenn ich mich recht erinnere.

Welcher Kristall besser ist, hängt von vielen Dingen ab, z. B. welchen genauen Kristall Sie verwenden, seine Eigenschaften, Eigenschaften der im PIC verwendeten PLL und so weiter.

Normalerweise driften Niederfrequenzkristalle mit der Zeit weniger und erzeugen ein saubereres Signal, während Hochfrequenzkristalle als Ausgang oft eine Oberwelle mit einer niedrigeren Frequenz abgeben und das Signal normalerweise schwächer ist. Ich selbst würde hier den 4 MHz Quarz verwenden.

Auch den letzten Teil Ihrer Frage habe ich vergessen: Im Feld „Oszillatorfrequenz“ sollten Sie die effektive Arbeitsfrequenz des PICs eingeben, also die Frequenz, die der „Primärtakt“ in Abbildung 2.1 auf Seite 25 des Datenblatts sieht . In Ihrem speziellen Fall wären das 48 MHz.

Zusammenfassend also: Im 20-MHz-Kristallgehäuse sollten Sie zunächst die „Oszillatorauswahl“ auf HSPLL stellen. Das ergibt 20 MHz am Eingang des "primären Oszillators" in der oben erwähnten Abbildung 2.1. Als nächstes sollten Sie den PLL-Vorteiler so einstellen, dass er durch 5 teilt, sodass Sie 4 MHz erhalten, die mit 24 multipliziert werden, um die 96 MHz für USB zu erhalten. Stellen Sie als nächstes die "USB-Taktauswahl" auf 96 MHz geteilt durch 2 und die "Systemtakt-Postscaler-Auswahl" auf 96 geteilt durch zwei ein. Stellen Sie abschließend die Oszillatorfrequenz auf 48 MHz ein und Sie sind mit diesem Teil fertig.

Für den 4-MHz-Quarz sollten Sie zuerst HSPLL einstellen. Stellen Sie den PLL-Vorteiler auf geteilt durch 1 und dann die „USB-Taktauswahl“ auf 96 MHz geteilt durch 2 und die „Systemtakt-Postscaler-Auswahl“ auf 96 geteilt durch zwei und die Oszillatorfrequenz auf 48 MHz und fertig.

Vielen Dank für diese große Antwort :) Ich habe einen 20-MHz-Quarz, keinen Oszillator (das habe ich in der Frage korrigiert). Ich bin nur etwas verwirrt mit einigen Dingen, also werde ich versuchen, sie hier zu fragen. 1) Sie sprechen von mehreren PLL-Einheiten. Auf der Abbildung 2-1 im Datenblatt sehe ich nur eine PLL und zwei konfigurierbare Postscaler. Sie haben auch das Übertakten erwähnt. Ich glaube nicht, dass ich das mache, weil ich PLL nicht direkt auf der Eingangsfrequenz (20 MHz) verwenden kann. Ich werde diese Nachricht in einem anderen Kommentar fortsetzen.
Wenn ich den PIC für HSPLL konfiguriere, werden die ersten 20 MHz durch 5 geteilt, um 4 MHz zu erhalten. Dieser 4-MHz-Takt wird von PLL verwendet, um einen 96-MHz-Takt zu erzeugen. Danach haben wir ein CPUDVI-Element (PLL-Postscaler), das 96 MHz durch 2 teilt – und wir erhalten ein 48-MHz-Taktsignal, das als primärer Takt verwendet wird. Bitte sagen Sie mir, wenn ich etwas falsch verstanden habe. Danke :)
@ xx77aBs Eigentlich denke ich, dass Sie mit zwei PLLs Recht haben, also sollte HSPLL verwendet werden. Ich weiß nicht mehr, was ich damals gedacht habe ... Ich denke, dass Ihr zweiter Kommentar richtig ist.
@xx77aBs Denken Sie im Zweifelsfall daran, dass Sie die Systemuhr immer geteilt durch 4 auf einem Pin ausgeben und dies mit einem Oszilloskop, Zähler, Multimeter oder etwas anderem sehen können.