Hallo, ich habe ein Verständnisproblem: was genau ist der Unterschied zwischen den Ports GPIO und OLAT. Ich konnte in einem Beispielsketch einen MCP23008 mit OLAT beschalten, den 23017 aber nicht. Jetzt gehen plötzlich beide mit GPIO. Aber egal: was genau ist der UNterschied, ich verstehs nicht. Im Datenblatt steht (bei beiden identisch): "The GPIO register reflects the value on the port. Reading from this register reads the port. Writing to this register modifies the Output Latch (OLAT) register." und "The OLAT register provides access to the output latches. A read from this register results in a read of the OLAT and not the port itself. A write to this register modifies the output latches that modifies the pins configured as outputs." Da liegt der Unterschied doch nur beim Lesen, oder? Vielen Dank für hilfreiche Antworten und schönes Wochenende Sebastian
Der Unterschied ist im Kapitel 1.5 schön herausgearbeitet: Reading the GPIO register reads the value on the port. Reading the OLAT register only reads the OLAT, not the actual value on the port. Writing to the GPIO register actually causes a write to the OLAT. Writing to the OLAT register forces the associated output drivers to drive to the level in OLAT. Pins configured as inputs turn off the associated output driver and put it in high-impedance. -> Der Unterschied liegt wirklich nur beim Lesen.
Entschuldigung, ich hatte mich wohl nicht klar ausgedrückt, denn dass der "Unterschied ist im Kapitel 1.5 schön herausgearbeitet" ist, finde ich nicht. Mein Verständnisproblem liegt wohl bei der Hardware. Warum gibt es denn GPIO und OLAT? Wenn "Writing to the GPIO register actually causes a write to the OLAT.", warum schreibe ich dann nicht gleich auf OLAT? Und wenn ich den Port und den OLAT getrennt auslesen kann, nämlich über GPIO lesen und OLAT lesen, dann heißt dass doch, dass der Wert vom Pin sich auch unabhängig vom an das OLAT geschickten Wert ändern kann, oder? Warum sonst sollte man das machen? Das letztere ist doch nur dann wichtig, wenn ich den MCP als Inputexpander nehme, oder? Vielleicht steh ich hier auf dem Schlauch, weil ich ihn eigentlich nur als Output-Expander benutze. Und daher bleibe ich bei meiner ursprünglichen Fragestellung: was genau ist der Unterschied zwischen den Ports GPIO und OLAT? Schönes Wochenende
Sebastian Strauch schrieb: > Entschuldigung, ich hatte mich wohl nicht klar ausgedrückt, denn > dass > der > "Unterschied ist im Kapitel 1.5 schön herausgearbeitet" ist, finde ich > nicht. > Mein Verständnisproblem liegt wohl bei der Hardware. > Warum gibt es denn GPIO und OLAT? Wenn "Writing to the GPIO register > actually causes a write to the OLAT.", warum schreibe ich dann nicht > gleich auf OLAT? > Und wenn ich den Port und den OLAT getrennt auslesen kann, nämlich über > GPIO lesen und OLAT lesen, dann heißt dass doch, dass der Wert vom Pin > sich auch unabhängig vom an das OLAT geschickten Wert ändern kann, oder? > Warum sonst sollte man das machen? Das letztere ist doch nur dann > wichtig, wenn ich den MCP als Inputexpander nehme, oder? Vielleicht steh > ich hier auf dem Schlauch, weil ich ihn eigentlich nur als > Output-Expander benutze. Und daher bleibe ich bei meiner ursprünglichen > Fragestellung: was genau ist der Unterschied zwischen den Ports GPIO und > OLAT? > Schönes Wochenende Du kannst die Pins des IC als Eingang und Ausgang benutzen. GPIO gibt die den aktuellen Pegen der Pins, egal ob Ein- oder Ausgang. OLAT = Output-LATch ist ein Chip-Interne LATch für den Output. Das kanst du setzen und lesen. Wenn aber Pins als Eingang geschaltent sind gibt GPIO eventuell einen anderen Wert als OLAT, weil halt am Eingang was anderes anliegt. Die Register sind halt für Ein- und Ausgang getrennt. Das ist einfacher zu Bauen und wird bei allen mir bekannten IO-Chips seit Jahrzehnten so gemacht. Wenn du nur Ausgänge brauchst ist GPIO für DICH uninteressant. Leute die auf einem Port Ein- UND Ausgänge haben brauchen das aber. Für jeden einen eigenen Chip zu basteln lohnt sich nicht. Ich hoffe das war etwas verständlicher ...
Hallo Blubber, danke für die schnelle Antwort. Ich hab's soweit kapiert und werde mal noch ein bißchen mit dem IC als Eingangsexpander rumspielen. Ciao
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.