Porterweiterung per I2C

OP #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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.