Forum: Mikrocontroller und Digitale Elektronik PIC Selbstreset


von Sebastian H. (sebihepp)


Lesenswert?

Hallo,

ich wollte mal fragen, ob ein PIC sich auch selbst resetten kann?
MCLR an Pull-Up und an einen Port. Sobald man den Port auf Low
schaltet wird der PIC resettet. Da nach einem Reset alle Ports
als Eingänge definiert sind, wird das Resetsignal aufgehoben und
es wird wieder gearbeitet. Stimmen meine Vermutungen?

Viele Grüße
Sebihepp

von Zwirbeljupp (Gast)


Lesenswert?

natürlich funktioniert das.
Aber warum sollte man einen Portpin verschwenden, wenn man den PIC auch 
per Software "selbstresetten" kann???

von Sven S. (stepp64) Benutzerseite


Lesenswert?

Weil sich viele PICs (16F...) halt nicht per SW resetten lassen?!

von ·._.·´¯`·. !!! Pirat !!!·._.·´¯`·._.·´¯`·._.· (Gast)


Lesenswert?

Hallo,

so "natürlich" ist das nicht!

Wenn der Portpin auf Low geht,
wird der Reset "angerissen"
mit minimaler Verzögerung
ist der Port-Pin dann aber
undefiniert und der Resetpuls wird
eventuell nicht vollständig
erkannt (Stichwort: Minimale Resetpulsdauer)

Ich bin nicht sicher ob das immer klappen muss,
Oszillationen, Dauerreset, unsichere Funktion...

P.

von chris (Gast)


Lesenswert?

Doch, das geht, ist auch von Microchip vorgesehen, wie auch die 
optionale
Taktsyncronisierung zwischen mehreren prozessoren.

von Karlie.W. (Gast)


Lesenswert?

> Weil sich viele PICs (16F...) halt nicht per SW resetten lassen?!

Dann nimm doch einfach einen pinkompatiblen PIC18F...

Der softwaremäßige Selbstreset funktioniert damit einwandfrei.

von Peter D. (peda)


Lesenswert?

Sven Stefan schrieb:
> Weil sich viele PICs (16F...) halt nicht per SW resetten lassen?!

Welcher PIC hat denn keinen Watchdog?
Einfach Watchdog an, Endlosschleife, fertig ist der Reset.

Es zeugt allerdings von schlechter Programmplanung, wenn überhaupt ein 
Reset notwendig ist.
Nimm z.B. eine Statemaschine, die bei Bedarf die Initroutine neu 
aufruft.

In der Regel sollen aber nur bestimmte Sachen neu initialisiert werden.
Es wirkt nämlich unprofessionell, wenn LEDs und Displays flackern, 
Relais klappern usw. (tristate nach einem echten Reset).


Peter

von Sven S. (stepp64) Benutzerseite


Lesenswert?

Per Watchdog ist natürlich eine Möglichkeit. Da muss man dann halt dafür 
sorgen, dass dieser auch regelmäßig zurückgestzt wird.

Ich gebe dir natürlich recht. Ich würde auch nicht so programmieren. Der 
Reset ist halt dafür da, wenn sich der µC komplett aufgehangen hat. 
Dieser Zusatnd sollte aber bei einem ordentlichen Programm nicht 
eintreten.

Sven

von Sebastian H. (sebihepp)


Lesenswert?

> Ich gebe dir natürlich recht. Ich würde auch nicht so programmieren. Der
> Reset ist halt dafür da, wenn sich der µC komplett aufgehangen hat.

Wenn sich der PIC aufgehängt hat, kann ich auch nicht mehr in
Software resetten. XD (Ausnahme: Watchdog)

Es geht dabei um mein Projekt, eine kleine Konsole zu bauen.
Die Konsole selber (GameBoy Format) stellt lediglich die Peripherie
zur Verfügung. TFT-Display, Piezo-Speaker und einen Port sowie
natürlich die Stromversorgung. Über eine Buchsenleiste lassen sich
dann die Spielemodule einstecken. Auf der Konsole sitzt aber noch ein
PIC, welcher die Initialisation übernimmt, ein kleines Logo
einblendet und dann das Modul aktiviert (Sofern da eines ist).

Entweder ich aktiviere das Modul indem ich die Stromversorgung mit
Transistoren (oder besser MOSFETs) schalte, oder ich sende mit einem
PIC eben ein Resetsignal. Deswegen wollte ich wissen, ob das möglich
wäre.

Viele Grüße
Sebihepp

von Sven S. (stepp64) Benutzerseite


Lesenswert?

Da würde ich aber eher das Modul einschalten, als einen Reset 
auszulösen. Am besten wäre doch, wenn das Modul zwei Pins auf dem 
Stecker miteinander verbindet. Damit weis der PIC im Grundgerät, das ein 
Modul gesteckt wurde und schaltet ein paar 10tel Sekunden später die 
Spannungsversorgung des Moduls ein. Das Modul meldet dann über einen 
Bus, das es bereit ist und schon kann es losgehen. Wäre jedenfalls meine 
Vorgehensweise.

von Sebastian H. (sebihepp)


Lesenswert?

Hmmm, das schöne ist ja: Ich brauche keine Bestätigung, dass da
ein Modul ist. Ich schalte die Versorgung einfach ein und
entweder es passiert etwas, oder eben nicht. ^^

Da nur Prozessoren und evtl. EEPROMs und diskrete Logik auf dem
Modul sein werden, hält sich der Stromverbrauch auch in Grenzen.
mA, wenn nicht sogar uA.

Als Schalter könnte ich dann Transistoren mit einer möglichst
kleinen Kollektor-Emitter-Schwellspannung benutzen. Zur Not schalte
ich mehrere Parallel. =)
Oder fällt da jemandem etwas besseres ein?


Zurück zum PIC: Macht es dem PIC etwas, wenn er noch keine Versorgung
bekommt (VDD und VSS) aber bereits Logikpegel an den Ports anliegen?
Controller und Modul sind über den selben Bus mit der Peripherie
verbunden. Das Modul ist zu begin noch aus. Der Controller stellt
sicher, dass seine Ports als Eingänge definiert sind, bevor das
Modul aktiviert wird.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.