mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC 16F870 Porgrammzählerreset MikroC


Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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
 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

Autor: Grrrr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas schrieb:
> Nur das Mikroc mag die direktive
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
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.

Autor: Lehrmann Michael (ubimbo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

also ich mache den Sotfwarereset bei PIC16F immer folgendermaßen: WDT an 
(wenn nicht sowieso verwendet) und dann halt nicht rücksetzen.

Allerdings muss ich auch sagen, dass mir in C nichts bekannt ist um zu 
org0 zurückzukommen.

Es gibt aber von Mikroe auch ein Forum da wird man gut geholfen.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Allerdings muss ich auch sagen, dass mir in C nichts bekannt ist um zu
>org0 zurückzukommen.

goto 0?

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.