Forum: Compiler & IDEs PORTeinlesen ?!?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Christian (Gast)


Lesenswert?

Hallo,

dumme Frage:
wie kann ich das Byte, das an einem Port vom MC anliegt einlesen???
Bei mir schaut das so aus:
byte = inp(PORTB);

nur passiert da nix - die DDRx Register des oberen nibbles stehen auf 
Eingang, die des unteren Nibbles kann ich leider nicht auf Eingang 
setzen, da ich die anderweitig als Ausgang gesetzt habe - ich bin mir 
sicher, dass am Port daten anliegen (Kontrollleds) allerdings kommt 
immer 0 raus - warum eigentlich????? Die Variable Byte wird sofort ans 
Display geschrieben und wird als 0 angezeigt (die Displayausgabe 
funktioniert auch)

Bin euch für eure Hilfe sehr dankbar!!

mfg

Christian

von Schmittchen (Gast)


Lesenswert?

"Wir" hier auf mikrocontroller.net führen das unter "Anfängerfehler Nr. 
2". ;-)
Du darfst nicht von PortB einlesen, sondern mußt von PinB lesen.
byte = inp(PINB);

Schmittchen.

Ach ja: Anfängerfehler Nr.1 hast du ja schon umschifft. Ansonsten 
hättest du vergessen müssen, den Stack zu initialisieren.

von Christian (Gast)


Lesenswert?

Mist - auf Anfängerfehler Nr.2 bin ich schon mal reingefallen und 
verzweifelt - wie dumm von mir......

Wann aber muss ich Portb nehmen und wann pinb?????

Vielen Dank - es funktioniert jetzt einwandfrei!!!
mfg

Christian

PS: Bei avrgcc brauchts keine Stackinitialisierung, oder????

von Schmittchen (Gast)


Lesenswert?

PinB liefert die Pegel, die tatsächlich am Beinchen anliegen. PortB 
liefert beim Einlesen die Werte, die du vorher zum Konfigurieren (von 
Ein- und Ausgang) oder zur Ausgabe (falls er auf Ausgang steht) 
reingeschrieben hast. (Siehe Datenblatt: I/O-Ports). Und ja, AVRGCC 
bewahrt vor Fehler Nr.1. :-)

Schmittchen.

von Christian (Gast)


Lesenswert?

Vielen Dank für deine raschen Antworten!!!!!

Viele Grüße

Christian

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]
  • [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.