mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR-Pin als Eingang+Ausgang beschalten


Autor: Enrico. J. (ejoerns)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

mal ne Frage an euch, hoffe zwar, dass ich da keinen Denkfehler drin 
hab, aber zu Sicherheit... ;)

Will einen AVR-Port zu Testzwecken so beschalten, dass ich ihn sowohl 
als Ausgang als auch als Eingang nutzen kann ohne ihn kaputt machen zu 
können. Genauer gesagt, ich will ihn schalten können, aber ebenso
auch die Möglichkeit haben eine LED daran anzusteuern.

Ist folgende Konstruktion möglich?:

    / \ + 5V
     |
    | | R=4K7
    | |
     |
P >--+
    _|_
    \ /  LED (2V, 20mA)
     |
    | |
    | | R=180
     |
     |
     o
      \
       \-| Schalter
     o  o
    _|_
    GND

Meiner Berechnung zufolge sollte es klappen, aber die große Frag:
Habe ich auch recht? ;)

Danke schonmal

Grüße EJoerns

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du die LED gegen Vcc (5V) (die LED "rutscht hoch") schaltest, 
kannst du dir den Widerstand sparen.
Du musst die Ausgangsfunktion des Ports dann mit dem DD-Register steuern 
und das Port-Register =0 setzen.
Die LED leuchtet dann, wenn der Port als Ausgang geschaltet ist, und den 
Taster kannst du abfragen, wenn der Port als Eingang geschaltet ist. 
DAnn leuchtet die LED auch nicht...

Autor: Enrico. J. (ejoerns)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieso kann ich mir da nen Widerstand sparen, und welchen?

Über die sonstige Ansteuerung eines AVR-Ports bin ich im Bilde ;)

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst dir dann den 4k7 sparen.

Autor: Enrico. J. (ejoerns)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann muss ich aber aufpassen, dass ich den Schalter nicht ausversehen 
schließe.. ;)

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieso? Der ist doch parallel zum AVR-Pin geschaltet.
Wenn man den Schalter schliesst leuchtet die LED auf jeden Fall.

Autor: Enrico. J. (ejoerns)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und wenn ich den Port als Ausgang setze und high schalte...?

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Und wenn ich den Port als Ausgang setze und high schalte...?

Peng! Port futsch.

Autor: Enrico. J. (ejoerns)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eben!

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kannst du. Wenn du dann aber den Schalter schliesst, qualmt's...
Sollte man im Programm aber vermeiden können.

Autor: Enrico. J. (ejoerns)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie soll ich nen Kurzchluss in der Software vermeiden???

Wie schon gesagt soll das Teil ja als Ausgang und Eingang genutzt werden 
können. Für ein Testboard halt...

Autor: aha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
180 Ohm als LED Vorwiderstand ist auch total uebertrieben. Ein 4.7k ist 
auch genug.

Autor: Enrico. J. (ejoerns)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was bitte?^^

Autor: bix (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Enrico,

wenn Du schon eine LED an einen Port anschließt, solltest Du sie 
vielleicht so verdrahten, dass sie bei geeigneter Ansteuerung des Pins 
leuchtet.

Das tut sie bei der oben gezeigten Schaltung nicht.

Sie leuchtet, nur, wenn Du den Taster drückst. Dies ist eigentlich 
unnötig, denn Du weißt ja, ob Du gedrückt hast.

Gruß bix

Autor: Enrico. J. (ejoerns)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn er gedrückt (bzw. im Realfall wohl er gejumpert) ist, hängt es doch 
noch davon ab wie ich die LED über den Port ansteuere!?
Weil bei 4k7 Vorwiderstand dürfte die LED (nicht low-current) nicht 
allzu viel sagen.

Autor: bix (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah, ja.

Da ob von Testzwecken die Rede war, hatte ich angenommen, der Schalter 
sollte zu Eingabe genutzt werden können.

Das ist wohl nicht geplant - mein Irrtum.

>als Eingang nutzen kann ohne ihn kaputt machen zu können.

kaputt machen geht immer ;-)

Du könntest den unnötigen Pullup (der AVR hat interne Pullups) gegen 
eine Diode ersetzen, die mit Kathode gegen Vcc geschaltet ist. Diese 
kann dann Induktionsspannungen ableiten, falls Du mal ein Relais an den 
Ausgang schaltest.

Gruß bix

Autor: Enrico. J. (ejoerns)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Doch, der Schalter soll zur Eingabe genutzt werden, aber halt nur wenn 
auf dem Controller gerade ne software ist wo dies von Nöten ist, 
ansonsten soll das ganze als Ausgang fungieren.
Halt, dass ich verschiedene Sachen testen kann ohne ne feste Belegung 
der IOs zu haben.

Autor: bix (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Doch, der Schalter soll zur Eingabe genutzt werden

Dann könnte die Serienschaltung mit LED und Vorwiderstand problematisch 
sein, da beim Schließen des Schalters die 2V der LED und die 
Abfallspannung des Vorwiderstands am Pin anliegen.
Die Eingangsspannung des Pins wird also möglicherweise nicht weit genug 
gegen Ground heruntergezogen, um eine einwandfreie Erkennung zu 
gewährleisten.

Gruß bix

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde es einfach über einen Jumper lösen, über den man entweder die 
Taste oder die LED an den Pin legt. Dazu genügt ein Drei-Pin-Jumper und 
das ist auch bequem zu handhaben. LED und Taste permanent gleichzeitig - 
nein danke. Ich glaube, irgendwie wird da immer nur was Halbherziges bei 
rauskommen.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Enrico. J. (ejoerns)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@bix: mh.. die 2V Abfall sind natürlich schon iwie müll^^ damit sollten 
die 0,7V (!?) für low minimal überschritten sein^^ mh.. vllt. nochmal 
überlegen

@Gast: jumper wollt ich vermeiden aus 2 gründen:
1. ich will den ganzen Port so bauen und Lochraster verwenden -> 
3-Pin-Jumper = doof

2. damit kann ich mich immernoch verjumpern und dem AVR warme gefühle 
bescheren.. ;)

@Peter: Du nutzt dann interne Pull-Up? Mh.. löst natürlich das 
2V-Abfall-Problem :D Das funktioniert bei dir so wie in der 
schaltskizze?

Autor: Enrico. J. (ejoerns)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Neuer Vorschlag:

    / \ + 5V
     |
     |
    | | R=4K7
    |_|
     |
P >--+----------.
    _|_         |
    \ / 2V     | | R=270
     |         |_|
    | |         |
    |_| R=180   o
     |           \
     |            \-|
     |          o  o
     |          |
    _|_        _|_
    GND

? ;)

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie wärs mit 3-Pin-Jumper und in den Tasterzweig nen R seriell zum 
Taster? Dann kann nichts passieren, auch wenn du dich verjumpert hast.

Sebastian

Autor: Enrico. J. (ejoerns)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Joa, wär evlt. nen kompromiss, aber dann müsste ich, trotz dass sie mir 
wie gesagt widerstreben, die 3-pin dinger nehmen.. ;)

Und schalten müsst ich das ja praktisch fast wie in der letzten skizze, 
wenn ich will, dass die LED den Portzustand nicht invertiert!?

Autor: Enrico. J. (ejoerns)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Muss euch nochmal mit einem meiner kognitiven Ergüsse belästigen ;)

What about this one?

      / \
       |
      | |
      | | 270
       |
       o
        \
         \--|
       o  o
       |
<>-----|
       |
      | |
      | | 1K
       |
      _|_
      \_/ low current
       |
      _|_


Danke schonmal für die Bisherigen Ratschläge :)

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Enrico J. schrieb:
> What about this one?

Was gefällt Dir denn an diesem Schaltplan nicht?

Beitrag "Re: Taster + LED am selben Draht (4*)"


Peter

Autor: Enrico. J. (ejoerns)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mir ist nicht ganz klar wie du das Teil gegen Masse kriegst mit nem 
3,9k..?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Enrico J. schrieb:
> Mir ist nicht ganz klar wie du das Teil gegen Masse kriegst mit nem
> 3,9k..?

Der 3,9k ist wichtig, damit die LED nicht ausgeht beim Drücken.
Er muß nur den internen Pullup (~50k) runterziehen.

Taste und LED sind völlig unabhängig.
Du kannst also auch programmieren, daß S1 LED2 schaltet und S2 dann 
LED1.


Peter

Autor: Enrico. J. (ejoerns)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mh.. war davon ausgegangen das der Pull-Up kleiner ist ;)

Und jetzt noch mein E-Technik-Defizit:
Welche Spannung liegt am Port, wenn ich den Schalter offen habe und den 
AVR als Eingang?
Und was genau passiert, wenn ich nen Widerstand in Serie zu ner Diode 
schalte? Der 2V-Abfall müsste dann ja nicht mehr stimmen, richtig?

Danke

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
---------------o-----
               |
              _|_
              \ /
              ¯|¯
               |
              [ ] 1k
               |
               |
---+         Jumper
   |           |
   |    330    |
   +----[ ]----o
   |           |
   |           |
---+           |
             Taste
               |
               |
               |
---------------o-----

Wie wärs damit?

Vorteile: 1. Der Portpin ist durch den 330-Ohm-Widerstand auf jeden Fall 
geschützt. 2. Wenn der Pin als Input konfiguriert ist, wird er beim 
Druck auf die Taste sicher auf L gezogen, auch bei aktiviertem internen 
Pullup. 3. LED-Zweig kann durch Öffnen des Jumpers stillgelegt werden. 
4. Nur Zwei-Pin-Jumper nötig.

Nachteil: Bei gesetztem Jumper leuchtet die LED stets bei 
niedergedrückter Taste ("überstimmt" Portpegel).

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Gast (Gast)

>4. Nur Zwei-Pin-Jumper nötig.

Unnötig.

>Nachteil: Bei gesetztem Jumper leuchtet die LED stets bei
>niedergedrückter Taste ("überstimmt" Portpegel).

Den Nachteil hat die Lösung von Peter nicht. Ergo. Vergiss diesen 
Ansatz.

MFG
Falk

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Enrico J. schrieb:
> Welche Spannung liegt am Port, wenn ich den Schalter offen habe und den
> AVR als Eingang?

Die LED-Schwellspannung, also bei einer roten LED etwa 1,5V.
Das sind 0,4V Störabstand bis zur 1,1V Triggerschwelle des Komparators.


Peter

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Falk:

Ich kenne Peters Lösung. Sie ist clever, funktioniert zweifellos bestens 
und hat allen Respekt verdient. Andererseits würde ich jedoch bei einem 
Experimentierboard nicht gezwungen sein wollen, für die Abfrage der 
Pinzustände den Komparator verwenden zu müssen. Da fände ich es eher 
sinnvoll, so nahe wie möglich an der "Standardschaltungsvariante" 
(heißt: Taster gegen GND; LED über R an VCC) zu bleiben, und dadurch die 
Pins auch über das PIN-Register einlesen zu können.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gast schrieb:
> Andererseits würde ich jedoch bei einem
> Experimentierboard nicht gezwungen sein wollen, für die Abfrage der
> Pinzustände den Komparator verwenden zu müssen.

Warum nicht?
Du kriegst von Atmel kein Geld zurück, wenn Du den Komparator nicht 
benutzt.


> Da fände ich es eher
> sinnvoll, so nahe wie möglich an der "Standardschaltungsvariante"
> (heißt: Taster gegen GND; LED über R an VCC) zu bleiben, und dadurch die
> Pins auch über das PIN-Register einlesen zu können.

Standard erfüllt, aber Ziel nicht erfüllt, ist doch nicht sinnvoll.

Der Sinn des ganzen soll ja sein, daß Taster und LED unabhängig sind, 
d.h. die LED-Helligkeit nicht durch die gedrückte Taste merkbar 
beeinflußt wird.
Das wirst Du mit Deiner "Standardschaltung" nicht wuppen können.


Peter

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Peter:

Der OP schrieb...

>"...soll das Teil ja als Ausgang und Eingang genutzt werden können.
>Für ein Testboard halt...".

...und ich kann daraus nicht herauslesen, ob er einen Pin in einem 
Projekt (quasi-)gleichzeitig als A und E nutzen will, oder ob er 
wünscht, einen Pin in einem Projekt als A und in einem anderen Projekt 
als E konfigurieren zu können. Im ersten Fall wäre Deine Lösung die 
Methode der Wahl, im zweiten meine zumindest eine Alternative.

>Der Sinn des ganzen soll ja sein, daß Taster und LED unabhängig sind,
>d.h. die LED-Helligkeit nicht durch die gedrückte Taste merkbar
>beeinflußt wird.

Das ist mir schon klar. Nein, mit diesem Feature kann meine Variante 
nicht glänzen, aber im "zweiten Fall" (s. o.) wäre das irrelevant.

Bei einem allgemeinen Experimentierboard würde ich Wert darauf legen, 
möglichst wenig eingeschränkt zu sein, und es würde mir sicher 
missfallen, meine Software auf die Hardware anpassen zu müssen. Es wäre 
z. B. der Fall denkbar, wo ich den Komparator in einem Projekt für etwas 
anderes benutzen möchte, ihn dann aber von der Portabfrage in Anspruch 
genommen fände --> wenig erfreulich.

>Du kriegst von Atmel kein Geld zurück, wenn Du den Komparator nicht
>benutzt.

:-)

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Gast (Gast)

>Experimentierboard nicht gezwungen sein wollen, für die Abfrage der
>Pinzustände den Komparator verwenden zu müssen.

Musst du doch gar nicht! Das ist nur mal wieder einer von Peters 
Macharten.
Den Pin kann man direkt aus dem PINx Register lesen. Der Trick besteht 
schlicht darin, eine LED zu nutzen, der Flußspannung über der 
AVR-Schaltschwelle von Vcc/2 liegt. Wenn das von vorn herein nciht 
gegeben ist, z.B. rote LEDs mit 1,8V bei 5V VCC nimmt man ein oder zwei 
1N4148 dazu in Reihe, und schon ist das Problem gelöst.

Ist doch ganz einfach. In einem Timer periodisch den Pin als Eingang mit 
Pull-Up aktivieren. Der Taster kann ausgelesen werden, man muss nur ein 
paar Dutzend us warten, um ggf. grössere Kabelkapazitäten umzuladen. 
Taster nicht gedrückt, Pull-Up zieht auf HIGH. Taster gedrück, 
wesentlich niderohmiger 3K9 zieht über Taster auf LOW. Danach den Pin 
wieder auf Ausgang schalten. Diese kurze Ausschalten der LED sieht 
keiner und macht sie nahezu unmessbar geringfügig dunkler.

MFG
Falk

Autor: Enrico. J. (ejoerns)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Sodele, nu bin ich auch mal wieder hier ;)

Also erstmal danke für die rege Diskussion die noch aufgekommen ist :).
Um alle Klarheiten zu beseitigen möchte ich noch ein paar Details zu 
meinen Ansprüchen an die Schaltung hinterher schicken.

1. Möglichst wenig verbaute Komponenten
2. Pin soll in jedem zu testenden Projekt entweder NUR als Ausgang oder
   NUR als Eingang konfiguriert sein. Keine gleichzeitige
   Doppelverwendung!
2. Möglichst totale Unabhängigkeit von der Test-Software auf dem µC.
   -> eig. auch Pull-Up nicht voraussetzbar
3. LED soll Pegel anzeigen (HIGH=Licht)
   -> Schaltung von VCC gegen Pin suboptimal
4. Zustand der LED bei Input-Nutzung nicht soo wichtig ;)


Daher ist das mit der Schaltung von Peter noch ein gaanz bisschen an 
meinen Träumen vorbei ;)
Laut Spec. ist die normale V_IH auch leider erst ab 3.5V garantiert...


Und weil es so schön ist hab ich auch noch einen weiteren Kandidaten 
(Anhang), allerdings auch mit dem Spannungsproblem... zur Not wohl doch 
Jumper.. :( ^^

@Note: RP, evlt. 330Ohm, RPA10 evlt. 47k. Im Zeifelsfall RP auch für 
Low-Current-LED, damit Port-Max-Strom bei 8-facher Fehlschaltung nicht 
überstrapaziert wird :D

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, nimm diese Schaltung. Die ist super.

Autor: Tibi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
holger schrieb:
>>Und wenn ich den Port als Ausgang setze und high schalte...?
>
> Peng! Port futsch.

Bin noch relativ neu in der Elektronik. Kann mir jemand erklären, warum?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.