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
.. bzw. die ggf. höhere, anliegende Spannung als high+0.7V, richtig? Das wäre ideal.
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.
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
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.
"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.
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?
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.
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
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.
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?
Welche Last wird mit diesem "GPIO-Ausgang" geschaltet und wogegen (Vcc oder GND)?
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.
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*)"
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
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.
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.
> 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.
Axel S. schrieb: > Kommt drauf an. Danke für die Hilfe - Szenarien, in dem diese Unterscheidung möglich ist, interessieren mich!
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.
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?
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?
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.