Forum: Mikrocontroller und Digitale Elektronik ATmega328p reset pin chip intern auf low?


von Silvio K. (exh)


Lesenswert?

Hallo,
ich habe ein Problem mit einem Arduino Mini-Pro (8Mhz/3.3V), den ich auf 
einer eigenen Platine über ISP programmiere. Ich habe ca. 10 solche 
Aufbauten im Betrieb und der 11. ging auch super, bis ich die 
Spannungsversorgung (4V Netzteil) abklemmte und der AVRISPmk2 noch dran 
war. Danach ging er nicht mehr. Er lässt sich weiterhin fehlerfrei 
programmieren und auch die fuse können gesetzt und gelesen werden. Mir 
fiel auf, dass der Reset-Pin auf low blieb. Mit einem 330 Ohm Widerstand 
nach VCC kommt er auf 1,8 V und der ATmega arbeitet, als wenn nichts 
gewesen wäre. Allerdings zieht der Reset-Pin nun 4,5 mA und der Pegel 
ist mit 1,8V nicht mal ein sicheres High. Was nun? Ist der Chip halb 
tot?
Wechseln kann ich ihn, aber ich würde gerne wissen, warum er nicht 
funktioniert, bzw, warum der RST so viel Strom braucht. Ist für eine 
Akku-getriebene Kiste, daher ist das schon eine krumme Sache. Laut 
Datenblatt kann der RST auch als Input benutzt werden, aber kein Hinweis 
auf interne Pulldown-Möglichkeit oder Funktion als OD oder PP.

Der AtMega328p-Chip kommt von Reichelt, daher denke ich, dass er kein 
Fake ist. Vorher war er fake, kam alles über AliExpress und es ging gar 
nichts.

avrdude: safemode: Fuses OK (E:FF, H:D9, L:E2)

Danke im Voraus

Silvio

von H. H. (hhinz)


Lesenswert?

Da ist doch noch ein Kerko im Spiel. Wäre nicht der erste, der spontan 
einen erheblichen Leckstrom hat.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Silvio K. schrieb:
> Laut Datenblatt kann der RST auch als Input benutzt werden,
Auch als OUTPUT.

Silvio K. schrieb:
> oder Funktion als OD oder PP.
Was soll das sein?
Geheimsprache?

Silvio K. schrieb:
> Wechseln kann ich ihn, aber ich würde gerne wissen, warum er nicht
> funktioniert, bzw, warum der RST so viel Strom braucht.

Manche Dinge gehen einfach kaputt.
Fehlbedienungen, sind durchaus eine übliche Ursache.

von Silvio K. (exh)


Lesenswert?

Arduino F. schrieb:
> Auch als OUTPUT.
Das habe ich eben nicht im Datenblatt gefunden, daher wundert mich das.

> Geheimsprache?
Sorry: OD (Open Drain), PP (Push-Pull)

von Sebastian R. (sebastian_r569)


Lesenswert?

Arduino F. schrieb:
> Silvio K. schrieb:
>> oder Funktion als OD oder PP.
> Was soll das sein?
> Geheimsprache?

Open Drain und Push-Pull. Kann man drauf kommen, wenn man will.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Sebastian R. schrieb:
> Kann man drauf kommen, wenn man will.
Der m328p hat keine Open Drain Pins/Konfiguration, abgesehen von I2C.
Und der der Reset Pin kann durchaus Push-Pull
Also alles dieses ist eine Nebelkerze.

Bevor Nebelkerzen zu Missverständnissen führen, frage ich doch lieber 
nach.
Ja, du darfst mich dafür für blöd erklären, wenn du möchtest, wenn es 
dich glücklich macht.

Silvio K. schrieb:
> Das habe ich eben nicht im Datenblatt gefunden, daher wundert mich das.

Aus dem Datenblatt, Abschnitt 1.1.5:
> If the RSTDISBL Fuse is programmed, PC6 is used as an I/O pin.

Aus dem Datenblatt, Abschnitt 14.3.2:
> When the RSTDISBL Fuse is programmed, this pin functions as a normal I/O pin,

https://ww1.microchip.com/downloads/aemDocuments/documents/MCU08/ProductDocuments/DataSheets/ATmega48A-PA-88A-PA-168A-PA-328-P-DS-DS40002061B.pdf

: Bearbeitet durch User
von Silvio K. (exh)


Lesenswert?

Arduino F. schrieb:
> Aus dem Datenblatt, Abschnitt 1.1.5:
>> If the RSTDISBL Fuse is programmed, PC6 is used as an I/O pin.

Oh danke. Ich habe offensichtlich ein älteres Datenblatt 
(7810D–AVR–01/15), da ist nur von Input die Rede.

Die Fuse macht den PC6 zum Reset und der Reset funktioniert ja auch, nur 
halt mit zu hohem Strom.

@hhinz: Ich habe nach dem Kerko geguckt und gar keinen auf der PCB 
gefunden. Am Reset ist nur ein 10k Pull-up, der es ja nicht schafft.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Silvio K. schrieb:
> Ich habe nach dem Kerko geguckt und gar keinen auf der PCB
Der Pro Mini hat einen Kerko Richtung DTR.
Wenn kein USB Adapter dran ist, ist der Wirkungslos.
Siehe: 
https://www.arduino.cc/en/uploads/Main/Arduino-Pro-Mini-schematic.pdf

Silvio K. schrieb:
> Ich habe offensichtlich ein älteres Datenblatt

Das ist vollkommen aktuell.
Aber leider für einen anderen µC, für die automotive Variante.
Die beiden µC sind sehr sehr ähnlich, aber nicht identisch.

: Bearbeitet durch User
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Silvio K. schrieb:
> Mit einem 330 Ohm Widerstand nach VCC kommt er auf 1,8 V und der ATmega
> arbeitet, als wenn nichts gewesen wäre. Allerdings zieht der Reset-Pin
> nun 4,5 mA und der Pegel ist mit 1,8V nicht mal ein sicheres High. Was
> nun? Ist der Chip halb tot?

ESD-Schaden

von Silvio K. (exh)


Lesenswert?

> ESD-Schaden

Gut möglich. Ich werde ihn tauschen.

Danke an alle!!

von Norbert S. (norberts)


Lesenswert?

Aber sicher haben die AVR Open Drain. Port Register auf null lassen 
(oder auf 1 für 50-80k Pullup) und das DDR ansteuern, schon hat man Open 
Drain.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Norbert S. schrieb:
> schon hat man Open Drain.

Jain!

Ja, weil man so eine Wirkung erzielen kann, ALS wäre es Open Drain.

Nein, weil man keinen m328p Pin als Open Drain definieren kann. Andere 
µC haben durchaus diese Möglichkeit.

Es ist also nur die Emulation in Software möglich. Nix nativ.

von Mi N. (msx)


Lesenswert?

Es ist gelb wie eine Banane, es ist krumm wie eine Banane und es 
schmeckt wie eine Banane. Es steht aber nicht "Banane" drauf.
Folglich ist es keine Banane.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Was hat denn die sinnlose OD-Diskussion jetzt noch mit dem eigentlichen 
Thema zu tun?

Da es zehn gleichartige funktionierende Aufbauten gibt, kann man getrost 
davon ausgehen, dass es nicht ein auf IO umgefuster Reset-Pin ist, der 
hier das Problem ist. Der ließe sich danach ohnehin auch nicht mehr via 
ISP ansprechen.

Folglich ist es ein ganz normaler /RESET, und wenn der Strom zieht, hat 
der ein elektrisches Problem.

von S. L. (sldt)


Lesenswert?

> ESD-Schaden

aus der Application-Note AVR042:

ESD protection diode is not provided internally from RESET to VCC in 
order to allow HVPP. If HVPP is not used, it is recommended to add an 
ESD protection diode externally from RESET to VCC. Alternatively, a 
Zener diode can be used to limit the RESET voltage relative to GND.

von Silvio K. (exh)


Lesenswert?

Jörg W. schrieb:
> kann man getrost
> davon ausgehen, dass es nicht ein auf IO umgefuster Reset-Pin ist

Aus Verzweiflung habe ich versucht, den PC6 als IO anzusprechen, um zu 
sehen, ob es einen Einfluss hat. Also DDR mit 0 und 1 und PC6 mit 0 und 
1. Es hat keinen Einfluss auf den Fehlerstrom. Es sollte keinen Einfluss 
haben und hat es auch nicht, da nicht zum IO gefused. (ESD-)Schaden ist 
wahrscheinlich, obwohl mich das erschreckt, da ich U_raw abgeklemmt habe 
und da auch noch ein LDO dazwischen ist zum ATMEGA hin. Einfach 
irgendwie Pech gehabt.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Jörg W. schrieb:
> Was hat denn die sinnlose OD-Diskussion jetzt noch mit dem eigentlichen
> Thema zu tun?

Ihm hat das falsche Datenblatt als Richtschnur genommen.
Ist so auch mit falschen Annahmen gestartet.
So auch die Flachaussage PC6 "kann kein PP"!
Und ja: OD kann man auch nicht konfigurieren. Gibts keinen 
Register(eintrag) für. Da hatte ihm recht.

von Silvio K. (exh)


Lesenswert?

S. L. schrieb:
> ESD protection diode is not provided internally

Danke auch für diesen Hinweis. Der Reset-Pin ist demnach empfindlicher. 
Vielleicht nimmt er Schaden, wenn VCC auf Null geht und Reset wie auch 
immer auf High gehalten wird (ISP-Programmer, C intern oder oder oder). 
Keine Ahnung. Es ist Winter, die Luft ist trocken. ESD, kann schon sein, 
auch wenn man es nicht merkt, dass es knistert.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Silvio K. schrieb:
> Der Reset-Pin ist demnach empfindlicher.

Naja...
Immerhin der einzige Pin. welcher 12V verträgt/überlebt

: Bearbeitet durch User
von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Ich würde sagen, er hat den Pin mittels ESD oder dem ungeschickten 
Trennen der Versorgung weggeschossen.

Sowas habe ich auch selbst schon geschafft, der Treiberschaltkreis einer 
H-Brücke hat den Arsch zugekniffen (seltsamerweise die FETs nicht wenn 
ich das korrekt in Erinnerung habe) und dabei wurde eine der 
Schutzdioden von einem der steuernden Pins zerstört. Der Controller 
(AVR) erschien sonst unbeschädigt, aber wenn man diesen Pin dann auf 
high oder low ziehen wollte (weiß nicht mehr genau welche Diode zerstört 
war), hatte man eine Chip-interne Heizung, die auch gut Strom gezogen 
hat...

von Johannes F. (jofe)


Lesenswert?

Arduino F. schrieb:
> Silvio K. schrieb:
>> Der Reset-Pin ist demnach empfindlicher.
>
> Naja...
> Immerhin der einzige Pin. welcher 12V verträgt/überlebt

Und das macht bezüglich ESD genau welchen Unterschied?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Johannes F. schrieb:
> Und das macht bezüglich ESD genau welchen Unterschied?

Dass er keine interne ESD-Schutzdiode nach VDD haben kann.  Steht alles 
in der (uralten) Appnote AVR040.

https://ww1.microchip.com/downloads/en/AppNotes/Atmel-1619-EMC-Design-Considerations_ApplicationNote_AVR040.pdf

(Man hätte ihm vielleicht eine ESD-Schutzdiode spendieren können, die 
dann über eine Z-Diode an VDD geht.  Hat man halt nicht.)

von Johannes F. (jofe)


Lesenswert?

Jörg W. schrieb:
> Dass er keine interne ESD-Schutzdiode nach VDD haben kann.

Das weiß ich. Meine (rhetorische) Frage bezog sich auf diese Äußerung:

Arduino F. schrieb:
> Immerhin der einzige Pin. welcher 12V verträgt/überlebt

Nämlich dass die Eigenschaft dieses Pins, einige Volt mehr als die 
übrigen zu "vertragen", im Kontext von ESD so ziemlich sehr irrelevant 
ist (weil es da ja bekanntlich um einige Kilovolt geht).

Im Gegenteil ist dieser Pin, wie schon festgestellt wurde, wesentlich 
empfindlicher gegenüber ESD, aufgrund der notwendigerweise fehlenden 
Klemmdiode nach VCC.

Daher erschien mir der oben zitierte Kommentar von 'arduinof' fehl am 
Platze.

: 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
Noch kein Account? Hier anmelden.