Forum: Mikrocontroller und Digitale Elektronik AVR: ADC-Messung am GPIO-Ausgang?


von Mir war kalt (Gast)


Lesenswert?

Lässt sich ein high geschalteter GPIO-Ausgang per ADC messen?

"Figure 10-5.Alternate Port Functions" (S. 58) des attiny85 Datenblattes 
zufolge könnte es evtl. gehen, falls nicht noch eine Art Verriegelung 
ins Spiel kommt..?

https://www.microchip.com/wwwproducts/en/ATtiny85#datasheet-toggle
http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2586-AVR-8-bit-Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet.pdf

von Stefan F. (Gast)


Lesenswert?

Ja, dann misst du den HIGH Pegel.

von Mir war kalt (Gast)


Lesenswert?

.. bzw. die ggf. höhere, anliegende Spannung als high+0.7V, richtig?
Das wäre ideal.

von Mir war kalt (Gast)


Lesenswert?

Bzw. etwas im Bereich VCC...VCC+0.5 V

von S. Landolt (Gast)


Lesenswert?

Mehr als die Referenzspannung bringt zwangsläufig 1023.

von Soul E. (Gast)


Lesenswert?

Mir war kalt schrieb:

> .. bzw. die ggf. höhere, anliegende Spannung als high+0.7V, richtig?
> Das wäre ideal.

Dein ADC misst bis VREF. Alles was darüberliegt wird als "gleich VREF" 
(0x3FF bei 10 bit) angezeigt. Wenn Du externe Überspannung erkennen 
willst musst Du VREF über VDD legen -- wenn Dein Controller das erlaubt.

Aber aufpassen: bei Überspannung an einem Portpin fließt ein Strom durch 
die ESD-Schutzstruktur in die VDD. Der liefert eben diese ca 0,7 V, die 
der Pin über VDD liegen kann. Dieser injizierte Strom stört 
üblicherweise analoge Schaltungsteile auf dem Chip, insbesondere den 
ADC. Oft spezifiziert der Hersteller, mit wieviel LSB zusätzlicher 
Ungenauigkeit man bei welchem injection current zu rechnen hat.

von S. Landolt (Gast)


Lesenswert?

Man kann sicher einiges ausprobieren, aber zwei Zitate aus dem 
Datenblatt:

Voltage on any Pin except RESET with respect to Ground -0.5V to VCC+0.5V

AREF External Reference Voltage Max= Vcc

von Mir war kalt (Gast)


Lesenswert?

Danke für die Hinweise, das hatte ich nicht bedacht.
Dann lässt sich nur HIGH=AREF=VCC messen, nichts drunter, und erst recht 
nichts drüber.

von S. Landolt (Gast)


Lesenswert?

"nichts drunter"? Verstehe ich jetzt nicht. Mit Aref=Vcc sollte man 
durchaus messen können, ob der Ausgang sein high hält oder aufgrund 
Belastung "in die Knie" geht. Andererseits stört eine zu hohe Belastung 
an diesem Pin den AD-Converter, denn der wird ja auch über diesen Zweig 
versorgt.

von Carl D. (jcw2)


Lesenswert?

Mir war kalt schrieb:
> Danke für die Hinweise, das hatte ich nicht bedacht.
> Dann lässt sich nur HIGH=AREF=VCC messen, nichts drunter, und erst recht
> nichts drüber.

Alles zwischen 0V und Vref kann man messen.
Es wäre halt interessant, worum es dir geht.

Messen, ob
- an einem Pin mit gesetztem DDR-Bit auch hoch genug ist, oder 
kurzgeschlossen.
- an einem Pin, das mit gelöschten PORT-Bit über DDR-Bit Open-Source 
(die HW-Variante) bei High jemand anderer auf Löw zieht (z.B. I2C, 
OneWire,...)
- irgend was ganz anderes

Was also?

von Mir war kalt (Gast)


Lesenswert?

Es wäre interessant zu wissen, ob das Signal vom GPIO oder von einem 
parallelgeschalteten Taster kommt.

Evtl. lässt sich anstelle des GPIO-Ausgangs mit HIGH-Pegel mit dem 
integrierten Pull-Up und einem externen Widerstand ein Spannungsteiler 
aufbauen, so dass die sich einstellende Spannung vom Controller oder vom 
Taster kommt.
Dann kann die Spannung "in die Knie" gehen, ohne Gefahr, den Port zu 
überlasten.
Andererseits gibt es lt. S. 183 des "ATtiny25/45/85 [DATASHEET] 
2586Q–AVR–08/2013" in "Figure 22-21.I/O Pin Output Voltage vs. Source 
Current (VCC = 3V)" bereits bei 5 mA Last einen Spannungsabfall > .1 V.

von Joachim B. (jar)


Lesenswert?

Mir war kalt schrieb:
> Lässt sich ein high geschalteter GPIO-Ausgang per ADC messen?
>
> "Figure 10-5.Alternate Port Functions" (S. 58) des attiny85

logisch
Selectable 1.1V / 2.56V ADC Voltage Reference

wähle intern 1,1V oder 2,56V

Einen Spannungsteiler der VCC max 6.0V passend teilt, also auf 1/3 -> 
REF 2,56V oder 1/6 -> REF 1,1V
dann GPIO messen und umrechnen

von Axel S. (a-za-z0-9)


Lesenswert?

S. Landolt schrieb:
> Mit Aref=Vcc sollte man
> durchaus messen können, ob der Ausgang sein high hält oder aufgrund
> Belastung "in die Knie" geht

Man "sollte" nicht nur, sondern man kann das definitiv. Das 
Zabex-Ohmmeter macht genau das, um den unter Last einknickenden H-Pegel 
rauszurechnen. Da man aber auch mit VREF nicht über Vcc gehen kann, 
bleibt der Meßbereich auf Spannungen zwischen GND und Vcc eingeschränkt.


Mir war kalt schrieb:
> Es wäre interessant zu wissen, ob das Signal vom GPIO oder von einem
> parallelgeschalteten Taster kommt.

Es gibt nur eine legale Anwendung, wo man einem als Ausgang geschalteten 
GPIO einen Taster parallel legen darf: wenn das ein Open-Drain Ausgang 
ist und der Taster nach GND geht. Alles andere ist gefährlicher Murks.

Wie bereits gesagt wurde: wenn man dein eigentliches Problem kennen 
würde, dann könnte man dir besser helfen.

von Mir war kalt (Gast)


Lesenswert?

Joachim B. schrieb:
> Einen Spannungsteiler

Ich meinte ein und denselben Pin - ich kann keinen Spannungsteiler in 
den IC einbauen ;-) Aber statt Ausgang liesse sich der Pull-Up 
einschalten.


Axel S. schrieb:
> wo man einem als Ausgang geschalteten
> GPIO einen Taster parallel legen darf: wenn das ein Open-Drain Ausgang
> ist und der Taster nach GND geht.

Dann ist die Unterscheidung Ausgang/Taster aber nicht mehr möglich - 
oder?

von S. Landolt (Gast)


Lesenswert?

Welche Last wird mit diesem "GPIO-Ausgang" geschaltet und wogegen (Vcc 
oder GND)?

von Joachim B. (jar)


Lesenswert?

Mir war kalt schrieb:
> Ich meinte ein und denselben Pin

wenn ich hellsehen könnte würde ich Lotto spielen

Mir war kalt schrieb:
> ich kann keinen Spannungsteiler in
> den IC einbauen ;-)

muss man auch nicht, Spannungsteiler werden fast immer extern 
angeschlossen, was soll also diese Aussage?

Mir war kalt schrieb:
> Dann ist die Unterscheidung Ausgang/Taster aber nicht mehr möglich -
> oder?

doch, als Ausgang schaltet der µC auf GND oder VCC, man kann den auch 
per Software auf Eingang setzen und dort natürlich nicht einen Schalter 
mit Fremdspannung anschliessen, wenn dieser Schalter aber mit 
Fremdspannung ein Photomos Relais schaltet kann der der µC das durchaus 
feststellen.

lieber TO, sorge dafür das dir nicht mehr kalt ist, dann klappt das 
denken auch besser!

Nun wäre es mal an der Zeit das Schaltbild zu zeigen und mal genauer zu 
beschreiben was du eigentlich machen willst mit ALLEN Daten.

von Peter D. (peda)


Lesenswert?

Man kann zyklisch den Ausgang abschalten und dann messen, ob ein Taster 
oder Schalter betätigt ist.
Ein Beispiel findest Du hier:
Beitrag "Taster + LED am selben Draht (4*)"

von Joachim B. (jar)


Lesenswert?

Peter D. schrieb:
> Man kann zyklisch den Ausgang abschalten und dann messen, ob ein Taster
> oder Schalter betätigt ist.

kann man nur wenn keine unpassenden Spannungen und GND Bezüge im Spiel 
sind!

Ein Taster hinter dem Kondensatornetzteil wäre keine tolle Idee an einen 
externen µC!

: Bearbeitet durch User
von Mir war kalt (Gast)


Lesenswert?

S. Landolt schrieb:
> Welche Last wird mit diesem "GPIO-Ausgang" geschaltet und wogegen
> (Vcc
> oder GND)?

Das Gate eines kleinen Mosfets. P-Kanal, aber invertieren ginge auch.
Was hast du gegen "GPIO-Ausgang", ausser, dass bei AVR das "GPIO" wohl 
implizit ist?

Peter D. schrieb:
> Man kann zyklisch den Ausgang abschalten und dann messen, ob ein Taster
> oder Schalter betätigt ist.

Danke, auch interessant.

Joachim B. schrieb:
> lieber TO, sorge dafür das dir nicht mehr kalt ist, dann klappt das
> denken auch besser!

Uncool.

von Axel S. (a-za-z0-9)


Lesenswert?

Mir war kalt schrieb:
> Axel S. schrieb:
>> wo man einem als Ausgang geschalteten
>> GPIO einen Taster parallel legen darf: wenn das ein Open-Drain Ausgang
>> ist und der Taster nach GND geht.
>
> Dann ist die Unterscheidung Ausgang/Taster aber nicht mehr möglich -
> oder?

Kommt drauf an. Wir wissen ja immer noch nicht, was du eigentlich 
erreichen willst. Du erzählst immer nur, was du tun willst, aber 
nicht, warum du es tun willst.

Typischer Kandidat für http://xyproblem.info/


Mir war kalt schrieb:
> S. Landolt schrieb:
>> Welche Last wird mit diesem "GPIO-Ausgang" geschaltet
>
> Das Gate eines kleinen Mosfets. P-Kanal

Klingt wie eine Variante von "ein Gerät soll per Taster eingeschaltet 
werden und sich dann selbst eingeschaltet halten" mit der Erweiterung 
"und ein zweiter Druck auf den gleichen Taster soll das Gerät wieder 
ausschalten".

Wenn das deine Aufgabenstellung sein sollte, dann wurde sie hier schon 
gefühlt 1000-mal diskutiert.

von S. Landolt (Gast)


Lesenswert?

> Das Gate eines kleinen Mosfets.

Also eine minimale Last. Muss man dann nicht lediglich den 
Serienwiderstand zum Taster so dimensionieren, dass die Schaltschwelle 
des MosFets nicht unter- bzw. überschritten wird, gleichzeitig aber die 
Spannungsänderung beim Tastendruck eben noch mit dem 10-bit-ADC 
detektierbar ist?
  Klingt jetzt irgendwie zu einfach, ich trinke erstmal Kaffee.

von Mir war kalt (Gast)


Lesenswert?

Axel S. schrieb:
> Kommt drauf an.

Danke für die Hilfe - Szenarien, in dem diese Unterscheidung möglich 
ist, interessieren mich!

von Mir war kalt (Gast)


Lesenswert?

S. Landolt schrieb:
> den
> Serienwiderstand zum Taster so dimensionieren, dass die Schaltschwelle
> des MosFets nicht unter- bzw. überschritten wird, gleichzeitig aber die
> Spannungsänderung beim Tastendruck eben noch mit dem 10-bit-ADC
> detektierbar ist?

Ja, danke, das ist wohl eine Möglichkeit.

von S. Landolt (Gast)


Lesenswert?

Funktioniert doch einwandfrei - z.B.: Vcc= 5.0 V, Ausgang auf high, 
Taster per 1k5 nach GND, fließen bei Tastendruck also rund 3 mA, der ADC 
liefert einen Abfall von 0x3FF auf 0x3F2; und wird den MosFet sicher 
nicht stören.

Oder habe ich das Problem nicht verstanden?

von Joachim B. (jar)


Lesenswert?

S. Landolt schrieb:
> Oder habe ich das Problem nicht verstanden?

keine Ahnung, das versteht ja hier fast niemand!

Mir war kalt schrieb:
> Es wäre interessant zu wissen, ob das Signal vom GPIO oder von einem
> parallelgeschalteten Taster kommt.

ist dieser Taster vom TO im selben Gerät wie der µC?
oder ist das ein externer Taster auf Netzspannung am 
Kondensatornetzteil?
Liegt am Taster überhaupt DC an oder AC?
Liegt am externen Taster gar eine Spannung an die höher ist als VCC vom 
µC?
Darf man 2 Spannungen einfach parallel schalten?
Muss die Spannung vom externen Taster nach dem Taster im Strom begrenzt 
werden damit der µC keinen magischen Rauch abbläst?
Wird mit dieser Strombegrenzung der externe Taster noch seine Aufgabe 
erfüllen können?

von Mir war kalt (Gast)


Lesenswert?

S. Landolt schrieb:
> Oder habe ich das Problem nicht verstanden?

Jain: das ist eine gute Möglichkeit, die ich bis gestern noch nicht 
kannte.
Der Taster sollte allerdings selbst auch ein high-level (alternativ low) 
erzeugen. Aber das dürfte sich ja auch mit einem Spannungsteiler 
realisieren lassen.

Daher: erstmal vielen Dank für die konstruktiven Beiträge.

von Andreas B. (bitverdreher)


Lesenswert?

Axel S. schrieb:
> Kommt drauf an. Wir wissen ja immer noch nicht, was du eigentlich
> erreichen willst. Du erzählst immer nur, was du tun willst, aber
> nicht, warum du es tun willst.

Die erste richtige Frage zu diesem Thema.

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.