Forum: Mikrocontroller und Digitale Elektronik Input / Output Register - Wieso ändern sich die Werte in beiden Registern?


von C-Beginner (Gast)


Lesenswert?

Hallo Leute,

ich beschäftige mich gerade mit den Registern des Atmega8. Wenn ich 
irgendein Pin auf high oder low level setze, dann ändert sich der Wert - 
wie erwartet - im Output Register. Merkwürdigerweise ändert sich aber 
auch das Input Register mit dem entsprechenden Signal level, das ich ins 
Output Register gesetzt habe. Ist mein Atmega8 nicht ganz in Ordnung 
oder muss das sein? Dachte immer, die beiden Register wären voneinander 
unabhängig, d.h. erst im Input modus ändert sich das Input Register, 
während das Output Register nur im Output modus veränderbar ist.

MfG
AtmegaFan

von Qwertz (Gast)


Lesenswert?

Das ist dokumentiertes Verhalten. Steht so im Datenblatt und stört auch 
nicht.

von Karl H. (kbuchegg)


Lesenswert?

C-Beginner schrieb:

> oder muss das sein? Dachte immer, die beiden Register wären voneinander
> unabhängig, d.h. erst im Input modus ändert sich das Input Register,
> während das Output Register nur im Output modus veränderbar ist.

Sie sind zwar nicht ganz voneinander µC-intern unabhängig, aber das sei 
jetzt mal dahingestellt.

Tatsache ist aber, dass spätestens am physikalischen Pin der 
Ausgangspfad vom PORT Register und er Eingangspfad vom PIN Register 
zusammentreffen.

Über das PORT Register wird der physikalische Pin auf 0 oder 1 gesetzt 
und das PIN Register liefert dir den tatsächlich Zustand des 
physikalischen Pins.

Wenn du also mittels PORT den Pin auf 1 setzt, dann kriegt das die 
Eingangsstufe natürlich mit und liefert dir sozusagen die Rückmeldung, 
dass der physikalische Pin auf 1 ist.

von Can C. (moklok)


Lesenswert?

hallo,

das muss so sein... inputregister zeigt dir immer an was fuer ein signal 
anliegt.  outputregister gibt dir an was du am pin ausgeben moechtest.

unterschied ist merkbar wenn du z.B. output auf high stellst, aber den 
pin von aussen auf masse ziehst.  dann zeigt dir inputregister ein low.

gibt natuerlich noch weitere moeglichkeiten bei denen ein 
unterschiedliches signal erzeugt werden kann

lg

von C-Beginner (Gast)


Lesenswert?

@Karl & Can Cobe

Ich bedanke mich bei euch für die ausführliche Erklärungen, die echt 
klasse sind. Zuvor dachte ich immer, dass z.b. im Output modus der 
entspreche Pin im Inputregister abegschaltet wird. Vielleicht ist dieser 
Aufwand in der Hardware einfach aufwendig bzw. in der Praxis nicht 
nötig.

MfG

von J.-u. G. (juwe)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Wenn du also mittels PORT den Pin auf 1 setzt, dann kriegt das die
> Eingangsstufe natürlich mit und liefert dir sozusagen die Rückmeldung,
> dass der physikalische Pin auf 1 ist.

Kleine Ergänzung: Bei Verwendung der external interrupt pins ist es (lt. 
Datenblatt) auf diese Weise möglich, "software interrupts" auszulösen.

C-Beginner schrieb:
> Vielleicht ist dieser
> Aufwand in der Hardware einfach aufwendig bzw. in der Praxis nicht
> nötig.

Ich denke, dieses Verhalten ist bewusst so ausgelegt worden.

von Rolf Magnus (Gast)


Lesenswert?

C-Beginner schrieb:
> Zuvor dachte ich immer, dass z.b. im Output modus der entspreche Pin im
> Inputregister abegschaltet wird.

Wozu? Der einzige Unterschied zwischen "Output" und "Input" ist nur, daß 
bei ersterem die Ausgangsstufe geschaltet wird, bei zweiterem nur der 
Pull-Up-Widerstand. Welchen Vorteil hätte es, die Eingangsstufe 
zusätzlich noch abzuschalten?

von Osche R. (Gast)


Lesenswert?

C-Beginner schrieb:

> (...) Zuvor dachte ich immer, dass z.b. im Output modus der
> entspreche Pin im Inputregister abegschaltet wird. Vielleicht ist dieser
> Aufwand in der Hardware einfach aufwendig bzw. in der Praxis nicht
> nötig.

Nicht sinnvoll, denn so kannst Du zurücklesen, ob Deine Ausgabe 
erfolgreich am Pin angekommen ist. Wenn Du redest, hörst Du Dich ja auch 
selber, und merkst auf diese Weise sofort, jemand dazwischenquatscht.


Patrick

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.