Porterweiterung per I2C

#2667151
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
#2667303
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
#2667486
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
Gast #2667524
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

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