Path: csiph.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Joerg Newsgroups: de.sci.electronics Subject: =?UTF-8?Q?Re=3a_MSP430_Reset_nicht_zuverl=c3=a4ssig=3f?= Date: Wed, 18 Aug 2021 13:26:47 -0700 Lines: 118 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-Trace: individual.net XwpdUadQ1PD7QycT8cKjOwkR+l5sdG7bYMnR7uMfWZgQWlDcdK Cancel-Lock: sha1:nMjeuewKCHor90/fosZq3L2KBo4= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.8.1 In-Reply-To: Content-Language: en-US Xref: csiph.com de.sci.electronics:308747 On 8/18/21 12:36 PM, Michael Schwingen wrote: > On 2021-08-17, Joerg wrote: >>> >>> Der 8051 hat doch weder BOR noch internen Resetgenerator? >>> >> >> Doch, er hat RST: >> >> https://www.nxp.com/docs/en/data-sheet/8XC51_8XC52.pdf >> >> Zitat Seite 7 "Reset: A high on this pin for two machine cycles while >> the oscillator is running, resets the device. An internal diffused >> resistor to VSS permits a power-on reset using only an external >> capacitor to VCC". > > Das ist ein Reset-Eingang und kein interner Resetgenerator. Der zweite Teil "An internal diffused resistor to VSS permits a power-on reset using only an external capacitor to VCC" ist der Reset Generator. Oder soll es jedenfalls sein. Selbst wenn man sich nicht auf den internen Poly Resistor verlaesst und einen externen vorsieht, funktioniert das nicht immer zuverlaessig. Sollte es aber. > ... Irgendwo im > Datenblatt steht garantiert auch, daß RST unbedingt high sein muss, bis VCC > einen gewissen Wert erreicht hat - OK, sie haben es versteckt: > > "A reset is accomplished by holding the RST pin high for at least two > machine cycles (24 oscillator periods), while the oscillator is running. To > insure a good power-up reset, the RST pin must be high long enough to allow > the oscillator time to start up (normally a few milliseconds) plus two > machine cycles." > > Der Oszillator läuft erst (garantiert), wenn VCC über dem spezifizierten > Mimimalwert liegt, also musst Du dafür sorgen, daß RST entsprechend lange > high ist. > > Wenn Du das mit dem einen Kondensator hinbekommst (bei der Anstiegszeit von > VCC, die Du halt hast), mag das OK sein, ansonsten brauchst Du halt eine > externe Resetschaltung - das Datenblatt behauptet nirgendwo, daß es ohne > geht, also hat da auch niemand was verbockt (ausser dem Designer, der > meinte, ohne externen Resetgenerator auszukommen). > So eine "Loesung" ist doch einfach Murks. ""An internal diffused resistor to VSS permits a power-on reset using only an external capacitor to VCC" muesste dann ersatzlos gestrichen werden. Taten sie aber nicht. > Von BOR steht da schon garnichts, sobald VCC unter den Minimalwert gesunken > ist, ist das Verhalten des Controllers undefiniert, dann musst Du für ein > sauberes RST-Signal sorgen. Das sollte nach Lesen des Datenblattes klar > sein, da steht nirgendwo, daß die entsprechende Mimik integriert wäre. > > Controller mit internem Reset/BOR haben einen internen Komparator mit > definierter Schwelle und garantiertem Verhalten bezüglich Oszillator etc. - > der 8051 gehört definitiv nicht dazu. > Aber er hat einen POR. Oder man behauptet jedenfalls, er habe einen. Darum ging es mir. Ob es nun POR, BOR oder WDT ist, diese Themen werden im uC Bereich nur schlecht beherrscht und das koennte anders sein, wenn sie entsprechend faehige analoge IC Designer dransetzen. >>> Beim externen BOR/WDT brauchst Du weitere Zusatzlogik, damit der Prozessor >>> nach dem Reset erfahren kann, *warum* er gerade gestartet wurde - BTDT, bei >>> uns war Anforderung, nach n Crashes auf die alternative, ältere Firmware >>> zurückzuschalten (Netzwerk, nicht sicherheitskritisch - aber ärgerlich, wenn >>> nach einem remote-Upgrade der Techniker rausfahren muss). >>> >> >> Man braucht dazu ein staendig mitlaufendes Log z.B. in externes RAM >> hinein, > > Nein. Um festzustellen, daß der letzte Reset per Watchdog ausgelöst wurde, > braucht man extern ein Flipflop, das diesen Zustand sichert und der Software > mitteilt. Logs im RAM kann man für andere Sachen sicher brauchen, dafür > sind sie nicht nötig. > Doch, sind sie zumindest im High-Rel Bereich. Da muessen wir in der Lage sein, ein gescheites Post Mortem durchzufuehren. Hierzu wird nicht nur der Programmablauf im Log mitgetackert, sondern auch VCC ueber einen der ADC Kanaele, falls das nicht intern abrufbar ist. Auf genau diese Art habe ich vor zwei Wochen ein Problem ausgewurzelt. Es ist ein langjaehriger Kunde, sodass ich es auch jetzt im Ruhestand noch mache. Der Kunde haengte mir sofort beim ersten Email die Log-Ergebnisse in grafischer Form an und nach einer halben Stunde am Telefon wussten wir, warum die Kisten ausstiegen. >>> Bei einem internen BOR/WDT bekommst Du das normalerweise als Statusregister >>> gratis. >>> >> >> Da steht m.W. aber meist nicht sehr viel aussaegekraeftiges drin. > > Das eine Bit "Power on" oder "Watchdog" reicht aus, damit die Firmware nach > einem Watchdog-Reset in einen wie auch immer definierten sicheren > Betriebszustand gehen kann und nicht einfach im Normalbetrieb startet. > Mag sein, aber ein Normalbetrieb ist selbst nach dem Kommen von POR/BOR nicht immer sinnvoll, da es andere Schaltungsteile mitgerissen haben kann, deren interne POR/BOR aehnlich verkorkst sind wie bei vielen uC. Bei meinen Kunden geht normalerweise eine Meldung in deren Cloud oder in ein Satelliten-Netzwerk, auch wenn die Software normal neu startet (muss sie meist). -- Gruesse, Joerg http://www.analogconsultants.com/