Forum: Mikrocontroller und Digitale Elektronik PIC32 Konfigurations-Bits


von Benny (Gast)


Lesenswert?

Hallo,

ich habe einen PIC32MX250F128B (die 40 MHz Version). Ich würde gerne den 
Prozessor auch mmit 40 MHz betreiben, doch ich bekomme es leider nicht 
hin. Ich habe einen externen Quarz (8 MHz) an OSC1 und OSC2 
angeschlossen. Meine Konfigurations-Bits sehen wie folgt aus:
1
#pragma config UPLLEN   = ON
2
#pragma config UPLLIDIV = DIV_1
3
#pragma config FPLLMUL  = MUL_20
4
#pragma config FPLLIDIV = DIV_10
5
#pragma config FPLLODIV = DIV_1
6
#pragma config FPBDIV   = DIV_1
7
#pragma config FWDTEN   = OFF
8
#pragma config WDTPS    = PS1
9
#pragma config FCKSM    = CSDCMD
10
#pragma config OSCIOFNC = OFF
11
#pragma config POSCMOD  = XT
12
#pragma config IESO     = ON
13
#pragma config FSOSCEN  = OFF
14
#pragma config FNOSC    = PRIPLL
15
#pragma config CP       = OFF
16
#pragma config BWP      = OFF
17
#pragma config PWP      = OFF
18
#pragma config ICESEL   = ICS_PGx1
19
#pragma config JTAGEN   = OFF
20
#pragma config DEBUG    = ON
Des Weiteren rufe ich während der Initialisierung folgende Funktionen 
auf:
1
SYSTEMConfigPerformance(40000000ul);
2
mOSCSetPBDIV(OSC_PB_DIV_1);

Warum ich vermute, dass es nicht richtig funktioniert ist, dass mein 
Timer (den ich genauso bei einem PIC32MX795F512L verwende) nicht richtig 
läuft. Ich vermute irgendwelche Konfigurationsbits (FPLLMUL, FPLLIDIV, 
FPLLODIV) passen nicht. Wir berechnet man diese Werte (gibt es da eine 
Formel?)

Aus dem Handbuch vom PIC32MX 1/2 bin ich leider auch nicht schlau 
geworden.

Kann mir jemand helfen?

von Tobias L. (murxwitz)


Lesenswert?

8MHz * 20 (PLLMUL) / 10 (PLLIDIV) mach doch 16MHz
besonders sind 8MHz / 10 doch nicht innerhalb der Spez von 4-5MHz Fin
Schau mal im Datenblatt unter "OSCILLATOR CONFIGURATION" da ist ein 
schönes Diagram

von Benny (Gast)


Lesenswert?

Ich habe aus versehen die falsche Konfiguration gepostet. Das hier ist 
die richtige (bzw. die die bei mir Probleme macht):
1
#pragma config FNOSC    = PRIPLL
2
#pragma config FSOSCEN  = OFF
3
#pragma config POSCMOD  = XT
4
#pragma config OSCIOFNC = OFF
5
#pragma config FPBDIV   = DIV_1
6
#pragma config FPLLIDIV = DIV_2
7
#pragma config FPLLMUL  = MUL_20
8
#pragma config FPLLODIV = DIV_2
9
#pragma config UPLLIDIV = DIV_2
10
#pragma config UPLLEN   = ON
11
#pragma config IESO     = OFF
12
#pragma config FCKSM    = CSDCMD
13
#pragma config FWDTEN   = OFF
14
#pragma config CP       = OFF
15
#pragma config BWP      = OFF
16
#pragma config PWP      = OFF
17
#pragma config ICESEL   = ICS_PGx1
18
#pragma config JTAGEN   = OFF
19
#pragma config DEBUG    = ON

Das Block-Diagramm habe ich bereits angeschaut und von daher fällt mir 
auch kein Fehler auf.
Bezüglich der Formel: Ich dachte immer 8MHz / FPLLODIV * MPLLMUL / 
FPLLIDIV = x. Und das wären 40 MHz!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.