Re: Evtl. Fehler im Modul eeprom.c2 Kategorie: I²C-Bus (von Rolf - 13.07.2003 15:08) | |
Als Antwort auf Re: Evtl. Fehler im Modul eeprom.c2 von Rolf - 13.07.2003 13:44
| |
Hallo Andrè, Noch mal zur �bersicht die beiden strittigen Funktionen: /**Schreibzugriff einleiten****************************************/ function write(byte eepromaddr,int addr) returns int { byte i; i=0; //--Bugfix by AH. eepromaddr= 160 or (eepromaddr shl 1); loop { if i2c.start(eepromaddr) break; i2c.stop(); //--RD./AH. stop nach Fehlschlag if i>=100 return FALSE; release; //--RD. gibt thread frei i=i+5; //--RD. thread ist frei sleep 5; //--RD. thread ist frei für 5ms //i=i+1; //--RD. alt //sleep 1; //--RD. alt capture i2c.flag; //--RD. setzt thread gesperrt } i2c.write(addr shr 8); i2c.write(addr); return TRUE; } /**Lesezugriff einleiten*******************************************/ function read(byte eepromaddr,int addr) returns int {byte i; i=0; eepromaddr= 160 or (eepromaddr shl 1); loop { if i2c.start(eepromaddr) break; if i>=100 return FALSE; i2c.stop(); //--RD./AH. stop nach Fehlschlag if i>=100 return FALSE; release; //--RD. gibt thread frei i=i+5; //--RD. thread ist frei sleep 5; //--RD. thread ist frei für 5ms //i=i+1; //--RD. alt //sleep 1; //--RD. alt capture i2c.flag; //--RD. setzt thread gesperrt } i2c.write(addr shr 8); i2c.write(addr); i2c.start(eepromaddr or 1); return TRUE; } Alle weiteren Funktionen gegenüber meiner letzten Version unverändert. Ich teste sie grade und es schaut prima aus... Gru� Rolf | |
Antwort schreiben Antworten: |