Forum: Mikrocontroller und Digitale Elektronik 12F629 Timer0


von Florian Pfeffer (Gast)


Lesenswert?

Hallo Leute.

Ich muss mit dem PIC12F629 alle 200us einen Interrupt erzeugen. Ich
habe auch schon Interrupts im Abstand von 20us zusammengebaracht,
schaffe es aber nicht, diesen Abstand auszudehnen. Das müsste doch mit
dem Prescaler funktionieren, oder? Hab ich auch schon Probiert, hat
aber nicht funktioniert.

Bitte helft mir

Mfg Flo

von Rahul (Gast)


Lesenswert?

Häng nen CD4017 an den Ausgang. Am letzten Ausgang des CD4017 kannst du
dann alle 200µs einen Impuls bekommen...

Sonst würde es auch helfen, wenn du deinen Code hier abbilden
würdest...

von Kai R. (kairiek)


Lesenswert?

Es gibt auf jeden Fall Möglichkeiten dein Problem zu lösen, aber mach
bitte noch Angaben zu deiner Taktfrequenz und poste mal den Code.

MFG

Kai

von Christian Rötzer (Gast)


Lesenswert?

4017? Nicht schlecht, 16 Pins zusätzlich zu einem 8-Pinner nur wegen den
200us... :-)
Wenn wir mal von den internen 4MHz ausgehen, mit denen der PIC gerne
mal läuft, dann guggst Du erst mal, wie Du Deinen Prescaler einstellen
musst. Der Timer wird mit 1MHz getaktet, 200us willst, d.h. Du darfst
den Prescaler auf 1:1 stellen. Jetzt kommt das wichtige: Innerhalb der
Interrupt-Service-Routine musst Du den Timer selber neu laden, damit
der Interrupt nicht alle 256us kommt sondern früher. Beachten musst Du
weiterhin, wieviele Takte schon abgearbeitet wurden: Hier ein
Beispiel:

; ****** Interrupt-Service ********************************

           org     4

                                  ; 4
           movwf   IntW           ; 1  ; Register retten!
           movf    STATUS,W       ; 1
           movwf   IntStat        ; 1
           movlw   200-9          ; 1  ; Timer nachladen
           movwf   RTCC           ; 1
                                  ;---
                                  ; 9

           bcf     INTCON,RTIF    ; Interrupt zurücksetzen

von Kai R. (kairiek)


Lesenswert?

Deine Idee ist gut, hätte ich auch so gemacht. Nur wollte ich zuerst
wissen wie weit Flo bereits gekommen ist. Vor allem sollte er endlich
mal sagen wie schnell sein PIC ist...

MFG

Kai

von Florian Pfeffer (Gast)


Lesenswert?

Sorry hatte länger keine Zeit zum posten.
Hab meinen Fehler schon gefunden (trotzdem danke!!!). Die Interrupts
hauen jetzt hin. Jetzt hab ich aber schon ein neues Problem.
Wie würdet ihr eine Pulsweitenmodulation ohne CCP durchführen. Kann ich
dazu den zweiten Timer (Timer1) benutzen? Dann müsste ich doch 2 ISR
machen, oder? Geht das überhaupt?

mfg Flo

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.