Probleme bei der Verwendung von 20-MHz-Quarz mit PIC18f2420

Ich verwende PIC18f2420, um PWM zu erzeugen. Ich verwende Timer 2 mit 4-MHz-Kristall, der perfekt funktioniert, indem er mir PWM gibt. Ich brauche eine Frequenz von 100 kHz für PWM, wofür ein 4-MHz-Kristall nicht ausreicht, da dies meine Auflösung auf ein inakzeptables Niveau reduziert. Ich habe den 4-MHz-Quarz auf 20 MHz geändert, ohne die Konfigurationsbits, die Hardware oder das Programm zu ändern, da ich nicht weiß, was ich ändern muss. Könnt ihr mir bitte einen Rat geben was ich ändern soll? Mein Kristall ist mit zwei 27-pF-Kondensatoren verbunden, funktionieren sie auch für 20-MHz-Kristalle?

Aktuelle Konfigurationsbits:

#pragma config OSC = HS //HS oscillator 
#pragma config PWRT = ON, BOREN = OFF //power-up timer on, brown-out detect off 
#pragma config WDT = OFF //watchdog timer off 
#pragma config LVP = OFF //low voltage programming off 
#pragma config PBADEN = OFF //Configuration setting
  • Port B alle digitalen E/A
Das hängt fast ausschließlich von dem von Ihnen gewählten 20-MHz-Quarz ab. Einige Quarze benötigen andere Lastkapazitäten als andere. Lesen Sie das Datenblatt.
Wie wäre es, diese Konfigurationsbits anzuzeigen?
Wenn Sie einen 10-MHz-Quarz verwenden und Ihre Fosc-Bits in CONFIG1H auf die HSPLL-Einstellung (0110) setzen, um den 4-fachen PLL-Taktmultiplikator zu aktivieren, haben Sie 40 MHz, mit denen Sie arbeiten können. Das ergibt 100 Schritte PWM-Tastverhältnisauflösung bei 100 kHz.
Was ist, wenn ich keinen PLL-Taktmultiplikator verwenden möchte und nur einen 20-MHz-Quarz direkt verwenden möchte? Es gibt mir nur ein zufälliges Sinuswellensignal mit Rauschen am PWM-Pin.
Tut: Dies sind die Konfigurationsbits: #pragma config OSC = HS //HS-Oszillator #pragma config PWRT = ON, BOREN = OFF //Einschalttimer an, Brownout-Erkennung aus #pragma config WDT = OFF //watchdog Timer aus #pragma config LVP = OFF // Niederspannungsprogrammierung aus #pragma config PBADEN = OFF // Konfigurationseinstellung, Port B alle digitalen E/A
Fügen Sie sie in Ihre Frage ein, indem Sie den "Code"-Stil verwenden.

Antworten (1)

Erstens funktioniert Ihr Kristall gut mit 27-pf-Kondensatoren, wenn er für den Betrieb mit 27-pf-Kondensatoren ausgelegt ist . Bitte geben Sie einen Link zum Datenblatt für den Kristall an, damit wir sehen können, was er benötigt (27pf klingt für mich etwas hoch).

Zweitens klingt es nach Ihrer Beschreibung so, als würde der Kristall möglicherweise nicht schwingen. Ihre Konfigurationsbits sehen für einen 20-MHz-Quarz gut aus.

Stellen Sie die Sonde mit Ihrem Oszilloskop auf die 10-fache Impedanz ein. Prüfen Sie dann den OSCIPin des PIC18, um zu sehen, ob Sie eine 20-MHz-Wellenform erhalten. Wenn ja, dann oszilliert es offensichtlich. Wenn nicht, dann ist es nicht in der Lage, die Oszillationen zu starten. Dies könnte daran liegen, dass Ihre Lastkondensatoren zu groß sind (wie gesagt, 27pf klingen etwas hoch, aber wir können das nicht sagen, ohne zu wissen, welchen Kristall Sie verwenden).

Das "zufällige Sinuswellensignal" ist wahrscheinlich der Pin mit hoher Impedanz, da der Chip nicht startet, sodass Sie lokales Rauschen aus dem Netz aufnehmen.