Forum: Mikrocontroller und Digitale Elektronik SPI Clock verwenden


von Mirco H. (mirq)


Lesenswert?

Hi,

ich möchte an einem PIC24HJ128GP502 gerne an einem PIN einen Takt von 
8MHz erzeugen. Eigentlich sollte dies doch relativ einfach mit dem 
Serial Clock Pin des SPI-Moduls funktionieren, oder nicht?
Leider zeigt das Oszilloskop dass eben kein Takt am Pin anliegt.
Ist es möglich SCK zu verwenden ohne dass eine Kommunikation über SPI 
stattfindet und eben nur der PIN die ganze Zeit toggled?

Viele Grüße,
Mirco

von Lehrmann M. (ubimbo)


Lesenswert?

Mirco H. schrieb:
> Eigentlich sollte dies doch relativ einfach mit dem
> Serial Clock Pin des SPI-Moduls funktionieren, oder nicht?
> Leider zeigt das Oszilloskop dass eben kein Takt am Pin anliegt.

Natürlich muss man dafür die SPI-Kommunikation verwenden - ansonsten ist 
das ja ein ganz normaler I/O ...

Die entscheidende Frage ist, was für eine Taktversorgung du verwendest - 
je nachdem kann man auch 8 MHz erreichen ...

von Chris L. (kingkernel)


Lesenswert?

Der Clock-Pin führt nur ein Taktsignal, wenn auch ein Slave angesprochen 
wird.
Ob man dieses verhalten ändern kann, weiss ich leider nicht. das 
einfachste wäre, einen Timer zu verwenden, der einen Pin regelmäßig 
Toggelt.

von Tony (Gast)


Lesenswert?

Christian L. schrieb:
> das
> einfachste wäre, einen Timer zu verwenden, der einen Pin regelmäßig
> Toggelt.

Ja, da muss ich zustimmen! Für diesen Fall ist ein Timer die richtige 
Wahl. Je nach dem, wie genau der Takt sein muss, ist es nötig den Timer 
manuell zu resetten. Die Interrupt-Routine ist der richtige Ort für den 
nötigen Code.

von Hans W. (stampede)


Lesenswert?

Das CCP Modul im PWM Modus ist dafuer das richtige, da braucht man 
keinen Interrupt fuer. Das SPI Modul ist dafuer denkbar unguenstig, da 
alle IOs blockiert werden und der Takt nur bei Zugriff auf den Slave 
anliegt. Die Timer/Interruptvariante braucht fuer die Aufgabe zu viel 
sinn;os vergeudete Rechenzeit.

von Mirco H. (mirq)


Lesenswert?

Danke für die Antworten.

Ich habe es jetzt mit PWM versucht.
FOSC darf laut Datenblatt maximal 80MHz betragen - und FCY somit 40MHz.
Ich benötige am Pin einen Takt von 8Mhz, was dann hier 5 Zählschritten 
des Timers bei prescaler 1 entspricht.
Weil ich gerne einen Takt mit gleichmäßigem Puls-Pausen-Verhältnis 
hätte, habe ich FCY bei 32MHz, Periodendauer bei 4 (PR2 = 4;) und OC1R 
bei 2 ... am Oszi beträgt der Takt allerdings nur ungefähr 1MHz..

Ist 8 MHz überhaupt realisierbar?

Grüße,
Mirco

von Lehrmann M. (ubimbo)


Lesenswert?

Mirco H. schrieb:
> Ist 8 MHz überhaupt realisierbar?
ja natürlich

Lehrmann Michael schrieb:
> Die entscheidende Frage ist, was für eine Taktversorgung du verwendest -
> je nachdem kann man auch 8 MHz erreichen ...

Eigentlich laber ich hier nicht damit man keine weiter Auskunft erteilt 
...
Einfachste Möglichkeit: Quarzoszillator 8 MHz (!) - nicht nur Quarz an 
OSC1 (CKI) - Der Takt liegt dann an OSC2 (CKO) an ...
Ansonsten Pin Toggeln - entsprechend höherer Betriebstakt ...

von Mirco H. (mirq)


Lesenswert?

Sorry, ich verwende einen 4MHz Quarz mit PLL.
Ist nicht unabhängig vom verwendeten Quarz die maximale Frequenz FCY 
40MHz und damit die Anzahl der nötigen Zählschritte des Timers für die 
Periode nur 5? Das hieße ja, dass ich den Pin theoretisch alle 2,5 
Schritte toggeln lassen müsste?

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.