Forum: Mikrocontroller und Digitale Elektronik Porterweiterung per I2C


von Michael N. (lwl2012)


Lesenswert?

Hey Leute,

es ergab sich mal eine Frage (mal wieder werden manche sagen). Ich 
wollte mal fragen, gibt es Porterweiterungsbausteine (was für ein Wort), 
die man per I2C Bus verbindet aber ähnlich wie die Ports im µC 
anspricht?

Also Config Portd.0 = Output ...

Fand in meiner Sammelkiste einen PCF8574P.

Michael

von Bernhard S. (b_spitzer)


Lesenswert?

Der PCF8574 hat die Portstruktur vom 8051 geerbt, ist also immer 
Bidirektional nutzbar (hat aber nur Pull-Up Widerstand und Transostor 
gegen Masse). Der PCA9554 hat dagegen Port-Direction-Register und echte 
Push-Pull-Treiber.
Siehe http://www.nxp.com/documents/data_sheet/PCA9554_9554A.pdf

Für die Konfiguration per Software musst Du Dir natürlich Deine passende 
Funktion selber schreiben. So wie angegeben wird es nicht gehen, weil da 
ja I2C-Routinen dazwischen hängen.

tschuessle
Bernhard

von Peter D. (peda)


Lesenswert?

Das geht so nicht. Wenn Du jedes Bit sofort über I2C verschicken willst, 
hängt Deine CPU ständig nur im I2C-Traffic und wird schnarchlahm.

Man legt sich daher Schattenports im SRAM an.
Zu Anfang werden alle Eingänge in diese Schattenports eingelesen.
Dann macht man die logische Verarbeitung.
Und zum Schluß werden alle Ausgänge mit den Schattenports geladen.

Damit verhindert man auch, daß sich während der Verarbeitung Eingänge 
ändern und damit der Ablauf inkonsistent wird, wenn ein Eingang an 
mehreren Stellen ausgewertet werden muß. Oder daß Glitches an den 
Ausgängen entstehen.


Peter

von Karl (Gast)


Lesenswert?

Ein richtiger Vorteil ergibt sich durch I2C nicht, wie Du hier schon 
lesen konntest. Ein einfaches Schieberegister braucht nur eine Leitung 
mehr (notfalls gehen sogar 2 Leitungen) und ist wesentlich weniger 
umständlich zu programmieren.

Falls Du trotzdem mal mit BASCOM etwas damit machen möchtest:

http://www.avr-praxis.de/forum/showthread.php?2130-I2C-LCD-%28-auch-Arduino-%29-mit-PCF8574-OHNE-LIB-betreiben&p=20532&viewfull=1#post20532

von Falk B. (falk)


Lesenswert?


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.