Merkwürdiges Phänomen an den Eingängen eines Mega2560

#2143143
Lesenswert?

Hallo zusammen,

Habe einen Mega 2560 erfolgreich in Betrieb gesetzt. Er steuert ca. 50 
Ausgänge und misst an den ADCs (über Spannungsteiler) richtige 
Spannungen (nachgemessen mit Multimeter) und nimmt Interrupts an 
Eingängen richtig entgegen.

Allerdings saugen einige Eingänge über 1 kOhm Widerstände einen 5mA 
Strom bei angelegten HIGH Potential - funktionieren also nicht (Port D: 
PD5,PD6 und PD7). Ebenso saugen  4 ADC Kanäle messbaren Strom von 5 mA 
(was ja wohl auch nicht sein darf - aber sie funtionieren dennoch 
ordnungsgemäß, Messergebnisse stimmen).

Der PORT D ist als AUSGANG ebenfalls voll funktionsfähig! Gesetzte oder 
nicht gesetzte PULL-UPs machen bei der Fehlfunktion EINGANG an den PINs 
von PORT D keinen Unterschied.

Hat jemand eine Idee, was da los ist ? Was mache ich falsch ?

Wie könnte es zu solch einem Defekt gekommen sein ? Eine Fehlbeschaltung 
kann es ja wohl kaum sein, dann wären ja wohl eher die Treiber der 
Ausgänge defekt. Die funktionieren aber gerade tadellos.

Die Eingänge hingegen sind ja hochohmig. Da kann man sich ja wohl kaum 
verschalten - oder ?

Dank im voraus!
#2143167
Lesenswert?

Simon K. schrieb:
> Hmm, Schaltplan?
>
> Eventuell sind die Eingänge fälschlicherweise als Ausgang geschaltet.

Definitiv nicht! Gegenprobe wurde gemacht - als Ausgänge funktionieren 
sie ja.

> Alternativ kann es auch sein, dass sich die Eingänge in irgendeinem
> Latchup Zustand befinden.

Bedeutet also, dass bei der Inbetriebnahme fehlerhafte 
Spannungsversorgungen im Spiel waren ?

> Oder du gibst zu viel Spannung auf die Eingänge, sodass Strom über die
> Clamp Dioden fließt.

Zu hohe Spannungen würde ich eher ausschließen. Ausserdem habe ich an 
den digitalen Eingängen 1kOhm Widerstände vorgeschaltet.

Elektrostatische Effekte können natürlich immer die Ursache sein. 
Allerdings scheinen mir die AVRs doch eher robust zu sein - oder ?

Grüße
Gast #2143174
Lesenswert?

Hatte mal bei einem Schaltregler ein ähnliches Problem, da wurde durch 
induktive Effekte trotz Schutzbeschaltung scheinbar der ADC oder die 
Clamp-Diode in Mitleidenschaft gezogen. Anschließen sind auf diesen 
ADC-Kanälen auch ziemlich hohe Ströme geflossen obwohl der ADC selbst 
noch ging.

Grüße
Mani
#2143183
Lesenswert?

Zu obigen Posts direkt noch eine Verstehensfrage:

Der MC hat ja mehrere VCC und GND Anschlüsse (5 Paare ?).

Sind diese ALLE (unabhängig von den Lasten) an GND und VCC AUSSEN zu 
beschalten, oder können einige offen bleiben (100nF schon angelegt!)?

Sie sind doch untereinander im Chip alle verbunden. Warum designen die 
Chiphersteller soviele VCC/Gnd Anschlüsse ?

Danke im voraus
Gast #2143192
Lesenswert?

Hi

>Sind diese ALLE (unabhängig von den Lasten) an GND und VCC AUSSEN zu
>beschalten,

Grundsätzlich alle. Wohl kein Datenblatt gelesen? Oder wie kommt es zu 
dieser Frage?

>Sie sind doch untereinander im Chip alle verbunden. Warum designen die
>Chiphersteller soviele VCC/Gnd Anschlüsse ?

Weil ein Bonddraht vom Pin zum Chip nur einen begrenzten Strom zulässt.

MfG Spess
#2143195
Lesenswert?

Hendrik L. schrieb:
> Zu obigen Posts direkt noch eine Verstehensfrage:
>
> Der MC hat ja mehrere VCC und GND Anschlüsse (5 Paare ?).
>
> Sind diese ALLE (unabhängig von den Lasten) an GND und VCC AUSSEN zu
> beschalten, oder können einige offen bleiben (100nF schon angelegt!)?

Nein, sind alle zu beschalten.

> Sie sind doch untereinander im Chip alle verbunden.

Nicht zwangsweise, teilweise ist das so, aber man kann sich nicht darauf 
verlassen. Es kommt durchaus vor das sie jeweils andere 
Funktionseinheiten versorgen.

> Warum designen die
> Chiphersteller soviele VCC/Gnd Anschlüsse ?

Für die induktivitätsarme Anbindung.

>
> Danke im voraus
#2143196
Lesenswert?

Hendrik L. schrieb:
> Sind diese ALLE (unabhängig von den Lasten) an GND und VCC AUSSEN zu
> beschalten, oder können einige offen bleiben (100nF schon angelegt!)?

Ja alle!
Und jedes VCC/GND-Pärchen kriegt auch seine eigene 100nF Pille!


Hendrik L. schrieb:
> Sie sind doch untereinander im Chip alle verbunden. Warum designen die
> Chiphersteller soviele VCC/Gnd Anschlüsse ?

Jeder Anschluß hat eine Induktivität und einen Widerstand. Je mehr 
IO-Pins ein IC hat, umso mehr VCC/GND Pins gibt es, um die Umladeströme 
aufzunehmen.


Peter
#2143204
Lesenswert?

Peter Dannegger schrieb:
> Hendrik L. schrieb:
>> Allerdings saugen einige Eingänge über 1 kOhm Widerstände einen 5mA
>> Strom bei angelegten HIGH Potential
>
> Dann hast Du sie als Ausgang konfiguriert.
> Halte mal Reset auf low, dann müssen sie hochohmig sein.

Werde ich mal checken. Reset auf LOW, bedeutet das, der MC darf gar 
keinen Strom mehr in diesem Moment ziehen ?

>
>
> Peter

Sorry, Peter, habe großen Respekt vor Deiner Person - aber sei 
versichert, habe sie im Problemfall definitiv NICHT als Ausgang 
konfiguriert! Mehrmals gecheckt!!!

In der Gegenprobe habe ich sie dann als Ausgang konfiguriert, und da 
haben sie auch einwandfrei als Ausgang geschaltet.

Definitiv habe ich das Problem nur, wenn die PINs als EINGANG gesetzt 
wurden. Kann aber nicht ausschliessen, dass sie in der 
AUSGANGS-Beschaltung nicht auch diese 5mA verbrauchen. Das habe ich 
nicht gecheckt! Stromverbrauch des Mega geht an die 65 mA ... das dürfte 
wohl zu viel sein. Er wird auch leicht warm (25°) - dürfte doch auch 
nicht sein - oder ?

Die LatchUp Theorie könnte eine Erklärung sein (nachdem was ich in 
wikipedia dazu gelesen habe).

Grüße
#2143222
Lesenswert?

Hendrik L. schrieb:
> Sorry, Peter, habe großen Respekt vor Deiner Person - aber sei
> versichert, habe sie im Problemfall definitiv NICHT als Ausgang
> konfiguriert! Mehrmals gecheckt!!!

Solche absoluten Aussagen in Bezug auf einen möglichen Softwarefehler 
sind in der Regel sehr gewagt. Du hast also wirklich jede nur denkbare 
Möglichkeit gecheckt? Z.B. auch ein Verändern von DDRD über einen Amok 
laufenden Pointer?

Hendrik L. schrieb:
>> Eventuell sind die Eingänge fälschlicherweise als Ausgang geschaltet.
>
> Definitiv nicht! Gegenprobe wurde gemacht - als Ausgänge funktionieren
> sie ja.

Und inwiefern soll ein "als Ausgänge funktionieren sie ja" einen 
Softwarefehler ausschließen, der die Pins zu Ausgängen macht?
#2143228
Lesenswert?

Hendrik L. schrieb:
> Sorry, Peter, habe großen Respekt vor Deiner Person - aber sei
> versichert, habe sie im Problemfall definitiv NICHT als Ausgang
> konfiguriert! Mehrmals gecheckt!!!

In Software ist alles möglich.
Wieviel Zeilen hat Dein gesamtes Programm?


Oder Du hast sie gekillt. Das passiert, wenn keine VCC anliegt, aber der 
Eingang niederohmig Spannung kriegt.
Wenn nicht garantiert werden kann, daß VCC immer als erstes und zuletzt 
anliegt, dann Schutzwiderstände (10k) in Reihe.

65mA sollte zuviel sein.


Peter
#2143231
Lesenswert?

Wie ich schon sagte - ALLE Pins sind mit 1kOhm Widerständen beschaltet 
worden (ausser den ADCs).

Und ALLE Ausgänge funktionieren tadellos! Andere Eingänge ebenfalls. Nur 
eben die ADCs und die PD5,PD6, und PD7 nicht.

Selbst wenn ich die Pointertheorie weiter verfolge, dann hätte ich ja 
wohl eher die Ausgangstreiber überlastet ...!

Grüße
#2143235
Lesenswert?

Peter Dannegger schrieb:
> Hendrik L. schrieb:
>> Sorry, Peter, habe großen Respekt vor Deiner Person - aber sei
>> versichert, habe sie im Problemfall definitiv NICHT als Ausgang
>> konfiguriert! Mehrmals gecheckt!!!
>
> In Software ist alles möglich.
> Wieviel Zeilen hat Dein gesamtes Programm?

25 KB! Kann man also nie ausschliessen, da gebe ich Dir recht.

>
> Oder Du hast sie gekillt. Das passiert, wenn keine VCC anliegt, aber der
> Eingang niederohmig Spannung kriegt.
> Wenn nicht garantiert werden kann, daß VCC immer als erstes und zuletzt
> anliegt, dann Schutzwiderstände (10k) in Reihe.

Du beziehst Dich auf die E/As - oder ?

>
> 65mA sollte zuviel sein.
>
>
> Peter
#2143249
Lesenswert?

Sorry, aber ich kann deiner Argumentation echt nicht folgen.

> Und ALLE Ausgänge funktionieren tadellos!

Und nochmal: was soll das mit einem möglichen Softwarefehler zu tun 
haben? Wo GENAU siehst du darin ein Ausschlusskriterium?

> Selbst wenn ich die Pointertheorie weiter verfolge, dann hätte ich ja
> wohl eher die Ausgangstreiber überlastet ...!

Warum sollte ein Softwarefehler die Ausgangstreiber überlasten? Du sagst 
doch, dass überall 1k-Widerstände dranhängen.
Gast #2143260
Lesenswert?

> Wie ich schon sagte - ALLE Pins sind mit 1kOhm Widerständen beschaltet
> worden
> Allerdings saugen einige Eingänge über 1 kOhm Widerstände einen 5mA
> Strom bei angelegten HIGH Potential

'saugen', bei HIGH, wie darf man das verstehen ?

         5mA
+5V--1k-->>>---|Pin

Heisst doch, daß an dem Pin quasi 0V anliegen,
sonst könntehn keine 5mA fliessen.

> Ebenso saugen  4 ADC Kanäle messbaren Strom von 5 mA
> (was ja wohl auch nicht sein darf - aber sie funtionieren dennoch
> ordnungsgemäß, Messergebnisse stimmen).

Wie bekommst du da eine Spannung über 0V an die Eingänge ?

Rätsel über Rätsel.

> Mega 2560 PD5,PD6 und PD7

Sind dreifach belegt mit
(XCK1) PD5 XA0
(T1) PD6 XA1
(T0) PD7 PAGEL
gerade T0, T1, XA0, XA1 sind ja eher unkritisch.
#2143262
Lesenswert?

Stefan Ernst schrieb:
> Sorry, aber ich kann deiner Argumentation echt nicht folgen.
>
>> Und ALLE Ausgänge funktionieren tadellos!
>
> Und nochmal: was soll das mit einem möglichen Softwarefehler zu tun
> haben? Wo GENAU siehst du darin ein Ausschlusskriterium?
>
>> Selbst wenn ich die Pointertheorie weiter verfolge, dann hätte ich ja
>> wohl eher die Ausgangstreiber überlastet ...!
>
> Warum sollte ein Softwarefehler die Ausgangstreiber überlasten? Du sagst
> doch, dass überall 1k-Widerstände dranhängen.

NaJa - offensichtlich sind doch Strukturen zerstört, bei 5mA 
Stromverbrauch. Die 1 kOhm Schutzwiderstände haben ja nicht geholfen!

Wie solle denn ein hochohmiger Eingang durch Überlastung defekt werden ?

Doch nur durch zu hoch angelegte Spannung - oder ?

Ein umherirrender Pointer aud DDRs wird doch keine Strukturen zerstören!

Wenn also ein umherirrender Pointer der Fall ist, dann zerstört er doch 
Strukturen in dem Fall, wenn der PIN niederohmig geschaltet wird (also 
als AUSGANG) und dann folglich zu hohe Ströme fließen (entweder pro PIN 
oder in Summe aller PINs) - oder was verstehe ich jetzt nicht ?

Grüße
#2143273
Lesenswert?

Hendrik L. schrieb:
> NaJa - offensichtlich sind doch Strukturen zerstört, bei 5mA
> Stromverbrauch.

Nein, genau das ist eben nicht offensichtlich. Viel wahrscheinlicher ist 
eben, dass die Pins durch einen Softwarefehler auf Ausgang-Low 
geschaltet sind. Denn dann hast du genau diese 5 mA über 1k nach High.

Hendrik L. schrieb:
> Ein umherirrender Pointer aud DDRs wird doch keine Strukturen zerstören!

Nein, aber er kann die Pins von Eingang auf Ausgang umschalten.
#2143277
Lesenswert?

MaWin schrieb:
>> Wie ich schon sagte - ALLE Pins sind mit 1kOhm Widerständen beschaltet
>> worden
>> Allerdings saugen einige Eingänge über 1 kOhm Widerstände einen 5mA
>> Strom bei angelegten HIGH Potential
>
> 'saugen', bei HIGH, wie darf man das verstehen ?
>
>          5mA
> +5V--1k-->>>---|Pin
>

GENAU!

> Heisst doch, daß an dem Pin quasi 0V anliegen,
> sonst könntehn keine 5mA fliessen.
>
NEE - heist es nicht! siehe unten.

>> Ebenso saugen  4 ADC Kanäle messbaren Strom von 5 mA
>> (was ja wohl auch nicht sein darf - aber sie funtionieren dennoch
>> ordnungsgemäß, Messergebnisse stimmen).
>

NEE - ich lege 5 Volt an den ADC (maximal), der ADC misst richtig 
(Maximalwert, da Referenz ist 5 Volt) und es fließen aber 5 mA ...! 
Warum soll das nicht so sein ?


> Wie bekommst du da eine Spannung über 0V an die Eingänge ?
>

Bei den digitalen Eingängen fliessen die 5 Volt über die 1 kOhm 
Vorwiderstände - wie von Dir oben richtig gezeichnet. Ohne 
Vorwiderstände hätte ich wohl einen Kurzschluss am geschalteten Eingang 
- will ich aber nicht ausprobieren.


> Rätsel über Rätsel.
>
>> Mega 2560 PD5,PD6 und PD7
>
> Sind dreifach belegt mit
> (XCK1) PD5 XA0
> (T1) PD6 XA1
> (T0) PD7 PAGEL
> gerade T0, T1, XA0, XA1 sind ja eher unkritisch.
#2143386
Lesenswert?

Stefan Ernst schrieb:
> Hendrik L. schrieb:
>>> Heisst doch, daß an dem Pin quasi 0V anliegen,
>>> sonst könntehn keine 5mA fliessen.
>>>
>> NEE - heist es nicht! siehe unten.
>
> Doch, genau das heißt das. R = U/I gilt auch in µC-Schaltungen.
> (Da du nicht sagst, in welche Richtung der Strom fließt, könnten es
> höchsten alternativ noch 10V am Pin sein.)

Ich hatte doch 5 Volt als anliegende Spannung angegeben (und nicht MINUS 
5 Volt) und auch nicht 10 Volt ...!

Die Richtung muss ich dann dem Experten wohl kaum angeben ...!

Aber in einem Punkt liege ich eventuell (vielleicht glücklicherweise) 
falsch:

Bislang bin ich immer davon ausgegangen, dass Strukturen defekt sind. 
Habe noch nie getestet, ob sich der "Eingang" (ohne, dass ich DDDR auf 
AUASGANG gesetzt habe) nicht doch als Ausgang ansteuern lässt. Jetzt 
habe ich verstanden, was ihr mit dem vagabundierenden Pointer gemeint 
habt.

Ein anderes Problem bleibt aber: Die ADCs haben keine Schutzwiderstände, 
da liegt volles 5 Volt Potential (als MAximum) an ... und dennoch erhöht 
sich der verbrauchte Strom am MC um ca. 5 mA pro geschalteten ADC PIN, 
sobald ich die Referenzspannungsbeschaltung vorgenommen habe und 
softwareseitig die ADCs definiert habe.

Die Referenzbeschaltung habe ich nach diesem Vorbild

http://www.mikrocontroller.net/wikifiles/9/9e/Adc_connection.png

mit dem kleinen Unterschied, dass bei mir AREF (Leitung 21) auf 
stabilisierte 5 Volt VCC gezogen worden ist (Genauigkeit auf die letzte 
Stelle brauche ich nicht!)

Was passiert eigentlich, wenn ich nun (irrtümlich) trotzdem eine interne 
Spannungsreferenz softwaremässig definiert hatte(kann ich in der 
Testphase nicht ausschliessen, ist aber momentan richtig eingestellt) ? 
Kann ich dann etwas zerstört haben ?

Halten wir also fest, ich habe unter Umständen zwei Problemursachen!

Danke im voraus!
Persönliche Seite #2143389
Lesenswert?

Hendrik L. schrieb:
> Die Referenzbeschaltung habe ich nach diesem Vorbild
>
> http://www.mikrocontroller.net/wikifiles/9/9e/Adc_connection.png
>
> mit dem kleinen Unterschied, dass bei mir AREF (Leitung 21) auf
> stabilisierte 5 Volt VCC gezogen worden ist (Genauigkeit auf die letzte
> Stelle brauche ich nicht!)
>

Du hast eine externe Referenzspannung eingestellt und fälschlicherweise 
auch noch die interne Referenz aktiviert.

EDIT: Steht zwar schon in deinem Post, habe aber nicht bis dahin 
weitergelesen. Immerhin hast du ja auch noch keinen Schaltplan angegeben 
und streitest alle möglichen Ursachen sofort ab ;-)
#2143396
Lesenswert?

Noch ein kleiner Nachtrag,

da ich mit Spannnungsteilern arbeite, kann an den ADCs ein 
vagabundierender Pointer nicht die Ursache sein, dann würde ja keine 
korrekten Messwerte angezeigt. Die Spannung würde ja dann einbrechen.

In disesem Punkt war ich zudem unklar: die 5 mA zusätzlicher Strom pro 
ADC PIN messe ich nich am ADC-Pin sondern am erhöhten 
Gesamtstromverbrauch des MCs. Die 5 mA ergeben sich nach Division durch 
Anzahl der ADC Pins.

Danke für die Nachsicht!

Grüße
#2143401
Lesenswert?

Hendrik L. schrieb:
> Ich hatte doch 5 Volt als anliegende Spannung angegeben (und nicht MINUS
> 5 Volt) und auch nicht 10 Volt ...!

Ja, und daraus ergibt sich bei 5mA über 1kOhm am anderen Ende des 
Widerstandes (also am Pin) ein Spannung von 0 oder 10V.

Hendrik L. schrieb:
> Die Richtung muss ich dann dem Experten wohl kaum angeben ...!

Jetzt werde mal nicht pampig. Eigentlich müsstest du die Richtung mit 
angeben. Man kann hier nur deshalb eigentlich darauf verzichten, weil 0V 
am Pin SEHR viel wahrscheinlicher ist, als 10V, und man deshalb einfach 
mal von 0V ausgehen kann.

Hendrik L. schrieb:
> Bislang bin ich immer davon ausgegangen, dass Strukturen defekt sind.
> Habe noch nie getestet, ob sich der "Eingang" (ohne, dass ich DDDR auf
> AUASGANG gesetzt habe) nicht doch als Ausgang ansteuern lässt.

Das ist Unsinn, wie sollte das gehen.

> Jetzt
> habe ich verstanden, was ihr mit dem vagabundierenden Pointer gemeint
> habt.

Nein, offensichtlich nicht. Es geht schlicht darum, ob die Pins irgendwo 
versehentlich (der Pointer war nur ein Beispiel) von "Eingang" auf 
"Ausgang" umgeschaltet werden.
#2143403
Lesenswert?

Simon K. schrieb:
> Hendrik L. schrieb:
>> Die Referenzbeschaltung habe ich nach diesem Vorbild
>>
>> http://www.mikrocontroller.net/wikifiles/9/9e/Adc_connection.png
>>
>> mit dem kleinen Unterschied, dass bei mir AREF (Leitung 21) auf
>> stabilisierte 5 Volt VCC gezogen worden ist (Genauigkeit auf die letzte
>> Stelle brauche ich nicht!)
>>
>
> Du hast eine externe Referenzspannung eingestellt und fälschlicherweise
> auch noch die interne Referenz aktiviert.

Meine Frage: Können dadurch Strukturen zerstört werden ?

>
> EDIT: Steht zwar schon in deinem Post, habe aber nicht bis dahin
> weitergelesen. Immerhin hast du ja auch noch keinen Schaltplan angegeben
> und streitest alle möglichen Ursachen sofort ab ;-)

Also erst einmal habe ich viel gelernt. Bin kein studierter 
Digital-Elektroniker, insofern helfen mir Eure Antworten ungemein.

Wenn ich Euer Wissen hätte - bräuchte ich die Fragen hier nicht 
zustellen !!!

Danke für Eure geduldige Unterstützung. Ich weiß sie zu schätzen.

Grüße
Gast #2143404
Lesenswert?

> und dennoch erhöht
> sich der verbrauchte Strom am MC um ca. 5 mA pro geschalteten ADC PIN,
> sobald ich die Referenzspannungsbeschaltung vorgenommen habe und
> softwareseitig die ADCs definiert habe.

Das ist doch was völlig anderes als
"Ebenso saugen  4 ADC Kanäle messbaren Strom von 5 mA"

Klär doch erst mal, was du wo misst.
#2143421
Lesenswert?

>
>> Jetzt
>> habe ich verstanden, was ihr mit dem vagabundierenden Pointer gemeint
>> habt.
>
> Nein, offensichtlich nicht. Es geht schlicht darum, ob die Pins irgendwo
> versehentlich (der Pointer war nur ein Beispiel) von "Eingang" auf
> "Ausgang" umgeschaltet werden.

Pardon - doch! Ich habe nämlich das Programm auf eine versehentliche 
EXPLIZITE DDDR Umschaltung im gesamten Programm-Code systematisch 
gecheckt.

Ist nicht der Fall. Findet bei mir in einer speziellen Routine für alle 
PINs uns PORTs zu Programmstart statt - die Sache bleibt also sehr 
übersichtlich. Port / PIN-Umschaltungen im Programmablauf können nur 
versteckte Software- Fehler sein.

Kann also nur Peter's Vermutung zutreffen.

Wie gesagt werde ich jetzt explizit testen, indem ich PD5, PD6 und PD7 
mal direkt schalte, ohne am DDDR eine Initialisierung vorzunehmen. Das 
wäre zumindest eine Erklärung, die ich bevorzugen würde, weil sich 
solche Fehler finden lassen, Strukturen man aber wohl nicht reparieren 
kann.

Beim ADC-Problem bin ich aber weniger optimistisch, da bleibt der 
Verdacht einer zerstörten Struktur erst einmal bestehen.

Danke.
#2143428
Lesenswert?

Michael M. schrieb:
> Hendrik L. schrieb:
>> Habe noch nie getestet, ob sich der "Eingang" (ohne, dass ich DDDR auf
>> AUASGANG gesetzt habe) nicht doch als Ausgang ansteuern lässt. Jetzt
>> habe ich verstanden, was ihr mit dem vagabundierenden Pointer gemeint
>> habt.
>
> DDRX auf 0 (Input) und PORTX auf 1 schaltet die internen Pullups für die
> Eingänge ein.
>
> Servus
> Michael

Danke für den Hinweis - ist mir klar. Aber die internen PullUps haben 10 
kOhm (oder mehr ?), die 5 mA können darüberwohl nicht fließen. Eher sind 
die 1 kOhm Widerstände aussen bei 5 Volt das wahrscheinliche Indiz für 
die 5mA.

Grüße
Gast #2143437
Lesenswert?

Hi

>Beim ADC-Problem bin ich aber weniger optimistisch, da bleibt der

Zu deinem Verständnis: Du hast keine 4 ADC-Kanäle gleichzeitig. 
Lediglich, der Eingang, der mit ADMUX ausgewählt ist, ist mit dem ADC 
verbunden. Der Rest sind simple Eingänge

>Verdacht einer zerstörten Struktur erst einmal bestehen.

So schnell gehen die AVRs nicht kaputt.

MfG Spess
#2143439
Lesenswert?

Hendrik L. schrieb:
> Danke für den Hinweis - ist mir klar. Aber die internen PullUps haben 10
> kOhm (oder mehr ?), die 5 mA können darüberwohl nicht fließen. Eher sind
> die 1 kOhm Widerstände aussen bei 5 Volt das wahrscheinliche Indiz für
> die 5mA.

Richtig, die internen Pullups sind laut Datenblatt 20 - 50 kOhm. 
Außerdem gibt es kein "Pulldowns".
Ich würde einfach mal ein kleines Testprogramm in den Controller 
flashen, das NUR die Ports als Eingänge schaltet (egal ob Pullup an oder 
aus) und dann in einer Endlosschleife ohne Funktionalität endet. So 
bekommst Du Software- und Hardwarefehler unterschieden.

Servus
Michael
#2143442
Lesenswert?

Hendrik L. schrieb:
> Wie gesagt werde ich jetzt explizit testen, indem ich PD5, PD6 und PD7
> mal direkt schalte, ohne am DDDR eine Initialisierung vorzunehmen.

Damit willst du also das hier
> Habe noch nie getestet, ob sich der "Eingang" (ohne, dass ich DDDR auf
> AUASGANG gesetzt habe) nicht doch als Ausgang ansteuern lässt.
explizit testen?
Das ist Unsinn, du schaltest damit nur die PullUps.

Sturheit auf Basis von Halbwissen, gepaart mit der Weigerung Konkretes 
(Schaltplan, Software) herauszurücken
=> ich bin raus wegen Sinnlosigkeit.
#2143449
Lesenswert?

Stefan Ernst schrieb:
> Hendrik L. schrieb:
>> Wie gesagt werde ich jetzt explizit testen, indem ich PD5, PD6 und PD7
>> mal direkt schalte, ohne am DDDR eine Initialisierung vorzunehmen.
>
> Damit willst du also das hier
>> Habe noch nie getestet, ob sich der "Eingang" (ohne, dass ich DDDR auf
>> AUASGANG gesetzt habe) nicht doch als Ausgang ansteuern lässt.
> explizit testen?
> Das ist Unsinn, du schaltest damit nur die PullUps.

Das ist nicht richtig: Wenn ein vagabundierender Pointer (Idee von 
Peter) vorher den PIN als Ausgang definiert hat, dann schaltet er ....! 
Und genau das will ich ja bewiesen haben ! Dann lohnt es sich ja auch 
den Fehler softwareseitig einzukreisen.

Danke!
#2143490
Lesenswert?

Simon K. schrieb:
> @Hendrik: Systematische Fehlersuche ist das hier aber nicht. Schon mal
> ausprobiert, was passiert, wenn der Mikrocontroller komplett gelöscht
> wird etc.

Nein - aber ich bin dankbar für Eure Hinweise.

Werde ich machen ... und berichten! Genau diese Hinweise habe ich 
gesucht!

Ein Schaltplan macht aufwandsmässig keinen Sinn  - an jedem Pin liegt 
ein Schutzwiderstand von 1 kOhm,danach ein ULN2803 oder zu messende 
Spannung über Spannungsteiler. Mehr nicht.

Danke und Grüße
#2143524
Lesenswert?

>mit dem kleinen Unterschied, dass bei mir AREF (Leitung 21) auf
>stabilisierte 5 Volt VCC gezogen worden ist (Genauigkeit auf die letzte
>Stelle brauche ich nicht!)

Genau dass darfst du nicht machen! Bitte trenne diese 5V->Aref 
Verbindung,
und wähle AVCC als Referenzspannung nur über ADMUX Register:REFS0 =1; 
REFS1=0.
Und zeigt endlich dein Programm, zuminderst der Teil wo ADC 
initialisiert wird und wo zwischen ADC-Kanäle umgeschaltet wird.
#2143557
Lesenswert?

Maik Fox schrieb:
> Hendrik L. schrieb:
>> In disesem Punkt war ich zudem unklar: die 5 mA zusätzlicher Strom pro
>> ADC PIN messe ich nich am ADC-Pin sondern am erhöhten
>> Gesamtstromverbrauch des MCs. Die 5 mA ergeben sich nach Division durch
>> Anzahl der ADC Pins.
>
> Diese Messung ist eher nutzlos??

Meine Erwartungshaltung ist, dass wenn ich ADC softwaremässig 
initialisiere, der Stromverbrauch am MC NICHT ansteigt!!!!

Tut er aber - um 20 mA! Und das ist mit Sicherheit bedenklich!

Anbei die Routine - dem hiesigen Forum entnommen:
--------------------------------------------
uint16_t ReadChannel(uint8_t mux)
{
  uint8_t i;
  uint16_t result;

/*
REFS1 REFS0 Referenzspanung
0     0   Externes AREF
0     1   AVCC als Referenz
1     0   Interne 1,26 Volt
1     1   Interne 2,56 Volt
*/

  ADMUX = mux;                      // Kanal waehlen

//  ADMUX |= (1<<REFS1) | (1<<REFS0); // interne Referenzspannung nutzen
//  esterne Referenzspannung von VCC holen (Drahtbrücke) ADMUX ist dann 
mit Null initialisiert, Kanalwahl danach

  ADCSRA = (1<<ADEN) | (1<<ADPS2) |(1<<ADPS1) | (1<<ADPS0);    // 
Frequenzvorteiler
                               // setzen auf 128 (1) und ADC aktivieren 
(1)

  /* nach Aktivieren des ADC wird ein "Dummy-Readout" empfohlen, man 
liest
     also einen Wert und verwirft diesen, um den ADC "warmlaufen zu 
lassen" */

  ADCSRA |= (1<<ADSC);              // eine ADC-Wandlung

  while ( ADCSRA & (1<<ADSC) ) {
     ;     // auf Abschluss der Konvertierung warten
  }

  result = ADCW;  // ADCW muss einmal gelesen werden,
                  // sonst wird Ergebnis der nächsten Wandlung
                  // nicht übernommen.

  /* Eigentliche Messung - Mittelwert aus 4 aufeinanderfolgenden 
Wandlungen */

  result = 0;

  for( i=0; i<4; i++ )
  {
    ADCSRA |= (1<<ADSC);            // eine Wandlung "single conversion"
    while ( ADCSRA & (1<<ADSC) ) {
      ;   // auf Abschluss der Konvertierung warten
    }
    result += ADCW;        // Wandlungsergebnisse aufaddieren
  }
  ADCSRA &= ~(1<<ADEN);             // ADC deaktivieren (2)

  result /= 4;                     // Summe durch vier teilen = arithm. 
Mittelwert

  return result;
}
--------------

Die Messungen erfolgen mit "hoher" Fequenz (> 10 1/s) !

Grüße
#2143561
Lesenswert?

Hallo,

interessante Diskussion...

5mA über 1k von 5V sind 0V am anderen Ende, sonst müssen wir Herrn Ohm 
korrigieren...
Das pin ist Ausgang und auf L. Wo das im Programm passiert und warum, 
ist Wurst.
Schonmal Testprogramm raufgespielt, alles auf Eingang, alle PullUps an 
und dann gemessen?

ADC misst richtig, aber irgendwas durch Anzahl Pins zieht 5mA?
Nonsens. Wenn da 5mA am ADC-Pin rein oder raus fließen, mißt der nicht 
mehr richtig. Nie.

Wieso auch irgendeinen Strom durch Anzahl Pins oder den Sonnenstand oder 
die Luftfeuchte dividieren?
EIN Pin auf Ausgang und L UND niederohmig an GND sind mehr als 40mA!
Zum Trost: läßt sich ein AVR ziemlich lange gefallen, bis sich da 
irgendwelche Strukturen umbauen...

Vielleicht einfach etwas Systematik in die GEschichte bringen und eben 
mal schnell und geziehlt 2-3 eindeutige Tests compilieren und damit 
messen.

Gruß aus Berlin
Michael
#2143571
Lesenswert?

Simon K. schrieb:
> Hendrik L. schrieb:
>> Ein Schaltplan macht aufwandsmässig keinen Sinn
> Autsch.
>
>>  - an jedem Pin liegt
>> ein Schutzwiderstand von 1 kOhm,danach ein ULN2803 oder zu messende
>> Spannung über Spannungsteiler. Mehr nicht.
>
> Zu einer funktionsfähigen Schaltung fehlt aber noch eine ganze Menge
> anderer Kram.

Korrekt.

Das Programm werkelt aber seit Monaten klaglos unter allen 
Betriebszuständen, kein Reset, keine EMV-Störung (Einschalten von 
Neonlicht in umnittelbarer Näher etc.), korrekte Messwerte, alle 
Rückmeldungen über UARTS exakt, alle Debugging Meldungen exakt wie 
erwartet, alle Steuerungseingriffe über UART (vom PC aus) exakt .... 
alles wie erwartet - eben für meine Zwecke PERFEKT.

Bislang gab es also für mich keinen Grund, etwas zu unternehmen. Der 
etwas erhöhte Stromverbrauch hat mich zwar anfangs gestört, aber es hat 
ja alles klaglos funktioniert. Ich nutze das Programm im HobbyBereich 
für eine Kirmessteuerung - also nicht lebenswichtiges.

Mir sind die Abnormalitäten erst gestern aufgefallen, als ich eben die 
Ports PD5, PD6 und PD7 als Eingänge zuschalten wollte. Vorher waren 
diese Pins unbelegt.

Grüße
#2143576
Lesenswert?

Branko Golubovic schrieb:
>>mit dem kleinen Unterschied, dass bei mir AREF (Leitung 21) auf
>>stabilisierte 5 Volt VCC gezogen worden ist (Genauigkeit auf die letzte
>>Stelle brauche ich nicht!)
>
> Genau dass darfst du nicht machen! Bitte trenne diese 5V->Aref
> Verbindung,
> und wähle AVCC als Referenzspannung nur über ADMUX Register:REFS0 =1;
> REFS1=0.

Aber dann verwende ich doch eine interne Referenz - oder nicht ? Ich 
will aber 5 Volt als externe Referenz nutzen.

Grüße
Persönliche Seite #2143591
Lesenswert?

Hendrik L. schrieb:
> Maik Fox schrieb:
>> Hendrik L. schrieb:
>>> In disesem Punkt war ich zudem unklar: die 5 mA zusätzlicher Strom pro
>>> ADC PIN messe ich nich am ADC-Pin sondern am erhöhten
>>> Gesamtstromverbrauch des MCs. Die 5 mA ergeben sich nach Division durch
>>> Anzahl der ADC Pins.
>>
>> Diese Messung ist eher nutzlos??
>
> Meine Erwartungshaltung ist, dass wenn ich ADC softwaremässig
> initialisiere, der Stromverbrauch am MC NICHT ansteigt!!!!

Wenn der ADC aktiviert wird, verbraucht er Strom. Desto mehr, umso 
schneller er läuft.

> Tut er aber - um 20 mA! Und das ist mit Sicherheit bedenklich!

Habe leider gerade das Datenblatt zu deinem Chip nicht da. Aber so 
bedenklich muss das gar nicht sein.
#2143637
Lesenswert?

Michael U. schrieb:
> Hallo,
>
> interessante Diskussion...
>
> 5mA über 1k von 5V sind 0V am anderen Ende, sonst müssen wir Herrn Ohm
> korrigieren...
> Das pin ist Ausgang und auf L. Wo das im Programm passiert und warum,
> ist Wurst.

Mit Verlaub, Michael, wenn ich angebe, dass ich 5 Volt an einen PIN 
anlege, (über einen 1 kOhm Schutzwiderstand - was sollte der anderes 
schützen als diesen PIN, wenn ich keine weiteren Angaben mache) dann ist 
die Sache doch wohl klar! Ich weiss nicht, was da noch an 
Spannungspotentialen zu deuteln bleibt.

Ob der PIN dann als Ausgang oder Eingang geschaltet ist 
(fälschlicherweise über fehlerhaften Software Code als AUSGANG, dann ist 
das Phänomen erklärbar) oder als EINGANG (wobei dann die 5 mA nicht mehr 
erklärbar sind, es sei denn interne Strukturen sind defekt) - das ist 
eben die Frage, die dank dieser Diskussion herausgearbeitet worden ist.

Da müssen wir uns doch nun nicht wirklich nicht über die 
Spannungspotentiale vor oder nach dem Schutzwiderstand an dieser Stelle 
unterhalten.
Das ist doch nur noch Polemik.

Ich hoffe ja auch, dass die Pins IRRTÜMLICH per Software als Ausgang 
geschaltet werden. Das werde alsbald ich testen ... und berichten!

Und ich würde mich noch mehr freuen, wenn bei einer Messfrequenz von > 
10 [1/s] die 20 mA erklärbar werden. Dass die 5 mA nicht am einzelnen 
PIN abfallen können, hätte mich auch klar sein können, schliesslich sind 
ja Spannungsteiler vorgeschaltet ... und die Messwerte sind korrekt! Das 
wäre ja dann ein Widerspruch- daran hatte ich nicht gedacht.

Leider habe ich diese Info schon mal vor Monaten im Forum zum 
ADC-Stromverbrauch gesucht ... aber im Forum zwar Fragen aber keine 
Antworten gefunden.

Im Datenblatt steht meines Wissens auch nichts dazu. (Habe aber nur eine 
Search-Funktion nach ADC benutzt ... und nicht alle 400 Seiten im Detail 
gelesen!)

Danke für Deine Unterstützung.

Grüße
#2143668
Lesenswert?

spess53 schrieb:
> HI
>
>>Aber dann verwende ich doch eine interne Referenz - oder nicht ? Ich
>>will aber 5 Volt als externe Referenz nutzen.
>
> Nein. Es wird AVCC, also deine 5V, verwendet.
>
> MfG Spess


Nun ja - aber es es wird doch die AVCC im Chip abgenommen, während 
ansonsten bei einer externen Referenz die Spannung aussen an AREF 
angelegt wird (irgendwo zwischen 0 und 5 Volt). AVCC muss ja IMMER auf 5 
Volt liegen - egal ob die externe oder interne Refrenz genommen wird.

Warum also sollte meine Schaltung mit AREF an 5 Volt (aussen) nun nicht 
funktionieren, wenn  REFS0 und REFS1 beide auf bit 0 gesetzt sind ?

Ich möchte dazulernen - darum die Frage.

/*
REFS1 REFS0 Referenzspanung
0     0   Externes AREF
0     1   AVCC als Referenz
1     0   Interne 1,26 Volt
1     1   Interne 2,56 Volt
*/

Oder erklären sich dadurch die 20 mA ...?

Grüße
Gast #2143673
Lesenswert?

Hi

>Im Datenblatt steht meines Wissens auch nichts dazu. (Habe aber nur eine
>Search-Funktion nach ADC benutzt ... und nicht alle 400 Seiten im Detail
>gelesen!)

Doch:

31.2.1 Supply Current of IO modules

MfG Spess
#2144212
Lesenswert?

Hendrik L. schrieb:
> Peter Dannegger schrieb:
>> Ist das denn wirklich so schwer, mal den Resetpin auf low zu legen, ob
>> dann immer noch die 5mA in die Pins fließen ???
>>
>> Wenn im Reset die Pins hochohmig sind, liegt der Fehler eindeutig in der
>> Software.
>>
>>
>> Peter
>
> Hallo Peter, werde ich machen, sobald die Versuchsanordnung in
> Reichweite ist ...! (heute Abend)
>
> Grüße

Hallo zusammen,

habe jetzt dreifach getestet, Ergebnisse:

1. Test:

Wenn ich RESET auf LOW ziehe, dann fliessen weiterhin 5mA über den 
Schutzwiderstand auf das LOW-Level an PD6 ... leider!

2. Test:

Wenn ich DDRD (PIN6) auf Eingang setze und dann PD6 dennoch als Ausgang 
auf HIGH ansteuere, tut sich nichts. Der Ausgang bleibt auf LOW.

3. Test:

Wenn ich DDRD (PIN6) auf Ausgang setze und dann PD6 alternierend mit 1 
und 0 setze, dann ändert sich am angelegten Oszilloskop der Pegel 
entsprechend auf HIGH und auf LOW.


Resumee: Offensichtlich sind Strukturen in der Beschaltung als EINGANG 
defekt, Simon scheint von Anfang an den richtigen Riecher gehabt zu 
haben:
-----
Simon K. schrieb:
> ...
>
> Alternativ kann es auch sein, dass sich die Eingänge in irgendeinem
> Latchup Zustand befinden.
>...
-----
Werde zukünftig diesem Thema mehr Aufmerksamkeit spenden (müssen).

Vielen Dank für Eure Unterstützung.

Grüße vom lbd!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren