Forum: Mikrocontroller und Digitale Elektronik Schaltung für harten Reset


von Paul P. (paul_p200)


Lesenswert?

Hi,

ich habe hier einen Microcontroller (ein Beaglebone Black um genau zu 
sein), bei dem ich gerne per Software einen harten Reset auslösen würde.

Das Board hat eine Leitung SYS_RESETn, die man zu diesem Zweck nur mit 
GND verbinden muss. Das Ganze soll jetzt aber softwaregesteuert 
erfolgen, sprich ich habe einen Ausgang (GPIO-Pin), der per default auf 
LOW ist. Eine steigende Flanke an diesem Pin soll mir jetzt über eine 
kleine Zusatzschaltung eben den SYS_RESETn für so ca. 50..200 msec auf 
LOW ziehen.

Die Schaltung soll deswegen auf die steigende Flanke reagieren, weil der 
GPO mit dem Reset sofort wieder auf LOW geht und der HIGH-Level sofort 
wieder weg wäre.

Meine Frage: wie/mit welcher möglichst einfachen und billigen Schaltung 
bekommt man sowas hin? Mir würde spontan nur ein zeitverzögert 
abfallendes Relais einfallen ;-)

Der BBB arbeitet auf diesen Leitungen übrigens komplett mit 3.3V.

Danke!

von ... (Gast)


Lesenswert?

Gpio -> Diode -> Kondensator -> pulldown + (Gate von) N-Kanal Mosfet 
(Drain) -> Pullup + SYS_RESET

von Gästchen (Gast)


Lesenswert?

Vorschlag:
Suche nach Resetcontrollern mit manuellem Reseteingang.

Hier zum Beispiel:
http://www.microchip.com/ParamChartSearch/chart.aspx?branchID=9008&mid=10&lang=en

Wie jener hier:
http://www.microchip.com/wwwproducts/en/MIC812
Hat einen nMR-Eingang, den man mit dem GPIO verbinden könnte. Man 
bräuchte aber in diesem Fall eine Invertierung, welche man z.B. mittels 
2N7002 + Pullup herstellen könnte, damit das auf ein Setzen eines GPIOs 
folgerichtig reagiert.

Oder du suchst einen mit nicht invertierendem Reseteingang. Keine 
Ahnung, ob es sowas gibt, aber weil es die Teile von so vielen 
verschiedenen Herstellern in verschiedener Ausprägung gibt, bin ich 
recht optimistisch.

Jedenfalls funktioniert das so:
Triggerst du den Eingang, dann bleibt der Reset nach dem Loslassen für 
140ms noch gesetzt.

von Georg (Gast)


Lesenswert?

Paul P. schrieb:
> Eine steigende Flanke an diesem Pin soll mir jetzt über eine
> kleine Zusatzschaltung eben den SYS_RESETn für so ca. 50..200 msec auf
> LOW ziehen.

Warum so kompliziert? Verbinde den Reseteingang mit einem GPIO, der ist 
ja per default hochohmig. Für einen Reset schaltest du den als Ausgang 
und Lo. Natürlich wird er wieder hochohmig, sobald der Reset wirkt, aber 
da ist er ja schon ausgelöst, was will man mehr.

Wenn du überhaupt die 200msec Verzögerung brauchst, das geht auch per 
Software nach dem Reset.

Georg

von Paul P (Gast)


Lesenswert?

Georg schrieb:

> Wenn du überhaupt die 200msec Verzögerung brauchst, das geht auch per
> Software nach dem Reset.

Das geht eben nicht weil mit dem Reset ja auch der SoC neu gestartet 
wird, d.h. der GPO wird sofort wieder hochohmig und es gibt keine 200 
msec, sondern nur irgend einen kurzen Peak.

von Paul P (Gast)


Lesenswert?

... schrieb:
> Gpio -> Diode -> Kondensator -> pulldown + (Gate von) N-Kanal
> Mosfet
> (Drain) -> Pullup + SYS_RESET

Und die 200 msec Verzögerung?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Ein Monoflop kann so was. Man triggert es und am Ausgang kommt für eine 
einstellbare Zeit ein Signal. Ich würde ein CMOS Mono nehmen, da es 
zwischen 3 und 15V arbeitet. Typen wie der 4098 oder der 4528 / 4538 
gehen da. Auch ein 555 kann sowas.
Die CMOS Typen haben sowohl positive als auch negative Ausgänge, so das 
man sich die gewünschte Polarität aussuchen kann.

von Jürgen (Gast)


Lesenswert?

Es gibt reichlich Reset-Bausteine die ssowas machen, MAXIM, TI, LT, ... 
bauen soviele davon, die müssen die verkaufen.

Der EM6325 von Emmicroelectronic mach übrigens genau die gewünschten 
200ms.
Nebenbei können die auch noch Spannungen, Temperaturen oder Taster 
überwachen.

von Paul P (Gast)


Lesenswert?

@Gästchen und Jürgen: Ja, diese Resetcontroller sehen gut aus - danke 
für den Tipp! :-)

von Georg (Gast)


Lesenswert?

Paul P schrieb:
> es gibt keine 200
> msec, sondern nur irgend einen kurzen Peak.

Und danach kann man eine 200 msec Verzogerungsschleife einbauen - wo ist 
das Problem? Ich sagte doch, per Software.

Es ist sowieso nicht klar, wofür die Verzögerung gut sein soll. Beim 
Power On macht man das, damit sich alle Spannungen stabilisieren, aber 
bei einem per Software ausgelösten Reset ist das überflüssig.

Eine einfache Verbindung ist wohl nicht kompliziert genug um geil zu 
sein.

Georg

von Paul P (Gast)


Lesenswert?

Georg schrieb:
> Paul P schrieb:
>> es gibt keine 200
>> msec, sondern nur irgend einen kurzen Peak.
>
> Und danach kann man eine 200 msec Verzogerungsschleife einbauen - wo ist
> das Problem? Ich sagte doch, per Software.

Kannst du mir verraten, wie eine Software, die durch einen eben 
ausgelösten Reset gerade gekillt worden ist, noch eine Schleife 
ausführen soll um eben diesen Reset für weiter 200 msec aktiv zu halten?

von Georg (Gast)


Lesenswert?

Paul P schrieb:
> um eben diesen Reset für weiter 200 msec aktiv zu halten

Wozu das denn? Es ist keine Rede davon, dass vom Resetimpuls noch was 
anderes angesteuert werden soll, und die Verzögerung im Startup 
unterzubringen sollte für einen halbwegs fähigen Programmierer doch 
wirklich kein Problem sein.

Georg

von Paul P (Gast)


Lesenswert?

Georg schrieb:

> Wozu das denn? Es ist keine Rede davon, dass vom Resetimpuls noch was
> anderes angesteuert werden soll, und die Verzögerung im Startup
> unterzubringen sollte für einen halbwegs fähigen Programmierer doch
> wirklich kein Problem sein.

Scheinbar ist das Problem hier, das du nicht mal halbwegs fähig bist, 
auch nur die Aufgabenstellung zu verstehen:

1. die Software zieht in deiner Lösung per GPO die Resetleitung auf LOW

2. der SoC wird zurückgesetzt, jegliche dort laufende Software wird 
beendet

3. der GPO wird in seinen Default-Zustand versetzt

4. weil GPO nicht mehr LOW ist, kommt die Reset-Leitung wieder hoch, es 
gab also nur einen ganz kurzen Reset-Impus

5. der SoC startet seinen Bootloader

Wo willst du jetzt deine Schleife unterbringen? In der Software, die bei 
Punkt 2 beendet wird? Im Bootloader, der bei 5 gestartet wird, wo der 
Reset aber schon wieder vorbei ist?

Jetzt bin ich aber gespannt auf deine magischen Fähigkeiten!

von Georg (Gast)


Lesenswert?

Paul P schrieb:
> Im Bootloader, der bei 5 gestartet wird, wo der
> Reset aber schon wieder vorbei ist?

Wieso nicht, der Resetimpuls hat seine Schuldigkeit ja getan. Das ist 
einfach nur Programmieren, keine Magie. Ich habe in den meisten 
Controllerprogrammen sowieso ganz am Anfang erstmal eine 
Verzögerungsschleife drin, damit auch alle Peripherie bereit ist. Wie 
gesagt, sofern man das überhaupt braucht. Und bevor du weiter 
rumkrakeelst und mit Beleidigungen um dich wirfst: man kann natürlich 
auch unterscheiden, ob der Reset nach dem Einschalten erfolgt ist oder 
durch die Software ausgelöst, wenn man das für nötig hält.

Es erhebt sich überhaupt die Frage, wozu das ganze, und nicht einfach 
ein Jump an die Adresse des Resetvektors. Dann braucht man nicht mal 
einen GPIO dafür.

Eine Hardware, die einen 200msec-Impuls braucht, um resettet zu werden, 
ist mir übrigens noch nie begegnet, dafür sind nsec nötig. Steht im 
Zweifelsfall im Datenblatt. Im vorliegenden Fall ist die Frage aber 
irrelevant, weil ja der GPIO erst hochohmig wird, wenn der Reset 
ausgeführt wurde, die Reaktion ist also garantiert.

Georg

von Paul P (Gast)


Lesenswert?

Georg schrieb:

> Und bevor du weiter
> rumkrakeelst und mit Beleidigungen um dich wirfst:

Und bevor du weiter rumkrakeelst und dabei nicht mal merkst, dass du mit 
Beleidigungen angefangen hast: der Resetpuls MUSS minimum 100 msec 
dauern! Deine ganze Lösung ist also Mist!

> Es erhebt sich überhaupt die Frage, wozu das ganze, und nicht einfach
> ein Jump an die Adresse des Resetvektors. Dann braucht man nicht mal
> einen GPIO dafür.

Weil ein Hardwarereset ausgelöst werden soll, der nicht Primär den SoC 
zurücksetzt, sondern eine ebenfalls an die Resetleitung angeschlossene 
Hardware und die benötigt ebendiese 100 msec. Und diese Resetleitung 
geht bei einem Softreset nicht auf LOW, diese Hardware würde dabei also 
gar nicht zurückgesetzt werden.

von Cyblord -. (cyblord)


Lesenswert?

Georg schrieb:
> Es erhebt sich überhaupt die Frage, wozu das ganze, und nicht einfach
> ein Jump an die Adresse des Resetvektors. Dann braucht man nicht mal
> einen GPIO dafür.

Was dann aber auch alles ist, nur kein Reset. Sondern ein simpler Sprung 
im Programm. Das war nicht die Frage, du hast nicht die Lösung.

Bei AVRs z.B. ist die einzige Möglichkeit einen Reset über SW (ohne 
Zusatzbeschaltung) auslösen der Watchdog.

: Bearbeitet durch User
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.