PIC16 Wait-Funktion

Gast #3216345
Lesenswert?

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.
Gast #3216383
Lesenswert?

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ß ??
#3216395
Lesenswert?

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!
Gast #3216525
Lesenswert?

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.
Gast #3216544
Lesenswert?

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
#3216576
Lesenswert?

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.
Gast #3216701
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren