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


von Oz z. (ozzy)


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

von dfsdvfdb (Gast)


Lesenswert?

Ausprobieren.

von Holger (Gast)


Lesenswert?

Du sollt dich nicht vertun

von Hannes L. (hannes)


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

...

von Karl H. (kbuchegg)


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

von Volker S. (volkerschulz)


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

von Oz z. (ozzy)


Lesenswert?

Danke, das hat mir sehr geholfen!!!

von Volker S. (volkerschulz)


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

von Volker S. (volkerschulz)


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

von Hannes L. (hannes)


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ß.

...

von Volker S. (volkerschulz)


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

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.