Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: I2C: PCF8574A kann keine Eingänge lesen Kategorie: Open-Micro/Open-Mini/Open-Midi/Open-Macro/Open-Maxi (von Olaf - 23.06.2007 20:41)
 Als Antwort auf Re: I2C: PCF8574A kann keine Eingänge lesen von Dietmar - 18.06.2007 0:00
Olaf nutzt:  Open-Micro, Open-Mini, Open-Midi, Open-Macro
Hallo Dietmar.

> Die doppelte Definition von "PCFADR" läßt der Compiler nicht zu. Man kann also immer nur entweder PCF8574- oder PCF8574A-Portexpander einsetzen und deshalb maximal "nur" 64 externe Ports gleichzeitig nutzen. Ich halte 64 zusätzliche Ports für ausreichend, aber natürlich könnte der Anwender bei Bedarf das Assemblermodul auf 128 Ports erweitern.

War mir schon klar das das so nicht funktionieren würde. Leider reicht mein Assembler bis jetzt noch nicht für eine eventuelle Änderung. Trotzdem Danke für Deine Hilfe!!
Ich benutze jetzt die externen Ports über die PCF8574 aus dem Assemblermodul als Eingänge und die PCF8574A über die "write" Anweisung als Ausgänge. So könnte ich 64 Eingänge und 64 Ausgänge zusätzlich ansprechen. Na ja ich möchte halt  mehrere OM´s miteinander verknüpfen, mal schaun was daraus wird???

> Stand das "RunOnErr=ON" vor den mit INCLUDE eingebundenen Systemerweiterungen? Die Systemerweiterungen müssen immer am Programmanfang, vor jedem Befehl, stehen. Sonst werden sie vom OM-Kontroller nicht gefunden. Siehe auch die Beschreibung des INCLUDE-Befehls in der OM-Doku: "Dateien mit der Endung IIA enthalten Systemerweiterungen, die vom Anwender direkt hinter die Definitionen, vor den ersten Befehl seines Programms, gestellt werden müssen."

Ja genau das war mein Fehler, funktioniert jetzt ohne Probleme!!

Eine Frage interessiert mich aber dennoch, wenn ich ein ganzes Byte vom PCF lesen möchte klappt das leider überhaupt nicht. Wie würde der Lesebefehl denn aussehen?? Ich hatte bis jetzt folgendes probiert:

  i2c_start                             ' I2C-Bus starten
  i2c_write(122)                     ' Adresse senden
  i2c_read(PCF14_DATEN)    ' Daten lesen
  i2c_stop                              ' I2C-Bus stoppen

Sollten dann das Empfangene Byte nicht in PCF14_DATEN stehen? Oder wo ist mein Fehler?
Ein Byte schreiben funktioniert ohne Probleme.

Viele Grüße
Olaf

 Antwort schreiben

Bisherige Antworten: