PIN Status auslesen??

Gast #398541
Lesenswert?
• ▲
▼
Hallo alle,

ich weiss nicht wo, aber irgendwo hab ich einen Denkfehler.

Hab folgende kleine Testfunktion geschrieben:

byte Test(void) {
   DDRB = 0xff;
   DDRD = 0x00;

   PORTB = 0xff;

   LCD_PrintHex(PIND);
}

So - nun hätte ich mir erwarten auf dem Display "FF" zu sehen.
Tatsächlich seh ich nur "00". Warum das?
Gast #398542
Lesenswert?
• ▲
▼
Hi,

versuch's mal mit PORTD. Da ich aber nicht weiss, wie die Funktion
"LCD_PrintHex()" aussieht, bin ich auch net sicher ob es so
funktioniert. Aber was soll denn der Sinn davon sein?
Gast #398543
Lesenswert?
• ▲
▼
Du setzt Port B auf Ausgang, Port D auf Eingang, setzt Port B auf ff und
liest Pin D ein. Alles korrekt. Wenn du anstelle DDRD = 0x00 ein DDRB =
0x00 schreibst oder LCD_PrintHex(PINB), sollte das Ergebnis
entsprechend sein.

MW
Gast #398544
Lesenswert?
• ▲
▼
@Phillip:

Ich möchte ein RS232-Signal, das an einem Pin anliegt einlesen.
PORTD anstelle von PIND kann nicht richtig sein, da ich mit PORTD
lediglich den Status der PullUp-Widerstände einlese.

@Michael:
Ich habe PORTD und PORTB mit einem Kabel direkt verbunden, und möchte
nun auf dem einen (PORTB) ein Signal rausschreiben - kein Problem mit
PORTB = 0xff - und auf dem anderen (PORTD) das nun anliegende Signal
empfangen - so dachte ich, ganz einfach mit x = PIND. Aber anscheinend
habe ich doch irgendetwas nicht berücksichtigt. Und ich komme nicht
drauf.

Dass is PORTD als Eingang definiere, müsste sogar überflüssig sein, da
PINx immer den Pinstatus liefert.

Ich hoffe noch auf den rettenden Einfall. Das kann doch nur eine
Kleinigkeit sein - oder?

GF

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren