16F84 und WDT

Gast #45568
Lesenswert?

Hallo,

kämpfe gerade mit einer simplen Sache - Komme aber nicht auf eine
Lösung.

Ich möchte aus der Software einen Reset erzwingen ohne einen Portpin
dafür zu Opfern. Jetzt habe ich mir gedacht, der WDT läuft. Den kann
ich dazu missbrauchen. Jetzt habe ich nur das Prob, das selbst wenn ich
den Prescaler änder, bzw. den Zähler schon auf FFh setze, der WDT den
Pic erst wieder beim normalen nächsten Auslösen Resetet.

Denke ich zu kurz - oder zu weit? Ich möchte einfah nicht ca. 1,5 sek.
warten, weil ich ja nicht weiß wie lange der Zähler schon läuft.

Danke Binnesmann
Gast #45570
Lesenswert?

Hallo,

ich bin mir da nicht sicher wie tief ich im "Dschungel" des Stacks
stecke. Um alles wieder jungfräulich zu haben, dachte ich mir, das
dieser Weg wohl der beste und einfachste wäre.

Gruß

Binnesmann
Gast #45571
Lesenswert?

Wenn das Programm sauber geschrieben ist, dann sollte es doch irgendwo
eine MainLoop geben. Dort könnte man dann ein Flag auswerten, welches
irgendwo im Unterprogramm gesetzt wird, und dann auf 00 springen. Der
Stack sollte dann eigentlich lehr sein.

Steffen
#45573
Lesenswert?

Springe einfach nach 0000, der Stack interessiert nicht.

Hat die CPU einen Hardwarestack (z.B. PIC), so ist es egal, wo der
steht, man kann unendlich viel CALLen. Und eben nur die letzten 2 (8)
bleiben erhalten, d.h. von dort kanns auch wieder RETurn gehen.


Und CPUs mit Softwarestack (z.B. AVR) müssen diesen eh initialisieren.


Peter
#45575
Lesenswert?

Zumindest lt. Datenblatt ist es so.

Ist ja auch sinnvoll. Wenn schon ein Hardwarestack, d.h. kein
Softwarezugriff möglich, dann sollte er auch quasi selbstreparierend
sein.
Ich vermute mal, der wird beim Reset garnicht auf Null gesetzt, sondern
steht einfach irgendwo.



Peter
Gast #45576
Lesenswert?

Auf jeden Fall wird dann die Emulation nicht funktionieren, da z.B. beim
ICE2000 (jedenfalls bei einigen Prozessormodulen) der Stack nicht als
echter Ringpuffer integriert ist. Der nimmt auch mal 10 Werte auf. Er
meldet sich zwar, das der Stack übergelaufen ist aber wenn man die
Meldung abschaltet ...

Gar nicht mal so schlecht wenn man dann eine Stacktiefe von 10 oder
mehr zur Verfügung hat. Nur im Zielsystem mit Prozessor sieht´s dann
nicht so gut aus :-(.

Wie gesagt, auf solche Sachen würde ich lieber verzichten und etwas
"sauberer" programmieren.

Steffen

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