Forum: Mikrocontroller und Digitale Elektronik Merkwürdiges Phänomen an den Eingängen eines Mega2560


von Hendrik L. (lbd)


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!

von Simon K. (simon) Benutzerseite


Lesenswert?

Hmm, Schaltplan?

Eventuell sind die Eingänge fälschlicherweise als Ausgang geschaltet.
Alternativ kann es auch sein, dass sich die Eingänge in irgendeinem 
Latchup Zustand befinden.
Oder du gibst zu viel Spannung auf die Eingänge, sodass Strom über die 
Clamp Dioden fließt.

von Hendrik L. (lbd)


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

von Mani (Gast)


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

von Hendrik L. (lbd)


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

von Peter D. (peda)


Lesenswert?

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.


Peter

von spess53 (Gast)


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

von Christian E. (cerker)


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

von Peter D. (peda)


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

von Hendrik L. (lbd)


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

von Stefan E. (sternst)


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?

von Peter D. (peda)


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

von Hendrik L. (lbd)


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

von Hendrik L. (lbd)


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

von Hendrik L. (lbd)


Lesenswert?

Peter Dannegger schrieb:
...
>
>
> Oder Du hast sie gekillt. Das passiert, wenn keine VCC anliegt, aber der
> Eingang niederohmig Spannung kriegt.

Wann sind die Eingänge denn niederohmig (wenn kein VCC anliegt!). Ich 
dachte, ausgeschaltet sind die PINs hochohmig (ist doch TriState 
Technologie ... ?)


>
>
> Peter

von Stefan E. (sternst)


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.

von Simon K. (simon) Benutzerseite


Lesenswert?

Simon K. schrieb:
> Hmm, Schaltplan?

von MaWin (Gast)


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.

von Hendrik L. (lbd)


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

von Peter II (Gast)


Lesenswert?

test doch mal ob auch der Strom fießt wenn die µC im Reset zustand ist - 
wenn es dann noch 5mA sind ist der µC defekt. Wenn nicht wird es wohl 
doch ein software Fehler sein.

von Stefan E. (sternst)


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.

von Hendrik L. (lbd)


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.

von Stefan E. (sternst)


Lesenswert?

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.)

von Hendrik L. (lbd)


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!

von Simon K. (simon) Benutzerseite


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 ;-)

von Hendrik L. (lbd)


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

von Stefan E. (sternst)


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.

von Hendrik L. (lbd)


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

von MaWin (Gast)


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.

von Michael M. (technikus)


Lesenswert?

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

von Hendrik L. (lbd)


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.

von Hendrik L. (lbd)


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

von spess53 (Gast)


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

von Michael M. (technikus)


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

von Stefan E. (sternst)


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.

von Hendrik L. (lbd)


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!

von Simon K. (simon) Benutzerseite


Lesenswert?

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

Und:

Stefan Ernst schrieb:
> Sturheit auf Basis von Halbwissen, gepaart mit der Weigerung Konkretes
> (Schaltplan, Software) herauszurücken

von Hendrik L. (lbd)


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

von Simon K. (simon) Benutzerseite


Lesenswert?

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.

von Branko G. (branko)


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.

von Maik F. (sabuty) Benutzerseite


Lesenswert?

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??

von Hendrik L. (lbd)


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

von Michael U. (amiga)


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

von Hendrik L. (lbd)


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

von Hendrik L. (lbd)


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

von Maik F. (sabuty) Benutzerseite


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.

von spess53 (Gast)


Lesenswert?

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

von Hendrik L. (lbd)


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

von Hendrik L. (lbd)


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

von spess53 (Gast)


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

von Peter D. (peda)


Lesenswert?

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

von Hendrik L. (lbd)


Lesenswert?

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

von Hendrik L. (lbd)


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!

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.