PCF8574: Unterschied zwischen den Versionen

Aus TippvomTibb
Zur Navigation springen Zur Suche springen
Zeile 38: Zeile 38:
  
 
[[Datei:PCF8574 Port intern.png|800px]]
 
[[Datei:PCF8574 Port intern.png|800px]]
 +
 +
Das obere FLipFlop uebernimmt und speichert den Zustand im SHift-Register bei einem Schreibzugriff.
 +
 +
Das untere FlipFlop uebernimmt und speicher den Zustand des Port-Pins bei einem Schreib- oder Lesezugriff!
 +
 +
Nach einem Reset (Power on) sind beide FlipFlops im Zustand Q = 1.

Version vom 21. Februar 2022, 19:27 Uhr

Allgemeines

Als Porterweiterung für Microcontroller ist der PCF8574 mir seiner Anbindung ueber I2C schon ein betagter Geselle (80er). Fuer Arduino&Co aber nach wie vor sehr nuetzlich. Diese Seite dient mir dazu, mir nochmal ueber die Anbindung von Tastaturen, Displays oder auch Relais Klarheit zu verschaffen. Der nachfolgende Artikel aus den 8zigern von ELV diente mir damals dazu mich genauer mit dem I2C-Busprotokoll auseinanderzusetzen. Heute liegt mein Schwerpunkt eher auf der Sondierung der ueber 48 gezaehlten Libraries mit PCF8574-Unterstuetzung des Arduino-Frameworks. Bevor man jedoch die Software beurteilen kann, sollte man sich ueber die Hardwaremoeglichkeiten im Klaren sein. Was bei dem PCF8574 noch recht einfach ist. Ein entscheidendes Kriterium zur Auswahl einer Library ist neben der Groesze, der Kompatibilitaet vor allem die Unterstuetzung der Interrupt-Faehigkeit (/INT).

ELV PCF8574P.jpg

Das Modul war ein Teil dieses Bausatzes

Hardware

Den Einstieg mache ich mit der Portimplementierung, die sich ein wenig von der von Mikrocontrollernbekannten unterscheidet.

Laut Datenblatt betraegt die maximale I²C Taktrate 100kHz, was dem Standard entspricht.

Die Spannungsversorgung kann zwischen 2,5 V und 6 V liegen, was den Betrieb z. B. am Raspi mit seinen 3,3V direkt ohne Level-Shifter moeglich macht.

Was mir auch aufgefallen ist betrifft den Umstand, dass die wenigstens Implementationen den /INT-Pin (active LOW open-drain interrupt output) benutzen/auswerten. Ein Interrupt wird ausgeloest sobald der Status am Eingangspin sich vom Inputport Register Status unterscheidet.

Die Port-Pins sind zustandsgesteuerte Flipflops (Latches) und man kann an sie eine LED z.B. direkt anschlieszen. Die Gesamtstrom-"Belastung" darf dabei aber 80 mA nicht ueberschreiten.

Kapitel 8 des Datenblattes gibt folgendes an:

8 I/O programming

8.1 Quasi-bidirectional I/Os

Quasi weist auf den Umstand hin, dass die Ports zwar als Eingang und Ausgang dienen können , es aber Einschränkungen/Besonderheiten zu beachten gilt.

Es gibt z.B. nicht wie von Mikrocontrollern gewohnt, ein Direction Control Register (DCR). Bei einem Lesezugriff auf einen Port (Anm.: Mit Port ist zwar hier ein Port-Pin gemeint, eigentlich liest oder schreibt man aber immer alle 8 Port-Pins zusammen.) erhaelt man den Status des Eingangs-FlipFlops.

Eine weitere wichtige Information betrifft das Einschaltverhalten. Sobald der IS mit Spannung versorgt wird gehen alle Ports auf HIGH und als INPUTS und die 100uA Stromquelle ist eingeschaltet.

PCF8574 Port intern.png

Das obere FLipFlop uebernimmt und speichert den Zustand im SHift-Register bei einem Schreibzugriff.

Das untere FlipFlop uebernimmt und speicher den Zustand des Port-Pins bei einem Schreib- oder Lesezugriff!

Nach einem Reset (Power on) sind beide FlipFlops im Zustand Q = 1.