Forum: Mikrocontroller und Digitale Elektronik pic18f2550 auf 48Mhz


von Marco S. (sharkman)


Lesenswert?

Hi.

Ich versuch grad zum ersten mal den pll modus zu nutzen, allerdings 
springt das ganze bei mir nicht so richtig an.

wenn ich das richtig verstanden habe, müsste ich mit einem externen 
12MHz quarz und plldiv=1, sowie cpudiv=0sc1_SRC2 dann auf die 48 MHz 
kommen oder nicht?

bei mir läuft dann aber scheinbar der quarz nicht mehr an und ich komm 
nicht mehr in den debug modus. sind jetzt meine überlegungen falsch oder 
kann es sein, dass es mir da irgendwas zerbröselt hat?

von Fred R. (seek51)


Lesenswert?

Nein. 96Mhz PLL Prescaler div by 3 (12 MHZ Input)
OSC/OSC2 SCR/1 96 Mhz PLL Src / 2
Clock Scr from 96Mhz PLL /2
HS HS+PLL

Config 1 H = 0X0021
Config 1 L = 0x000E

von Marco S. (sharkman)


Lesenswert?

hmm kannst du mir das mal bitte aufschlüsseln.

ich hab mich vorher ein bisschen quer eingelesen. allerdings steht 
überall dass der pll mode einen vervierfacher darstellt. damit wäre nach 
meiner rechnung 4x4 = 16 und nicht 48.

von ado (Gast)


Lesenswert?

Sieh mal auf Seite 24.

Der PLL funktioniert nur mit einer Eingangsfrequenz von 4Mhz.
Deinen Quarztakt muß jetzt von 12 auf 4 MHz heruntergetaktet werden.
In diesem Fall durch die Einstellung :3

In MPLAB kannst du mal unter Configure/ConfigurationBits  dir die 
Möglichkeiten mal ansehen .
Die Config-Bits würde ich aber im Code einstellen.
Ala:
1
/** CONFIGURATION BITS **************************************************/
2
3
#pragma config PLLDIV   = 4         // (16 MHz crystal on PICDEM FS USB board)
4
#pragma config CPUDIV   = OSC1_PLL2   
5
#pragma config USBDIV   = 2         // Clock source from 96MHz PLL/2
6
#pragma config FOSC     = HS
7
#pragma config FCMEN    = OFF
8
#pragma config IESO     = OFF
9
#pragma config PWRT     = ON
10
#pragma config BOR      = OFF
11
#pragma config BORV     = 3
12
#pragma config VREGEN   = ON      //USB Voltage Regulator
13
#pragma config WDT      = OFF
14
#pragma config WDTPS    = 32768
15
#pragma config MCLRE    = ON
16
#pragma config LPT1OSC  = OFF
17
#pragma config PBADEN   = OFF
18
#pragma config CCP2MX   = ON
19
#pragma config STVREN   = ON
20
#pragma config LVP      = OFF
21
#pragma config ICPRT    = OFF       // Dedicated In-Circuit Debug/Programming
22
#pragma config XINST    = OFF       // Extended Instruction Set
23
#pragma config CP0      = OFF
24
#pragma config CP1      = OFF
25
#pragma config CP2      = OFF
26
#pragma config CP3      = OFF
27
#pragma config CPB      = OFF
28
#pragma config CPD      = OFF
29
#pragma config WRT0     = OFF
30
#pragma config WRT1     = OFF
31
#pragma config WRT2     = OFF
32
#pragma config WRT3     = OFF
33
#pragma config WRTB     = OFF       // Boot Block Write Protection
34
#pragma config WRTC     = OFF
35
#pragma config WRTD     = OFF
36
#pragma config EBTR0    = OFF
37
#pragma config EBTR1    = OFF
38
#pragma config EBTR2    = OFF
39
#pragma config EBTR3    = OFF
40
#pragma config EBTRB    = OFF
41
//#pragma config DEBUG    = ON           Background debugger enabled, RB6 and RB7 are dedicated to In-Circuit Debug

Ich habe alle Einstellungen in meiner  Config-Datei.
Im allgemeinen brauchst du nur ein paar dieser Parameter setzen
und nicht wie ich alle.

von Marco S. (sharkman)


Lesenswert?

ja das kommt mir sehr bekannt vor. allerdings ist mir die rechnung immer 
noch nicht klar.

aber ok. ich nehm das jetzt einfach mal hin. mich würde nur ma 
linteressieren wo ich jetzt sehen kann was sache ist. gibt es eine 
möglichkeit sich den takt mal nach außen hin am oszi anzuschauen.

wenn ich das richtig verstehe müsste ich im ec_ec mode doch am pin ra6 
sehen können wie groß die Frequenz ist mit der das ganze schwingt oder 
nicht?

von holger (Gast)


Lesenswert?

>wenn ich das richtig verstehe müsste ich im ec_ec mode doch am pin ra6
>sehen können wie groß die Frequenz ist mit der das ganze schwingt oder
>nicht?

Wenn du statt Quarz einen externen Takt anlegst ja.

von Marco S. (sharkman)


Lesenswert?

hmm, nein ich würde es schon gerne mit einem quarz haben. kann ich da 
auch irgendwie messen was hinten raus kommt. ich kenn das, dass ich 
einen pin toggeln lasse. gibts da anoch ne andere methode?

von holger (Gast)


Lesenswert?

>ich kenn das, dass ich einen pin toggeln lasse.

Dann tu es doch. Was hindert dich daran?

von Marco S. (sharkman)


Lesenswert?

Ja ich habs jetzt auch einfach gemacht. ich dachte nur es gibt 
vielleicht noch ne andere möglichkeit.

und ja, er schwingt wie gewünscht mit den 48MHz.

jetzt aber mal noch ne andere Frage. kann man theoretisch auch noch mehr 
rausholen oder geht der pic dann in den streik und will nicht mehr? ist 
nur ne reine interessen frage, ist erstmal nicht von nöten.

und ich würde mich doch sehr freuen, wenn mir das mal jemand mit dem pll 
genau erklären könnte was da passiert, weil ich immernoch nicht auf die 
passende geschwindigkeit mit dem faktor 4 beim rechnen komme. das macht 
mich irgendwie stutzig und würde mich interessieren.

aber schon mal besten dank für die hilfe

von Nico (prinzenrolle)


Lesenswert?

Hallo,
ich hatte ein ähnliches Problem.
Um zu schauen wie "schnell" mein pic ist habe ich einen Iin toggeln 
lassen und mit dem Oszi die Freqeuenz gemessen.

gruß

von Hans W. (stampede)


Lesenswert?

> jetzt aber mal noch ne andere Frage. kann man theoretisch auch noch mehr
> rausholen oder geht der pic dann in den streik und will nicht mehr? ist
> nur ne reine interessen frage, ist erstmal nicht von nöten.
>
> und ich würde mich doch sehr freuen, wenn mir das mal jemand mit dem pll
> genau erklären könnte was da passiert, weil ich immernoch nicht auf die
> passende geschwindigkeit mit dem faktor 4 beim rechnen komme. das macht
> mich irgendwie stutzig und würde mich interessieren.

Theoretisch geht immer mehr, garantiert ist es aber nicht.
Bringen tuts hier erst recht nichts, da der 18F2550 mit 96MHz/2 als 
USB-Clock Eingang laufen muss. Als Stellschrauben hast du nur die 
Quarzfrequenz (müssen aber Vielfache von 4 damit die USB Frequenz 
passt). Die Teiler und PLL lassen sich nicht so einstellen, dass du den 
PIC übertakten könntest.

Was gibts an der PLL nicht zu verstehen? Sie multipliziert den ihren 
Eingangstakt (4MHz) mit 24 auf 96MHz. Dieser wird dann für die USB 
Peripherie und den Kern entsprechend runtergeteilt. Wie die PLL das nun 
mit dem Vervielfachen anstellt, ist mal eine andere Geschichte.

Der Maximale Takt des Prozessorkerns ist also 48MHz, wie auf dem Bild 
2-1 im Datenblatt zu erkennen ist. Durch die interne Struktur läuft der 
PIC effektiv nur mit 12MIPS, da ein Befehl 4 Takte zur Abarbeitung 
braucht (Holen, Decodieren, Berechnen, Zurückschreiben).

von Marco S. (sharkman)


Lesenswert?

gut wenn du sagst er multipliziert mit 24 leuchtet mir das ganze wieder 
ein. ich hatte nur mehr fach gelesen dass das pll modul mit der faktor 4 
multipliziert, da bin ich denn einfach auf keinen grünen zweig gekommen.

aber danke schön, wieder was dazugelernt

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.