www.mikrocontroller.net

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


Autor: C-Beginner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Qwertz (Gast)
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Can Cobe (moklok)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: C-Beginner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: J.-u. G. (juwe)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Om Pf (ompf)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.