Hallo zusammen, ist meine Rechnung richtig / habe ich es richtig verstanden? Ich habe eine Funktion, welche 1000 Zyklen wartet: /* Delay1KTCYx * Delay multiples of 1000 Tcy * Passing 0 (zero) results in a delay of 256,000 cycles. * The full range of [0,255] is supported. */ Also wenn ich Delay1KTCYx(1); aufrufe, wird 1000 Zyklen "gewartet", richtig? Ich habe einen Takt von 48MHz (durch PLL). Also eine Zykluszeit von 20,83(per)ns. Sprich 1000 "Wartezyklen" machen 20,83(per)µs. Ist das korrekt?
Hallo Jan, :-) Rechnung stimmt. Ein paar Zyklen werden noch für den Aufruf der Funktion und den Rücksprung draufgehen.
>Ich habe einen Takt von 48MHz (durch PLL). Also eine Zykluszeit von >20,83(per)ns. Sprich 1000 "Wartezyklen" machen 20,83(per)µs. Ist das >korrekt? Nein, der Takt muss immer noch durch 4 geteilt werden. Es sind also knapp 84us.
Hallo beide =), danke! @holger: Ist das nicht nur vom externen Takt zu internen?
>@holger: Ist das nicht nur vom externen Takt zu internen?
Nein, das ist auch bei der PLL so. Schau dir im Datenblatt
mal das Diagramm zur Taktverteilung an.
Jetzt muss ich doch nochmal nach hacken. Das sind meine Einstellungen mit einem 12 MHz Keramik Resonator:
1 | #pragma config FOSC = HSPLL_HS
|
2 | #pragma config PLLDIV = 3
|
3 | #pragma config CPUDIV = OSC1_PLL2
|
Dann habe ich also einen 48 MHz Takt z.B. für USB und einen 24 MHz Takt(intern). Kann man das so sagen?
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.