Hallo, für den Programmablauf ( Programmiersprache ist C )auf einem PIC16 sind bei mir mehrere Unterbrechungen nötig. In meinem Kurs haben wir damals unter anderem Pausen über verschiedene Delay Routinen und Timer Funktionen erstellt. Da der PIC 16 bei mir nur einen Timer hat, den der Watchdog auch noch verwendet, bin ich etwas ratlos im Moment. Ich möchte aus der Main Funktion eine Unterfunktion ( Bsp. Wait ) aufrufen, die dann einfach eine bestimmte Zeit vergehen lässt und danach wieder in die Main zurückkehren. In Assembler kann man dafür ja einfach einen Register Wert dekrementieren. Da ich es aber in C schreiben möchte, habe ich mir gedacht den Timer laufen zu lassen, aber dieser ist ja schon durch den Watchdog belegt. In meinem Kurs habe ich gelernt, dass man auf Delay Routinen verzichten sollte, da diese dafür sorgen, dass der PIC nebenher keine weiteren Aufgaben erfüllen kann. Allerdings wäre das eine einfache Lösung. Meine Fragen wären nun : - Würdet ihr in diesem Fall auch von deiner Delay Routine abraten ? - Kann man den Timer sowohl für den Watchdog als auch eine weitere FUnktion verwenden ? Also zeitgleich ? - Was würdet ihr empfehlen um mit einer einfachen Funktion zum Beispiel ein paar ms vergehen zu lassen, bevor mit dem Hauptprogramm fortgesetzt wird ? Vielen Dank.
Nicht das ich da jetzt der große PIC Experte wäre. Aber imho stimmt da in deinen Ausführungen was nicht. Die PIC 16 haben Timer http://www.sprut.de/electronic/pic/grund/timer/timer.htm die nichts mit dem Watchdog zu tun haben. Der Watchdog hat nur für sich alleine einen eigenen Timer. http://www.sprut.de/electronic/pic/config/config.htm#watchdog
Bin mir ja auch nicht ganz sicher, deshalb frage ich ja. Mein PIC16 hat nur einen Timer. Den Timer0 da bin ich mir sicher. Steht zumindest so im Datenblatt drin. Und der Watchdog wird ja auch vom Timer0 gesteuert soweit ich weiß ??
SwissPG schrieb: > Bin mir ja auch nicht ganz sicher, deshalb frage ich ja. > Mein PIC16 hat nur einen Timer. Den Timer0 da bin ich mir sicher. Steht > zumindest so im Datenblatt drin. Und der Watchdog wird ja auch vom > Timer0 gesteuert soweit ich weiß ?? Jain... Der Watchdog hat einen eigenen RC Oszillator. Man KANN den Prescaler des Timer0 dem Watchdog zuweisen - damit ist dieser dann für den Timer0 nicht mehr verfügbar. Den Timer0 ohne Prescaler kann man aber weiterhin verwenden!
Der Watchdog ist vorgesehen. Könnt ihr mir bitte bei den Fragen weiterhelfen ? - Was spricht außer dem ständigen Reset gegen den Watchdog ? - Was spricht gegen eine Delay Rotinen ? Bzw für eine Wartefunktion über eine Timer Funktion ? Vielen Dank.
SwissPG schrieb: > - Was spricht außer dem ständigen Reset gegen den Watchdog ? Weiss du, was ein Watchdog ist? Normalerweise will man nicht, dass dieses Reset durchgeführt ist, deshalb wird er auch ständig vom Hauptprogramm zurückgesetzt.
SwissPG schrieb: > Mein PIC16 hat nur einen Timer. Gib doch mal die genaue Bezeichnung Deines PIC an. PIC16 genügt einfach nicht! Die Dinger haben 100%ig TMR0 und TMR1, für genaueres braucht man aber das Datgenblatt. Ohne genaue Bezeichnung läuft nichts! Z.B. so : PIV 16F628. Dann kann Dir auch auf die Sprünge geholfen werden! mfG groberKlotz
GroberKlotz schrieb: > SwissPG schrieb: > Die Dinger haben 100%ig TMR0 und TMR1,........... > > mfG groberKlotz Vermutlich handelt es sich (wieder einmal bzw. noch immer) um den junsteinzeitlichen PIC16F84 - der hat tatsächlich nur 1!
SwissPG schrieb: > Was spricht gegen eine Delay Rotinen ? Nichts. Wenn das Programm nur eine LED blinken lassen soll, dann kann man die Zeit auch mit "delay" verbraten. Und sie blinkt auch schön konstant vor sich hin.... Sobald aber 1 oder 2 Tasten ins Spiel kommen- z.B um die Blinkgeschwindigkeit zu ändern etc. ist vorbei damit - spätestens da wird eine Timerlösung fällig.
Chris B. schrieb: > Vermutlich handelt es sich (wieder einmal bzw. noch immer) um den > junsteinzeitlichen PIC16F84 - der hat tatsächlich nur 1! Kann man den noch kaufen oder muß man den im Museum klauen? MfG Klaus
SwissPG schrieb: > für den Programmablauf ( Programmiersprache ist C )auf einem PIC16 sind > bei mir mehrere Unterbrechungen nötig. Wahrscheinlich siehst du das falsch. Überdenke mal deinen prinzipiellen Programmentwurf. Wozu sollen denn diese Unterbrechungen bzw. Verzögerungen dienen? SwissPG schrieb: > Der Watchdog ist vorgesehen. > Könnt ihr mir bitte bei den Fragen weiterhelfen ? na klar. Mein Rat: mach es richtig. Mal im Ernst: Deine geposteten Anfangs- bzw. Randbedingungen erscheinen nicht nur mir sondern auch anderen ein wenig zweifelhaft und da kommt logischermaßen alles auf den Prüfstand. Ist der Watchdog überhaupt sinnvoll? Ist dein Konzept überhaupt tauglich? Denkst und programmierst du eher prozedural (wie das Rumpelstilzchen: heute back ich, morgen brau ich, übermorgen ..naja) oder könntest du deine Konzepte auch auf ereignisgesteuerte Funktionalität aufbauen? Alles Fragen, auf die man besser nicht mit nem patzigen "Der Watchdog ist vorgesehen" antworten sollte. W.S.
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.