Hallo, ich habe vor das Power-on-Reset Verhalten beim AVR etwas näher zu betrachten. Soweit ich weiß hat der AVR ja eine Power-On Reset Protection mit eingebaut. Zusätzlich ist in den meisten Standardbeschaltungen ja ein RC-Glied am Reset Pin des Mikrocontrollers vorgesehen, um den Mikrocontroller nach dem Einschalten der Versorgungsspannung für eine definierte Zeitspanne im Reset zu halten. Nun stellt sich mir die Frage, wozu teilweise noch das Verhalten berechnet wird? Welche Aspekte, wahrscheinlich Sicherheitsaspekte spielen dabei eine Rolle?
Aeh, ja. Es gibt langsame Supplies, die nur wenig Strom bringen und es gibt stabile Supplies die jeden Strom bringen. Und dann gibt es Schwabbelsupplies, die hin und wieder einbrechen. Falls der Stromverbrauch ein Thema ist, sollte ein externer Powerdetektor in Betracht gezogen werden. Ein MCP111T, zB zieht nur 1uA.
ich würde jetzt nicht sagen das das RC-Glied zum verzögerten Einschalten des AVRs gedacht ist, da man ja eine Startverzögerung bis zu 64mSek auch direkt flashen kann. Das RC Glied hält kurze negative Spikes fern damit der AVR nicht irrtümlicherweise resetet wenn so ein kurzer Spike an den Reseteingang kommt. Durch das RC-Glied werden kurze Spikes unterdrückt und das der AVR verzögert einschaltet ist ein zugehöriger Nebeneffekt. Außerdem könnte ich mir vorstellen das bei absinkender Versorgungsspannng die Spannung am Reseteingang früher abfällt(wegen dem Widerstand) und dadurch der AVR sicher resetet wird, also nicht das das Programm unterbrochen wird oder durcheinanderkommt und der AVR dann mit falschen Werten weitermacht, sonder ein Reset stattfindet und das Programm vom neuen beginnt. Glaube aber mal im Forum hier gelesen zu haben das trotzdem Daten im SRAM stehen bleiben könne trotz Reset, leider finde ich den Beitrag nicht mehr da mich das damals auch ganz schön verwundert hat, wenn man sich nichtmal auf einen Reset verlassen kann.
Zusätzlich dazu hat fast jeder AVR einen BrownOut Detektor, der dann einen Reset auslöst, wenn die Betriebsspannung die minimale gültige Schwelle unterschreitet. Diese Schwelle ist in Stufen programmierbar. Externe Resetbausteine sind an einem AVR eigentlich überflüssig.
Die RC-Beschaltung des Reset-Pins (die eigentlich noch eine Schutzdiode braucht) kenne ich nur von den ersten AVRs (ohne BOD) als billigen Ersatz für einen externen Reset-Baustein. Bei den heute üblichen AVRs ist der Kondensator Unsinn. Den PullUp am Reset setze ich aber immernoch ein. Der interne BOD hat einen nicht zu vernachlässigenden Ruhestrom. Falls dieser stört, sollte ein externer Reset-Baustein mit besonders geringem Stromverbrauch eingesetzt werden. Im Normalfall ist ein externer Reset-Baustein nicht nötig. ...
Danke für die Antworten. Was mir da noch zu denken gibt, ist ein programmierter Controller der mitten im Programm resettet wird. Wie sieht das mit den Pins nach dem Neustart aus? Also in der Zeit bis zur Stelle im Programm, wo die Pins initialisiert werden? Haben die einen definierten Zustand?
Max wrote: > Danke für die Antworten. > > Was mir da noch zu denken gibt, ist ein programmierter Controller der > mitten im Programm resettet wird. Wie sieht das mit den Pins nach dem > Neustart aus? Also in der Zeit bis zur Stelle im Programm, wo die Pins > initialisiert werden? Haben die einen definierten Zustand? Jep, die Pins sind beim Controllerstart Hochohmig. (Bzw. Als Eingang ohne Pullup: DDRx = 0; PORTx = 0)
Hannes Lux wrote: > Den PullUp am Reset setze ich aber immernoch > ein. Dito. Ich hatte schonmal das Problem, dass der Controller in einer verseuchten Umgebung dauernd resettet hat. Mit den 50kOhm eingebauten Reset-Pullup ist der Pin aber auch eher floatend statt fest definiert. Ein externer Pullup hat Abhilfe geschafft (3k3)
und wie programmiert man einen AVR wenn man in nicht resetten kann? Ohne den Pullupwiderstand wird es die Programmierschaltung ziemlich schwer haben die Spannung am Resetpin runterzuziehen.
Thomas O. wrote: > und wie programmiert man einen AVR wenn man in nicht resetten kann? Ohne > den Pullupwiderstand wird es die Programmierschaltung ziemlich schwer > haben die Spannung am Resetpin runterzuziehen. So'n Quatsch.. Was hat denn das jetzt für einen Sinn? Außerdem haben die neuen AVR ja einen internen Pullup.
Simon Küppers wrote: > Hannes Lux wrote: >> Den PullUp am Reset setze ich aber immernoch >> ein. > > Dito. Ich hatte schonmal das Problem, dass der Controller in einer > verseuchten Umgebung dauernd resettet hat. Mit den 50kOhm eingebauten > Reset-Pullup ist der Pin aber auch eher floatend statt fest definiert. > Ein externer Pullup hat Abhilfe geschafft (3k3) Bisher nahm ich 3k9 oder 4k7. Ich werde aber auf 10k umstellen, da laut Dragon-Doku Debug-Wire sonst nicht sauber funktionieren soll. In verseuchter Umgebung sollte ein Jumper nach VCC oder zu einem niederohmigerem PullUp helfen (falls Reset-Taster nötig ist), der beim Programmieren entfernt werden kann. Thomas O. wrote: > und wie programmiert man einen AVR wenn man in nicht resetten kann? Kein Reset-Widerstand heißt ja nicht, dass Reset fest auf Vcc liegt. Es soll Leute geben, die Reset offen lassen und auf den internen PullUp vertrauen. Außerdem soll es Schaltungen geben, in denen fertig programmierte AVRs eingesetzt werden, deren Programme keine "Bananensoftware" sind, also nicht beim Kunden reifen. Diese brauchen nunmal keine Update-Möglichkeit. ...
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.