www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATmega: Ausgang als Eingang und umgekehrt nutzen


Autor: Oz zy (ozzy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

ich habe da mal eine Frage bei der Ihr mir vielleicht weiterhelfen 
könnt: wenn ich einen Pin am ATmega als Ausgang benutzen möchte, muss 
ich ja in das Datenrichtungsregister an der entsprechenden Stelle eine 1 
schreiben. Was passiert jetzt aber, wenn ich mich vertan habe, und 
eigentlich einen Eingang haben wollte und z.B. einen Taster anschließe? 
Wenn der Pin auf low gesetzt ist, und ich dann davon lese, dann lese ich 
doch auch eine 0, oder? Und wenn ich 5V anlege, dann fließen die ja über 
Ground ab, und eigentlich müsste ich doch da dann eine 1 lesen, oder? 
Kritisch ist das vielleicht bei einer geschriebenen 1 und dann 5V am 
Pin...
Und auf der anderen Seite: was passiert, wenn ich den Pin als Eingang 
deklariert habe, und dann auf den Port an der entsprechenden Stelle eine 
1 schreibe?

Interessiert mich einfach nur mal so...
Vielen Dank im Voraus, Ozzy

Autor: dfsdvfdb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ausprobieren.

Autor: Holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du sollt dich nicht vertun

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christoph O. schrieb:
> Moin,
>
> ich habe da mal eine Frage bei der Ihr mir vielleicht weiterhelfen
> könnt: wenn ich einen Pin am ATmega als Ausgang benutzen möchte, muss
> ich ja in das Datenrichtungsregister an der entsprechenden Stelle eine 1
> schreiben.

Richtig.

> Was passiert jetzt aber, wenn ich mich vertan habe, und
> eigentlich einen Eingang haben wollte und z.B. einen Taster anschließe?

Dann wird es wohl zum Kurzschluss kommen, bei dem das schwächste Teil 
der Kette (vermutlich der Ausgangstreibertransistor des AVRs) beschädigt 
werden kann. Eine zeitlich kurzen Kurzen übersteht der AVR meist 
schadlos, dauert es länger, dann stirbt er meist.

> Wenn der Pin auf low gesetzt ist, und ich dann davon lese, dann lese ich
> doch auch eine 0, oder?

Ja, aber in dieser Zeit brutzelt der Treibertransistor der H-Seite.

> Und wenn ich 5V anlege, dann fließen die ja über
> Ground ab, und eigentlich müsste ich doch da dann eine 1 lesen, oder?

Ja, aber in dieser Zeit brutzelt der Treibertransistor der L-Seite.

> Kritisch ist das vielleicht bei einer geschriebenen 1 und dann 5V am
> Pin...

Beides ist kritisch.

> Und auf der anderen Seite: was passiert, wenn ich den Pin als Eingang
> deklariert habe, und dann auf den Port an der entsprechenden Stelle eine
> 1 schreibe?

Das hängt von der Belastung des Pins ab. Ist sie hochohmig genug, dann 
hast Du eine 1. Denn dann fällt am internen PullUp kaum Spannung an. Ist 
die Last niederohmiger, dann bildet sich ein Spannungsteiler zwischen 
internem PullUp und Last.

>
> Interessiert mich einfach nur mal so...

Dann schau doch einfach mal ins Datenblatt des Controllers, da ist die 
Innenschaltung der I/O-Pins detailliert als Schaltplan dargestellt und 
teilweise auch in Worten beschrieben.

> Vielen Dank im Voraus, Ozzy

...

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christoph O. schrieb:

> ich habe da mal eine Frage bei der Ihr mir vielleicht weiterhelfen
> könnt: wenn ich einen Pin am ATmega als Ausgang benutzen möchte, muss
> ich ja in das Datenrichtungsregister an der entsprechenden Stelle eine 1
> schreiben. Was passiert jetzt aber, wenn ich mich vertan habe, und
> eigentlich einen Eingang haben wollte und z.B. einen Taster anschließe?

Solange der Taster nicht gedrückt ist, passiert gar nichts.
Wenn du den Taster aber drückst dann kann es sein, dass du einen 
Kurzschluss baust. Das wird dem Mega nicht besonders gefallen.

> Und auf der anderen Seite: was passiert, wenn ich den Pin als Eingang
> deklariert habe, und dann auf den Port an der entsprechenden Stelle eine
> 1 schreibe?

Dann schaltest du den Pullup Widerstand für diesen Pin ein

Autor: Volker Schulz (volkerschulz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christoph O. schrieb:
> Wenn der Pin auf low gesetzt ist, und ich dann davon lese, dann lese ich
> doch auch eine 0, oder?

Warum soll ein Kurzschluss das Register aendern?

> Und wenn ich 5V anlege, dann fließen die ja über
> Ground ab
Nein.

> Und auf der anderen Seite: was passiert, wenn ich den Pin als Eingang
> deklariert habe, und dann auf den Port an der entsprechenden Stelle eine
> 1 schreibe?
Du aktivierst den internen Pull-Up.

Volker

Autor: Oz zy (ozzy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, das hat mir sehr geholfen!!!

Autor: Volker Schulz (volkerschulz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt aber durchaus Faelle, in denen man einen Input-Pin als Output 
benutzt. Naemlich immer dann, wenn man zwischen HIGH und TRI-STATED 
umschalten will (und nicht viel Strom braucht). ;)

Volker

Autor: Volker Schulz (volkerschulz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hannes Lux schrieb:
>> Wenn der Pin auf low gesetzt ist, und ich dann davon lese, dann lese ich
>> doch auch eine 0, oder?
>
> Ja, aber in dieser Zeit brutzelt der Treibertransistor der H-Seite.
>

Mooooment. Wenn der Output auf LOW gesetzt ist und man den durch den 
Taster auf GND legt, dann passiert gar nix. Nur wenn der Output auf HIGH 
ist, hat man einen Kurzschluss



>> Und wenn ich 5V anlege, dann fließen die ja über
>> Ground ab, und eigentlich müsste ich doch da dann eine 1 lesen, oder?
>
> Ja, aber in dieser Zeit brutzelt der Treibertransistor der L-Seite.

Das wiederum NUR wenn der Output gerade LOW ist, NICHT wenn er HIGH ist.



>> Kritisch ist das vielleicht bei einer geschriebenen 1 und dann 5V am
>> Pin...
>
> Beides ist kritisch.

Warum soll VCC an VCC kritisch sein?


Volker

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Nur wenn der Output auf HIGH ist, hat man einen Kurzschluss

> Das wiederum NUR wenn der Output gerade LOW ist, NICHT wenn er HIGH ist.

Das hatte ich vorausgesetzt.

> Warum soll VCC an VCC kritisch sein?

Anhand der Formulierungen des Fragestellers hatte ich vorausgesetzt, 
dass er dies selbst weiß.

...

Autor: Volker Schulz (volkerschulz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hannes Lux schrieb:
> Anhand der Formulierungen des Fragestellers hatte ich vorausgesetzt,
> dass er dies selbst weiß.
>
> ...

...auf jeden Fall wuerde ich ihm meine Controller nicht anvertrauen! ;)

Volker

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.