Frage

Was ist der beste Weg, um eine Pic18 unter Verwendung von C-Code zurücksetzen Mit den HiTech Pic18 C-Compiler

Edit:

Ich bin mit currenlty

void reset()
{
#asm 
  reset
#endasm
}

aber es muss ein besserer Weg geben

War es hilfreich?

Lösung

Es gibt eine FAQ hier .

F: Wie setze ich das Mikro

  

Eine Möglichkeit ist, alle Variablen zurückgesetzt   die Standardwerte, wie sie in der PIC aufgelistet   Handbuch. Dann Assembler-Sprache verwenden   In dem Standort 0x0000 in der springen   Mikro.

     

#asm LJMP 0x0000

     

#endasm

     

Das ist ganz sicher zu verwenden, auch wenn   genannt innerhalb Interrupts oder   Verfahren. Die PIC 16x Serie Micros   8 Stapelebene hat. Jedes Mal, wenn ein   Verfahren genannt wird, eine Stapelebene   wird für die Absenderadresse verwendet werden. Es   ist ein Kreispuffer, so dass selbst wenn die   Mikro 7 Verfahren Ebenen tief und   in einem Interrupt, wenn ein Rücksetz ist   genannt, ist dies der neue Anfang der   Stapelpuffer und der Mikro Wille   weiter wie normal.

     

Eine andere Möglichkeit ist es, den Watchdog einstellen   Zeitgeber, wenn der Chip programmiert ist, und   verwenden CLRWDT () alle Anweisungen durch   der Code. Wenn Sie wollen das Mikro   zurückgesetzt, stoppt die Watchdog-bit Rodung   und das Mikro wird zurückgesetzt, nachdem um   18 ms bis 2 Sekunden auf der je   Vorteiler.

Andere Tipps

Die Compiler haben in der Regel ihre eigene Reset () Funktion eingebaut, aber es tut genau das, was Ihre Funktion hat, und der eigentliche Name von Compiler zu Compiler variieren kann.

Sie tun es bereits die bestmögliche Art und Weise.

Ihre Antwort ist der beste Weg, den ich kenne. Der Schlüssel ist, dass Sie die Montageanleitung in einem Funktionsaufruf haben, ganz von allein.   Der Compiler optimiert nicht eine Funktion, die Inline-Montage in sich hat, also wenn Sie den Reset-Befehl inline auf eine sehr große Funktion enthalten, wird der Compiler nicht in dieser Funktion eine der Code optimieren. Sie haben dies vermieden durch Zurücksetzen in seiner eigenen Funktion setzen. Der Code in dieser Funktion wird nicht optimiert werden, aber wen kümmert das, da es so eine kleine Funktion ist.

Es sei denn, es eine Bibliothek Funktion vom Compiler Anbieters Laufzeitbibliothek definiert ist (wenn eine solche lib existiert auch in den Mikrocontroller Welt ..., aber es sollte), dann nicht. C selbst wird sicherlich nicht helfen Sie heraus, „einen Reset“ tun, ist viel zu viel von einer plattformspezifischen Ausgabe für C zu bedecken.

Ich verwende den ccsinfo.com Compiler, der den PIC zum Zurücksetzen einen ähnlichen API-Aufruf hat, aber ich würde die Compiler-Lösung denken würde, das Richtige tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top