Hallo, ich habe da ein Problem und zwar benutze ich den PIC 18f6527 der sich ja intern auf 32 MHz per PLL also intern 8MHz * 4 = 32 MHz takten lässt. So nun nach ewigen rumprobieren bekomme ich aber diese 32MHz nicht hin. Habe schon den Takt auf einen PIN gelegt um zu messen, bekomme aber immer nur die 8MHz raus!!! Ich bitte um Hilfe!!! Ich habe in der Suchfunktion auch nichts gefunden!!! Registerwerte: OSCTUNE = 0x40 OSCCON = 0x72 Schonmal vielen Dank!!!
Wie hast du den Takt auf den Pin gelegt? Bedenke, selbst wenn du im Code sowas in der Art hast... while(1) { mein_pin^=(1<<PX1); } ... wird der Pin nicht mit f_clk getoggelt, da ja auch Zeit für Register setzen und Rücksprung in der Schleife einige Takte benötigt.
> Habe schon den Takt auf einen PIN gelegt um zu messen, bekomme aber > immer nur die 8MHz raus!!! Und wie hast Du das gemacht? Ich würde sagen, alles ganz normal :-) Die PIC18-Familie benötigt pro Befehl 4 Quarztakte. Also wenn Du extern einen 8 MHz Quarz dranhängen hast und die 4xPLL aktiviert ist, dann läuft der PIC "intern" eben mit 8 MHz. Das steht aber auch im Datenblatt ;-)
per
1 | #pragma config OSC = INTIO7
|
da liegt dann der Fosc / 4 auf Port RA6
Richtig!!! 8MHz sind intern eingestellt und läuft auch damit! Und durch die config einstellung messe ich 2MHz am Port
Deine Einstellungen sind alle OK, daher kommen hier auch keine Antworten. Ich könnte mir nur noch vorstellen, daß dein Compiler falsche Config-Settings benutzt (z.B. falsches Device). Dann kannst du dich auf High-Level Ebene totsuchen. Falls du also einen Compiler benutzt, teste bitte mal den Pic mit einen kleinen Assemblerprogramm.
tönt schwer danach, dass der PLL nicht funktioniert. im DS steht "The PLL is available when the device is configured to use the internal oscillator block as its primary clock source (FOSC<3:0> = 1001 or 1000). Additionally, the PLL will only function when the selected output frequency is either 4 MHz or 8 MHz (OSCCON<6:4> = 111 or 110). If both of these conditions are not met, the PLL is disabled and the PLLEN bit remains clear (writes are ignored)." die werte FOSC<3:0> mal überprüfen = ? die PLL stellst du auch mit den config bits beim brennen ein, sind diese auch korrekt?
Wichtig ist, erst OSCCON einzustellen und danach erst OSCTUNE. Sonst wird die PLL nicht eingeschaltet, weil der PIC noch mit den 1MHz nach dem Reset läuft...
Schau dir mal Figure 2-10 im Datenblatt an. Der Clock Output ist eben Fosc/4 und nicht Fosc * PLL / 4. Wenn du den CPU Clock testen willst, so musst du ein Assembler Loop schreiben, oder einen Timer entsprechend programmieren. Aber wie schon von Zwirbeljupp erwähnt brauchen die PIC18 4 Takte oder mehr pro Instruktion. Du wirst also nie 32 MIPS erhalten. Andi
@Arthur S. Mach mal OSCCON = 0x70, dann kriegst du die 8 Mhz am RA6. Erkennt man im Bild 2-10, das die PLL nur über den Primary Clock reinkommt. #pragma config OSC = INTIO7 setzt dann den Internen Oscilator schon als Primary Clock. Und wie gesagt, erst danach die PLL einschalten. Hab ich gerade extra ausprobiert...
Ich danke für die Tipps wenn ich mal dazu komm es zu testen dann sage ich bescheid!!! Vielen Dank!!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.