Forum: Mikrocontroller und Digitale Elektronik Geschwindigkeit des PIC16F77??


von Marc Marolf (Gast)


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?

von Frank Linde (Gast)


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

von Erhard Stark (Gast)


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.

von NoName (Gast)


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.

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.