Forum: Mikrocontroller und Digitale Elektronik Atmega 328P resetten


von Manfred H. (manfredbochum)


Lesenswert?

Hallo
Hab mal eine Frage an die Softwareprofis.
Ich habe einen IR FB Empfänger von ELV mit besagtem Atmega.
Die Ausgänge sind bei aktiv auf Dauer high.
Ich muss extern über eine Taste die Ausgabe zurücksetzen.
Reset Pin 29 liegt über 10k auf +5V.
Kann ich einfach Reset kurz auf Null ziehen, oder ist es schlauer die 
Betriebsspannung kurz weg zu schalten?
Hab ja schon öfters was von zerschossenen Programmen gelesen.
Deshalb bin ich da vorsichtig.

Gruß Mani

von Sebastian R. (sebastian_r569)


Lesenswert?

Manfred H. schrieb:
> Kann ich einfach Reset kurz auf Null ziehen

Genau dafür ist der Reset da, davon kann nichts zerschossen werden.

von Rahul D. (rahul)


Lesenswert?

Manfred H. schrieb:
> Die Ausgänge sind bei aktiv auf Dauer high.
Wie sieht es denn mit dem Standard-Zustand nach dem Einschalten aus?
Sowas steht im Datenblatt.

> Ich muss extern über eine Taste die Ausgabe zurücksetzen.
> Reset Pin 29 liegt über 10k auf +5V.
Wie immer
> Kann ich einfach Reset kurz auf Null ziehen, oder ist es schlauer die
> Betriebsspannung kurz weg zu schalten?

Kommt fast auf das selbe raus.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

der hier?
https://de.elv.com/p/elv-bausatz-ir-empfaenger-8-kanaele-ire-8-lieferung-ohne-gehaeuse-P104674/

"Da die Port-Pins über integrierte Pull-ups verfügen, ist hier keine 
weitere Beschaltung erforderlich. Der Reset-Eingang des Controllers ist 
mit dem Widerstand R4 beschaltet" (10k nach +5V).

Der Reset scheint nur die Software zurückzusetzen, da kann nichts 
passieren, damit wird der Programmspeicher nicht geändert.

https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf#page=4
"1.1.5 PC6/RESET
If the RSTDISBL fuse is programmed, PC6 is used as an input pin. If the 
RSTDISBL fuse is unprogrammed, PC6 is used as a reset input. A low level 
on this pin for longer than the minimum pulse length will generate a 
reset, even if the clock is not running."

Ob der als Reset benutzbar ist, hängt von der Einstellung der Fuse ab, 
das ist nicht sicher. Eine Überprüfung des Zustands ist höchstens mit 
einem "HV-Programmer" möglich.
https://www.mikrocontroller.net/articles/AVR_HV-Programmer

: Bearbeitet durch User
von Manfred H. (manfredbochum)


Lesenswert?

Genau der von Christoph verlinkte ist es.
Dann nehme ich den Resetpin und probiere es aus.

Danke für Eure Hilfe

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

https://mightyohm.com/blog/2008/09/i-programmed-the-rstdisbl-fuse/
Da steht es auch, "SPI programmers need the RESET pin to flash the 
device."
"The only way to recover is with a high voltage programmer".

https://www.mikrocontroller.net/articles/AVR_Fuses#SPIEN,_DWEN_und_RSTDISBL
"Besonders heimtückisch"

von Oliver S. (oliverso)


Lesenswert?

Christoph db1uq K. schrieb:
> Der Reset scheint nur die Software zurückzusetzen, da kann nichts
> passieren, damit wird der Programmspeicher nicht geändert.

Allerdings wäre das Konzept mit Programm im Flash ja völlig sinnlos, 
wenn sich daran durch Aus- und Einschalten des Prozessors was verändern 
würde.

Manfred H. schrieb:
> Hab ja schon öfters was von zerschossenen Programmen gelesen.

Wo denn?

Oliver

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Normalerweise sollte der µC beim Einschalten die Resetroutine ausführen. 
Wenn die Software aus unbekanntem Grund abstürzt, kann man den Kaltstart 
durch Ausschalten oder über einen Reset auslösen, das sollte egal sein.

Einen umprogrammierbaren Reseteingang braucht man vor allem für die 
8-Pin µC, wenn die Anschlüsse nicht ausreichen. Der Kaltstart durch 
Aus/Einschalten funktioniert dann immer noch.

: Bearbeitet durch User
von Cyblord -. (cyblord)


Lesenswert?

Manfred H. schrieb:
> Hab ja schon öfters was von zerschossenen Programmen gelesen.

Hab schon öfter was von Aliens gelesen die Leute entführen und 
Analexperimente durchführen. Deshalb bin ich vorsichtig und schlafe nur 
mit Metallplatte am Hintern.

von Björn W. (bwieck)


Lesenswert?

Manfred H. schrieb:
> Die Ausgänge sind bei aktiv auf Dauer high.

Das kann man bei dem Board einstellen wie sich die Ausgänge verhalten.
Anleitung lesen.

von Oliver S. (oliverso)


Lesenswert?

Christoph db1uq K. schrieb:
> Normalerweise sollte der µC beim Einschalten die Resetroutine
> ausführen.

Der Prozessor führt beim Einschalten einen Power-On-Reset durch. Immer. 
Nicht müsste, sollte, könnte.

Oliver

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Ja klar, wenn er in Ordnung ist.

Ich kann mir vorstellen, dass man den Bootloader eines Arduino mit einem 
Programmiergerät so zerschießen kann, dass man ihn anschließend von 
arduino.cc als Datei holen und mit dem selben Programmiergerät wieder 
einspielen muss, was vielleicht Anfänger überfordert.

Oder man hat während eines Programmiervorgangs einen 
Spannungsausfall/Unterspannung, was irgendwie eine Fuse versehentlich 
umklappt, sodass man sogar einen HV-Programmer braucht um das zu 
reparieren.

Oder man hat ein Programmiergerät, das sogar irgendwie den 
Programmspeicher mit Nullen füllt und dabei auch Fuses erwischt, ich bin 
nicht sicher, ob das zuverlässig verhindert ist.

Aber das sind alles ziemlich konstruierte Fälle. Eher uńwahrscheinlich.

von Sherlock 🕵🏽‍♂️ (rubbel-die-katz)


Lesenswert?

Christoph db1uq K. schrieb:
> Ich kann mir vorstellen, dass man den Bootloader eines Arduino mit einem
> Programmiergerät so zerschießen kann, dass man ihn anschließend von
> arduino.cc als Datei holen und mit dem selben Programmiergerät wieder
> einspielen muss, was vielleicht Anfänger überfordert.

Wer es schafft, den Bootloader zu zerstören, der schafft man es auch, in 
der Arduino IDE auf "Bootloader brennen" zu klicken. Mehr ist dazu 
nämlich nicht nötig.

Was hat das mit Poweroff/Reset zu tun?

von Manfred H. (manfredbochum)


Lesenswert?

Björn W. schrieb:
> Manfred H. schrieb:
>> Die Ausgänge sind bei aktiv auf Dauer high.
>
> Das kann man bei dem Board einstellen wie sich die Ausgänge verhalten.
> Anleitung lesen.

Stell dir vor dass ich genau das brauche  um einen rastenden Tastensatz 
nachzubilden.

Ich werde Ub kurz unterbrechen.

: Bearbeitet durch User
von Maxim B. (max182)


Angehängte Dateien:

Lesenswert?

Manfred H. schrieb:
> Kann ich einfach Reset kurz auf Null ziehen, oder ist es schlauer die
> Betriebsspannung kurz weg zu schalten?

Um auf Nummer Sicher zu gehen, kann man externe Reset-IC verwenden, so 
wie STM6315.

: Bearbeitet durch User
von Rainer W. (rawi)


Lesenswert?

Manfred H. schrieb:
> Ich werde Ub kurz unterbrechen.

Die Unterbrechung muss mindestens so lange dauern, dass die 
Kondensatoren auf der Betriebsspannung sicher Entladen werden.
Dabei müssen auch sämtliche Eingäng vom uC spannungsfrei sein. Sonst 
wird der uC parasitär versorgt.

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Der Programmspeicher (Flash) der AVR-Controller ist eigentlich recht 
robust, aber manche hatten Probleme mit dem EEPROM, wenn dieses bei 
wackeliger Betriebsspannung benutzt wurde.

Die meisten AVRs haben einen Brownout-Detektor, der sich über die Fuses 
einschalten lässt. Wenn man den kitzlig einstellt, bringt der die CPU 
schon bei unter 4,3V in den Reset-Zustand (sind auch 2,7V und 1,8V 
einstellbar). Dadurch wird verhindert, daß der Controller wegen zu 
niedriger Betriebsspannung crasht und dabei evtl. irgendwelche 
ungewollten Operationen ausführt oder Daten zerstört. Wenn die Spannung 
nach so einem Brownout wieder ansteigt, startet der AVR so wie nach dem 
Einschalten.

Externe Reset-Bausteine braucht der AVR normalerweise nicht, er hat 
eigentlich alles dafür selbst integriert.

von Jens G. (jensig)


Lesenswert?

Manfred H. schrieb:
> Die Ausgänge sind bei aktiv auf Dauer high.
> Ich muss extern über eine Taste die Ausgabe zurücksetzen.
> Reset Pin 29 liegt über 10k auf +5V.
> Kann ich einfach Reset kurz auf Null ziehen, oder ist es schlauer die
> Betriebsspannung kurz weg zu schalten?

Und was passiert, wenn die Betriebsspannung wieder da ist, oder Reset 
nicht mehr auf L, und die FB liefert immer noch "aktiv"? Dann sind evtl. 
die Ausgänge wieder auf H, weil nach Programm-Restart weiterhin "aktiv" 
erkannt wird - ist das so gewollt?

: Bearbeitet durch User
von Manfred H. (manfredbochum)


Lesenswert?

Die FB würde nur senden wenn ich die Taste drücke.
Also keine Gefahr.

von Stefan (Gast)


Lesenswert?

Haben die Avrs oder alle uC auch einen Softreset?
Also kann man den aus dem Programm heraus resetten?

von Cyblord -. (cyblord)


Lesenswert?

Stefan schrieb:
> Haben die Avrs oder alle uC auch einen Softreset?
> Also kann man den aus dem Programm heraus resetten?

Nein das haben die AVRs meistens gar nicht. Man kann aber den Watchdog 
missbrauchen.

: Bearbeitet durch User
von Oliver S. (oliverso)


Lesenswert?

Nicht direkt, nur über den Umweg eines Watchdog-Resets.

Oliver

von Georg M. (g_m)


Angehängte Dateien:

Lesenswert?

Stefan schrieb:
> Haben die Avrs oder alle uC auch einen Softreset?
> Also kann man den aus dem Programm heraus resetten?

von Cyblord -. (cyblord)


Lesenswert?

Georg M. schrieb:
> Stefan schrieb:
>> Haben die Avrs oder alle uC auch einen Softreset?
>> Also kann man den aus dem Programm heraus resetten?

Welchen AVR betrifft dieser Screenshot? Die alten haben kein SW Reset.

von Stefan (Gast)


Lesenswert?

ah ok, dass dachte ich mir schon, die neuen haben ja sehr viel solcher 
neuen Features eingebaut, deshalb war ich eben schon überrascht, das die 
neuen AVR Serien das noch nicht haben sollen.
Wäre jetzt davon ausgegangen, dass das alle mit der neuen PDI 
Schnittstelle können

von Cyblord -. (cyblord)


Lesenswert?

Stefan schrieb:
> ah ok, dass dachte ich mir schon, die neuen haben ja sehr viel solcher
> neuen Features eingebaut, deshalb war ich eben schon überrascht, das die
> neuen AVR Serien das noch nicht haben sollen.
> Wäre jetzt davon ausgegangen, dass das alle mit der neuen PDI
> Schnittstelle können

Lies doch einfach für deine verwendeten AVRs nach ob die das können. So 
abstrakt ist die Diskussion schwierig.

von Stefan (Gast)


Lesenswert?

Ich habe gerade keinen Fall!! Ich frage allgemein, und bin davon 
ausgegangen, das die neuen das können, die allermeisten, zumindest.

von Georg M. (g_m)


Lesenswert?

Cyblord -. schrieb:
> Welchen AVR betrifft dieser Screenshot? Die alten haben kein SW Reset.

AVR mit UPDI (d.h. ab 2017).

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Man könnte sich auch einen Hardware-Reset bauen, der AVR kann mit einem 
seiner Pins den eigenen Reset-Pin auf Masse ziehen.

von Cyblord -. (cyblord)


Lesenswert?

Ben B. schrieb:
> Man könnte sich auch einen Hardware-Reset bauen, der AVR kann mit einem
> seiner Pins den eigenen Reset-Pin auf Masse ziehen.

Das funktioniert nicht. Da beim Ziehen des Reset, alle Ausgänge 
hochohmig werden, noch bevor die benötigte Reset-Zeit für einen 
korrekten Reset erreicht ist.
Da muss mindestens noch ein Kondensator hin.

von Rainer W. (rawi)


Lesenswert?

Manfred H. schrieb:
> Kann ich einfach Reset kurz auf Null ziehen, oder ist es schlauer die
> Betriebsspannung kurz weg zu schalten?

Warum kannst du beim Drücken deiner externen Taste den gewünschten 
Zustand nicht programmatisch herstellen?

von Manfred H. (manfredbochum)


Lesenswert?

Weil es ein fertiges Modul ist.

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.