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