Ich hab mal ein sehr einfaches Problem: Ich versuche ein C-Programm zu schreiben, welches 3 verschiedene PINs meines PIC16F876 je 100 mal pro Sekunde auf High setzt. Hierfuer wuerde ich gerne den Timer0 (+ Prescqler) verwenden. Kann eigentlich ja kein Problem sein, faellt mir trotzdem schwer. Waere nett, wenn mir jemand helfen koennte, bzw wenn hier jemand ein Programm reinstellen koennte, an dem ich mir das Vorgehen anschauen kann. Danke!
Du parametrierst TMR0 als Counter für den internen Takt. Damit wird er mit dem internen Takt / Vorteiler um eins erhöht. Als Zeitbasis brauchst Du 10ms (Beispiel, die ISR müsste evtl. mehrmals als 100x/s aufgerufen werden) mit einem 4MHz Quarz. Damit wäre der interne Takt 1MHz und nach 10.000 Takten soll ein Interupt ausgelöst werden. Das würde ungefähr mit Vorteiler=64 funktionieren, wenn TMR0 nach 156 Takten überlaufen würde. Um das zu realisieren müsste TMR0 in jeder ISR mit 100 geladen werden (256-156=100). Die Variante ist aber nicht 100%-ig genau. Auf die µs genau kannst Du so etwas mit dem CCP-Module realisieren. In der Codesammlung findest Du ein Programm für eine Schaltuhr (Belichtungsuhr) mit dem 16F876. Ist zwar ASM aber dort habe ich das CCP-Module verwendet. Für einfache Sachen reicht aber auch TMR0.
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.