www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 12F629 Timer0


Autor: Florian Pfeffer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Kai Riek (kairiek)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Christian Rötzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Kai Riek (kairiek)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Florian Pfeffer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.