mikrocontroller.net

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


Autor: Paul Plankton (paul_p200)
Datum:

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

Autor: ... (Gast)
Datum:

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

Autor: Gästchen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vorschlag:
Suche nach Resetcontrollern mit manuellem Reseteingang.

Hier zum Beispiel:
http://www.microchip.com/ParamChartSearch/chart.as...

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.

Autor: Georg (Gast)
Datum:

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

Autor: Paul P (Gast)
Datum:

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

Autor: Paul P (Gast)
Datum:

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

Und die 200 msec Verzögerung?

Autor: Matthias S. (Firma: matzetronics) (mschoeldgen)
Datum:

Bewertung
1 lesenswert
nicht 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.

Autor: Jürgen (Gast)
Datum:

Bewertung
-2 lesenswert
nicht 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.

Autor: Paul P (Gast)
Datum:

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

Autor: Georg (Gast)
Datum:

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

Autor: Paul P (Gast)
Datum:

Bewertung
1 lesenswert
nicht 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?

Autor: Georg (Gast)
Datum:

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

Autor: Paul P (Gast)
Datum:

Bewertung
1 lesenswert
nicht 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!

Autor: Georg (Gast)
Datum:

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

Autor: Paul P (Gast)
Datum:

Bewertung
1 lesenswert
nicht 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.

Autor: Cyblord ---- (cyblord)
Datum:

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

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.