Forum: Compiler & IDEs PORTeinlesen ?!?


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

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.