PIC 16F870 Porgrammzählerreset MikroC

Gast #1854746
Lesenswert?

Hallo,

ich veruche gerade einen Softwarereset in dem PIC zu ermöglichen. Dabei 
will ich den Programmcounter auf die Adresse 0x0000 bringen, sozusagen 
der Startvektor.

Nur das Mikroc mag die direktive
1
 asm (Reset EQU 0x0000)
 gar nicht.

Wie könnte ich sonst noch den Programmzähler auf Null setzen???



Vielen Dank für eure Hilfe!



mit freundlichen Grüßen

Andreas
Gast #1854768
Lesenswert?

Andreas schrieb:
> Nur das Mikroc mag die direktive
1
asm (Reset EQU 0x0000)

Was heisst der Compiler "mag das nicht"? Das ist nicht wirklich 
aussagekräftig, geht man davon aus, das Compiler keinerlei Gefühlsleben 
oder überhaupt irgendwelche Bedürfnisse haben. Irgendwelche 
anthropozentrischen Unterstellungen helfen Dir hier nicht und uns auch 
nicht, Dein Problem zu verstehen.

Es ist die Frage was das eigentlich bewirken soll.
An sich (ich verwende keinen PIC, aber das sollte hier keine Rolle 
spielen), gibt das nur den Effekt das mit dem Namen "Reset" der Wert 0 
verbunden wird. Ich gehe fast sicher davon aus, das der Name im Code 
nirgendwo als Sprungziel verwendet wird (oder ein indirekter call/jmp 
darauf ausgeführt wird). Das würde also garnicht helfen, sondern nur 
Platz verbrauchen.

> ich veruche gerade einen Softwarereset in dem PIC zu ermöglichen.

Solche Versuche sind (bei Anfängern, und ich vermute Du bist einer) fast 
immer Designfehler. Schreib' doch mal bitte warum Du das überhaupt 
willst.
Was erreichst Du dadurch, das Du so einen Softreset einbaust?

Um aber direkt auf Deine Frage zu antworten, wird sowas
1
asm (JMP 0x0000)
an entsprechender Stelle im Code eher tun, was Du Dir vorstellst. Ob das 
in der jeweiligen Situation überhaupt passt, ist eine andere Frage.
Gast #1854801
Lesenswert?

Also um auf das Gefühlsleben meines Compilers mal einzugehen. Der 
liefert die Meldung "Specifier needed" zurück.


Und nun zu der Motivation, es geht hier um die Steuerung einer 
Pendelautomatik wobei 2 mehrgleisige Bahnhöfe über eine Strecke 
verbunden sind. Im normalfall wartet die Steuerung solang bis der 
Gleisbesetztmelder (GBM) im Zielbahnhof meldet das er dort ist. Sollte 
der Zug aber währende der Fahrt von der Strecke genommen werden werden 
wartet die Stuerung ewig auf die Meldung des GBM. Und da kommt der Reset 
ins spiel. Ich gebe ein Zeitfenster vor und danach wird der Reset 
ausgelöst und die Schaltung beginnt die Belegung auf den Gleisen neu 
einzulesen. Diese Lösung fand ich praktikabler als das Programm 
weiterlaufen zulassen.


Vielen Dank für die Hilfe!


mfg

andreas

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