www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Geschwindigkeit des PIC16F77??


Autor: Marc Marolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen

Ich habe ein Problem und finde keine Lösung. Ich gebe dem PIC16F77
einen 10MHz Takt mit einem Quarz. Ich muss an einem Pin einen 40kHz
Takt ausgeben.
Das Programm habe ich in C geschrieben. Ich hatte vor dafür den Timer2
zu gebrauchen um einen 40kHz rechteck Takt zu generieren, welcher mir
am Pin A1 zur Verfügungsteht. Somit würden alle 12,5us ein Interrupt
ausgelöst werden um den Pin high und beim nächsten wieder auf low zu
setzten.
Das Problem ist das der Pin kein Takt herausgibt. Ist der PIC zu
langsam?

Autor: Frank Linde (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Selbst ein PIC sollte das schaffen. ;-)  SCNR

Ernsthaft: Timer sind üblicherweise selbständig arbeitende Einheiten,
die zwar mit einem vom Systemtakt abgeleiteten Takt betrieben werden,
nach dem Start aber unabhängig vom Programm laufen. Vermutlich hast Du
einen Fehler bei der Initialisierung des Timers gemacht (Vorteiler
richtig eingestellt?). Diese Auskunft ist ohne Gewähr, da der Verfasser
AVR-Fan ist und noch nie einen PIC programmiert hat - vielleicht
funktioniert deren Universum doch ganz anders. ;-)

Gruß, Frank

Autor: Erhard Stark (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Marc,

hast du den Timer eingeschaltet? Beim 16F62X z.B. kann ich im
T2CON-Register den Timer aus- und einschalten (Bit 2). Hast du auch das
Register PR2 beschrieben? Nach dem Einschalten liegt zwar FFh im
Register, aber man weiß ja nie.

Autor: NoName (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mit C-Compilern ist das so eine Sache, nachdem Du bei 10MHz einen
internen Taktzyklus von 400ns erhältst. Das ist schon möglich mit dem
Timer2-Interrupt, indem Du das Compare-Register dementsprechedn niedrig
setzt, aber der C-Compiler sichert Dir vielleicht erstmal 10 Register
und damnit sind die 12µs schnell verbraucht...

Mach's mit Assembler oder nimm doch gleich die PWM-Funktion. Damit
kannst du dir die Interruptgeschichte sparen.

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.