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!
Gpio -> Diode -> Kondensator -> pulldown + (Gate von) N-Kanal Mosfet (Drain) -> Pullup + SYS_RESET
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.
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
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.
... schrieb: > Gpio -> Diode -> Kondensator -> pulldown + (Gate von) N-Kanal > Mosfet > (Drain) -> Pullup + SYS_RESET Und die 200 msec Verzögerung?
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.
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.
@Gästchen und Jürgen: Ja, diese Resetcontroller sehen gut aus - danke für den Tipp! :-)
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
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?
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
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!
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.