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
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 ...
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
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
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
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
> 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ß. ...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.