Re: HSRel5 Kategorie: I²C-Bus (von André H. - 25.09.2010 8:58) | ||
Als Antwort auf Re: HSRel5 von ChristianS - 24.09.2010 23:05 | ||
| ||
Hallo Christian, > > ich brauche mal wieder Hilfe. Ich habe mir eine HSrel5 angeschafft, kriege die aber nicht ans > > fliegen. Ich habe die Adresse "6" auf dem Baustein eingestellt. Der Befehl: > > hwcom.num(pcf.init()); liefert mir den Wert 64. Der Rückgabewert von pcf.init() ist ein Bitmuster mit allen gefunden PCF8574 bzw. ICs, die sich in dessen Adressbereich befinden. Mit PCF8574 und PCF8574A gibt es 16 mögliche Adressen. Die Bitposition des bzw. der High-Bits entspricht der Subadresse. Die Subadresse ist nicht die reale I²C-Bus-Adresse, sondern ein Adressindex beginnend bei 0 aller möglichen Adresse eins I²C-Slaves. Wenn Du den Rückgabewert 64 in Binärform anschaust, erkennst Du schnell Deine 6: 0b0000 0000 0100 0000 Ich habe hier für die Bits 0 bis 15 in Vierergruppen unterteilt, damit dies leichter erkennbar ist. > > Ich hätte getippt, dass ich das erste Relais mit > > pcf.on(14,0); einschalte und mit > > pcf.off (14,0) ausschalte. Es tut sich aber gar nichts. Hat jemand > > eine Idee? Das Teil hängt direkt am I2C-Bus der MAX-Rel8. Erstmal, was meinst Du mit "am I2C-Bus der Max-Rel8"? Hast Du die Relaisplatine einfach an den Klemmen durchgeschliffen, oder hast Du die Relaisplatine mit Puffer bzw. Extender und das HSRel5 dahinter angeschlossen? Wie kommst Du auf Subadresse "14", wenn Du über Jumper den Binärwert 6 eingestellt hast? Hast Du das HSRel5 mit oder ohne Option A bestellt? Der Rückgabewert von init() legt nahe, da� es ohne Option A ist. > wenn ich das I2C-Bus-Scan-Programm von Andre starte, dann bekomme ich die Adresse 76 > für die HSRel5 angegeben > > Addr. Write Read0 > 76 OK OK > Ist absolut korrekt: Der PCF8574 hat den Adressbereich 0x40 bis 0x4F Der PCF8574A entsprechend 0x70 bis 0x7F Die Adresse 76 (=0x4C) zeigt einen PCF8574 ohne A mit Addr.Jumper 0b110, also auf Subadresse 6. > > auf der Platine habe ich > A0->GND > A1->+5V > A2->+5V > eingestellt, das wäre doch Adresse 6,bzw. bei dem PCF-8574Baustein Addresse 14, oder? Wie kommst Du auf 14?? 14 wäre ein PCF8574A mit Jumper auf 0b110. Du hast aber eindeutig einen PCF8574 ohne A. > Was hat das nun mit Adresse 76 aus dem Scan zu tun? Das verstehe ich nicht! > Wie müsste denn meine Ansteuerung aussehen? Denn weder pcf.on(14,0) noch > pcf.on(76,0) funktionieren. Es gibt zwei Möglichkeiten. entweder Du schaust einfach mal ins Modul pcf.c2 rein. Oben sind die Adressen definiert. (Die Indizies 0-15 werden über Konstanten-Arrays auf die I²C-Bus-Adressen umgesetzt.) Oder, Du liest einfach mal die Hilfe-Datei von pcf.c2. (In der IDE F1 drücken => Hilfe zu den Modulen => pcf.c2) Als zulässige Werte für die (Sub-)Adresse im Modul pcf.c2 ist nur der Bereich 0 bis 15 zulässig. > ich habe jetzt die Platine direkt an die CC2-station gehängt und dieses Testprogramm geladen: > > thread main > { > stports.init(); > lcdext.init(); > lcdext.clear(); > i2c.init(); > pcf.init(); > loop > { > pcf.on(8,0); > sleep 2000; > pcf.off(8,0); > sleep 2000; > } > } > > Die Adress-Jumper habe ich alle auf 0 Gesetzt. Leider passier überhaupt nichts. Und wieder die Frage: wie kommst Du auf 8? Wenn Du einen PCF8574 ohne A hast, und dabei die Jumper alle auf GND stehen, dann ist das die Subadresse 0, da das die allererste mögliche Adresse darstellt. MfG André H. Antworten bitte nur ins Forum! Fragen per EMail auf Forum-Postings werden nicht beantwortet! Das macht meine Heizung gerade | ||
Antwort schreiben Antworten: Re: HSRel5 (von ChristianS - 25.09.2010 9:39) Re: HSRel5 (von André H. - 28.09.2010 8:16) |