- unsigned char page_hi;
- unsigned char page_lo;
- int b = bytes;
-
- while(b > 0){
- page_hi = addr >> 8;
- page_lo = addr & 0xff;
-// i2c_eeprom_write_1block(i2caddr, page_hi, page_lo, data);
- i2c_eeprom_bytewrite(i2caddr, addr, *data);
+ unsigned int b = bytes;
+ unsigned int bb;
+ unsigned char sts;
+
+ if((addr % I2C_ROM_PAGE_SIZE) != 0) {
+ bb = I2C_ROM_PAGE_SIZE - (addr % I2C_ROM_PAGE_SIZE);
+ if(b <= bb) bb = b;
+ sts = i2c_eeprom_write_1block(i2caddr, addr, data, bb);
+ b -= bb;
+ addr += bb;
+ data += bb;
+ }
+ if(sts == 0) return 0;
+
+ while(b >= I2C_ROM_PAGE_SIZE){
+ sts = i2c_eeprom_write_1block(i2caddr, addr, data, I2C_ROM_PAGE_SIZE);