Re: Abfrage der Eingänge am PCF 8575 Kategorie: Programmierung (von André H. - 10.04.2004 15:24) | ||
Als Antwort auf Re: Abfrage der Eingänge am PCF 8575 von Heribert.Sch - 9.04.2004 20:54 | ||
| ||
Hallo Heribert, Du machst leider einen grundlegenden Fehler bei der I²C-Bus-Kommunikation. i2c.readlast() darf man nur einsetzen, wenn danach die Kommunikation mit i2c.stop() abschnlie�en will. Darum das last in readlast(). :-) Frag den Baustein einmal folgenderma�en ab, dann wird es funzen: function getw(byte addr) returns int // Abfrage des Wordports des PCF8575 {int data; i2c.cstart(AddrR[addr]); data=i2c.read() or (i2c.readlast() shl 8); i2c.stop(); return data; } Zur Einzelportabfrage kann man dann so schreiben: function getw(byte addr, byte port) returns int // Abfrage des Wordports des PCF8575 {int data; i2c.cstart(AddrR[addr]); if port>=8 data=i2c.read() or (i2c.readlast() shl 8); else data=i2c.readlast(); i2c.stop(); return (data and (1 shl port))!=0; } MfG André H. > Hallo, > > nun ja irgendwie klapt es immer noch nicht hier mein Beispiel : > > function get(byte addr,byte port) returns int > {byte state,state2; > i2c.cstart(AddrR[addr]); > state=i2c.readlast(); > if addr==0 state2=i2c.readlast(); > i2c.stop(); > if port <=7 return (state and (1 shl port))!=0; > else return (state2 and (1 shl (port-8)))!=0; > } > > thread lcd > > { > loop { > > if get (0,15)!=0 pcflcd.setLight (1); > > }} > > was mach ich falsch ?? > > Mfg > > Heribert Antworten bitte nur ins Forum! Fragen per EMail auf Forum-Postings werden nicht beantwortet! Das macht meine Heizung gerade | ||
Antwort schreiben Antworten: |