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