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
Das ist dokumentiertes Verhalten. Steht so im Datenblatt und stört auch nicht.
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.
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
@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
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.
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.