ATmega: Ausgang als Eingang und umgekehrt nutzen

OP #1582057
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
#1582076
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

...
#1582078
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
#1582084
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
#1582112
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
#1582132
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ß.

...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren