Forum: Mikrocontroller und Digitale Elektronik Delay Zeit richtig berechnet?


von Delay (Gast)


Lesenswert?

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?

von Pete K. (pete77)


Lesenswert?

Hallo Jan, :-)

Rechnung stimmt.

Ein paar Zyklen werden noch für den Aufruf der Funktion und den 
Rücksprung draufgehen.

von holger (Gast)


Lesenswert?

>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.

von Delay (Gast)


Lesenswert?

Hallo beide =), danke!

@holger: Ist das nicht nur vom externen Takt zu internen?

von holger (Gast)


Lesenswert?

>@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.

von Delay (Gast)


Lesenswert?

Okay jetzt hab ich es gesehen. Danke dir!

von Delay (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.