Tido
13.01.2009, 20:48
Hallo,
ich habe ein PCF8574 an einem Atmega32. Schreiben funktioniert wunderbar, aber beim Lesen habe ich ein Problem:
An allen Ports sind Taster nach GND angeschlossen. Ich setze alle Ports durch Senden des Wertes 255 auf Eingang. Ein Logikprüfer bestätigt, dass alle Ports High sind ( &B11111111 = 255).
Lese ich nun aber die Ports, so erhalte ich statt dem erwarteten Wert von 255 nur 0.
Drücke ich den 1. Taster (LSB), so ändert sich der ausgelesene Wert von 0 auf 254 (was ja auch logisch ist: &B11111110 = 254).
Warum aber wird ohne bet. Taster nicht 255 gelesen sondern 0? Diese "0" lässt sich dann nämlich nicht vom Zustand "alle Taster betätigt" unterscheiden. Natürlich könnte ich mit Pullups an den Ports Abhilfe schaffen, aber das ist nicht der Sinn.
ich habe ein PCF8574 an einem Atmega32. Schreiben funktioniert wunderbar, aber beim Lesen habe ich ein Problem:
An allen Ports sind Taster nach GND angeschlossen. Ich setze alle Ports durch Senden des Wertes 255 auf Eingang. Ein Logikprüfer bestätigt, dass alle Ports High sind ( &B11111111 = 255).
Lese ich nun aber die Ports, so erhalte ich statt dem erwarteten Wert von 255 nur 0.
Drücke ich den 1. Taster (LSB), so ändert sich der ausgelesene Wert von 0 auf 254 (was ja auch logisch ist: &B11111110 = 254).
Warum aber wird ohne bet. Taster nicht 255 gelesen sondern 0? Diese "0" lässt sich dann nämlich nicht vom Zustand "alle Taster betätigt" unterscheiden. Natürlich könnte ich mit Pullups an den Ports Abhilfe schaffen, aber das ist nicht der Sinn.