Können Sie einen Kristall für einen PIC-Mikrocontroller auswählen?

8

Ich benutze den PIC16F690 und weiß, dass der interne Oszillator bestimmte Werte hat (20,8,4 ...).

Ich würde gerne einen externen 8-MHz-Kristall einsetzen, konnte aber nur 8,8-MHz oder 7,6-MHz finden.

Ich würde gerne wissen, ob es möglich ist, eines davon auf den PIC zu setzen, oder muss es genau 8 MHz sein? Wie soll ich die Kondensatoren für jeden auswählen?

Curnelious
quelle

Antworten:

10

Sie können jeden Kristall verwenden, solange er innerhalb des Frequenzbereichs liegt, für den der PIC-Kristalltreiber angegeben ist.

Der Crystal-Treiber der meisten PICs (ich habe Ihren PIC nicht speziell nachgeschlagen, das ist Ihre Aufgabe) kann auf drei verschiedene Laufwerkspegel eingestellt werden, die normalerweise als LP (Low Power), XT (Crystal) und HS (High Speed) bezeichnet werden. Die langsameren verbrauchen weniger Strom, haben aber auch eine niedrigere maximale Kristallfrequenz, die sie unterstützen können. Der HS-Modus kann empfindliche niederfrequente 32768-Hz-Kristalle übersteuern und beschädigen, wie sie in Armbanduhren verwendet werden. Zusammen decken die drei Kristallantriebspegel den Bereich von einigen 10 kHz bis 20 MHz ab. Dies ist der schnellste Wert, mit dem PIC ohnehin betrieben werden kann.

Ein weiterer Punkt ist, dass Sie einen Kristall verwenden möchten, der für die Parallelresonanzanwendung spezifiziert ist. Das heißt, seine Frequenz wird für die Art und Weise angegeben, wie der PIC-Kristalltreiber den Kristall antreibt. Diese Kristalle werden mit einer Lastkapazität spezifiziert. Serienresonanzkristalle funktionieren, aber die Frequenz liegt wahrscheinlich nicht innerhalb der Toleranz.

Olin Lathrop
quelle
Vielen Dank . Mein Problem war, dass der interne Oszillator mir einen Befehlstakt von 0,47 us anstelle von 0,5 us gab - für die 8 MHz. Ich denke also, ein EXTERNER Oszillator wird genauer sein. ist das wahr? eine andere Sache, ich konnte nicht verstehen, wie man die Sicherungen für dieses f einstellt?
Curnelious
4
@Curn: Ja, ein externer Kristall ist genauer als der interne Oszillator. Selbst billige Kristalle sind gut für 50 ppm, und 20 ppm sind normalerweise für nicht viel mehr Geld erhältlich. Die Konfigurationseinstellungen sind alle im Datenblatt gut beschrieben. Für einen 8-MHz-Quarz sollten Sie den HS-Modus verwenden.
Olin Lathrop
8

Angenommen, Sie überschreiten nicht die Taktrate im Silizium, den programmierten Sicherungen und dem Anwendungscode, können Sie einen beliebigen Kristall verwenden. In den Datenblättern wird erläutert, welche Kondensatoren verwendet werden sollen.

Ignacio Vazquez-Abrams
quelle
3
Es ist erwähnenswert, dass das Ändern der Taktrate auch die Berechnungen für Dinge wie Baudrate und Intervall-Timer ändert. Es scheint offensichtlich, aber es ist leicht zu vergessen.
Scott Winder
@Scott: Nur wenn Sie unverantwortlichen Code mit Baudratenteilern und dergleichen schreiben, der fest codiert ist. Bei richtiger Codierung ändern Sie eine Zahl, die die Oszillatorfrequenz ist, und alles wird zum Zeitpunkt der Erstellung automatisch daraus abgeleitet, wobei natürlich Fehler auf unmögliche oder außerhalb des Bereichs liegende Fälle überprüft werden. Sie haben Recht damit, dass Sie daran denken müssen, die eine Nummer zu ändern.
Olin Lathrop
1
@OlinLathrop: Ich stimme Ihnen bei geringfügigen Frequenzänderungen zu. Bei drastischen Frequenzänderungen kann jedoch eine Änderung des Vor- und / oder Nachskalars eines Baudratengenerators erforderlich sein, um die Zwischenfrequenzen innerhalb des empfohlenen Bereichs zu halten. Auf der Timerseite können einige Schalter in der Taktfrequenz zu Überläufen führen, und jede andere Frequenz führt zu einer anderen Taktauflösung. Daher ist das Ändern der Timeranzahl (mithilfe eines Frequenzmakros) nur ein Teil der Lösung. Die Zeitschaltuhr muss möglicherweise auch modifiziert werden, um die erforderliche Genauigkeit und Länge zu erreichen.
Scott Winder
1
@Scott: Aber das ist alles, was entweder zum Zeitpunkt der Erstellung berechnet oder zumindest überprüft wird. Wenn Sie so etwas wie einen Prescaler fest codieren (normalerweise nicht erforderlich) und die neue Befehlshäufigkeit nicht unterstützt, was Sie tun möchten, gibt der Build-Time-Code einen Fehler aus, der Sie benachrichtigt. Wenn es damit umgehen kann, tut es dies stillschweigend. Es gibt keine Entschuldigung für eine Frequenzänderung, die stillschweigend ein Problem verursacht. Das ist nur schlechte Codierung.
Olin Lathrop
@OlinLathrop: Ich bin nicht anderer Meinung. Ich möchte nur darauf hinweisen, dass es nicht immer so einfach ist, eine einzelne Zahl zu ändern, selbst bei guter Codierung. In jedem Fall ist es etwas zu beachten, wenn Sie die Frequenz ändern.
Scott Winder
0

Wie im Datenblatt angegeben, können Sie einen Oszillator mit bis zu 20 MHz verwenden. Für Kondensatoren kann Ihnen das Datenblatt sagen, welche Art von Kondensator verwendet wird, aber für die Menge an Kondensator sollten Sie Ihre Erfahrung verwenden.

Roh
quelle
1
Zwar ist "Erfahrung" immer eine gute Sache, aber die erforderliche Lastkapazität hängt vom Kristall ab und sollte im Kristalldatenblatt angegeben werden. Dies hat mit der Parallelresonanzfrequenz zu tun. Außerdem sollte die Streukapazität der uC-Pins und -Spuren berücksichtigt werden.
Rev1.0
@ Rev1.0 Großartig und danke! Ich habe für dich gestimmt. Zum Beispiel habe ich dieses Datenblatt gesehen: html.alldatasheet.com/html-pdf/236074/CRYSTEKCRYSTAL/CYSDXX/… rechts davon sehen Sie eine Tabelle (Standard- Teilenummer ). soll ich es für die Auswahl des Kondensators verwenden? Soll ich zum Beispiel für 16 MHz einen 20pf-Kondensator verwenden?
Roh
1
Nein, die angegebene Lastkapazität ist die erforderliche Gesamtkapazität, nicht der Wert für beide Kondensatoren. Berechnen Sie CX = 2 * (CL - Cstray), wobei CX der benötigte Kondensator ist, CL = 20pf und Cstray von Ihrem Design abhängt (ca. 2-5pf).
Rev1.0
1
Cstray ist die Kapazität der Mikrocontroller-Pins (Datenblatt) + die parasitäre Kapazität der Leiterbahnen auf Ihrer Platine (kann bei Kenntnis von Länge, Breite und Schicht der Leiterbahnen angenähert werden). Wenn dies nur für ein Hobbyprojekt ist, nimm 5pf an und sei wahrscheinlich in Ordnung.
Rev1.0
1
Lies und verstehe das :). "Wenn Cin und Cout nicht angegeben sind, ist ein Schätzwert von 5 pF für jeden ein guter Anfang."
Rev1.0