#include #define BOARD_POWER 9 #define BOARD_WP 8 void setup() { delay(10000); Serial.begin(9600); pinMode(BOARD_POWER, OUTPUT); digitalWrite(BOARD_POWER, HIGH); pinMode(BOARD_WP, OUTPUT); digitalWrite(BOARD_WP, LOW); Serial.println("\nDTM0660 EEPROM dumper and updater."); Wire.begin(); Serial.println("Waiting for DTM0660 POST and i2c Bus to settle."); delay(3000); } void loop() { byte error, address; int nDevices; Serial.println("Scanning..."); nDevices = 0; for (address = 1; address < 127; address++ ) { Wire.beginTransmission(address); error = Wire.endTransmission(); if (error == 0) { Serial.print("\nI2C device found at address 0x"); if (address < 16) { Serial.print("0"); } Serial.print(address, HEX); Serial.println(" "); dump24c02(address); VLCD(); extendPowerOn(); extendBacklightOn(); nDevices++; } else if (error == 4) { Serial.print("Unknow error at address 0x"); if (address < 16) Serial.print("0"); Serial.println(address, HEX); } } if (nDevices == 0) Serial.println("No I2C devices found\n"); else Serial.println("\nDone.\n"); delay(5000); } void dump24c02(byte i2cAddress) { int addrPointer = 0; int romLength = 0xff; // 24c02 - 256x8 bits (256 bytes) byte b = 0; Serial.println("-- : 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F"); while (addrPointer <= romLength) { if (!(addrPointer % 16)) { Serial.print("\n"); if (addrPointer < 16) { Serial.print("0"); } Serial.print(addrPointer, HEX); Serial.print(" : "); } b = i2c_eeprom_read_byte(i2cAddress, addrPointer); addrPointer++; if (b < 0x10) { Serial.print("0"); } Serial.print(b, HEX); Serial.print(" "); } Serial.println(" "); } byte i2c_eeprom_read_byte( int deviceaddress, unsigned int eeaddress ) { Wire.beginTransmission(deviceaddress); Wire.write((int)eeaddress); Wire.endTransmission(); Wire.requestFrom(deviceaddress, 1); if (Wire.available()) { return Wire.read(); } else { return 0xff; } } void i2c_eeprom_write_byte( int deviceaddress, unsigned int eeaddress, byte data ) { digitalWrite(BOARD_WP, LOW); delay(100); int rdata = data; Wire.beginTransmission(deviceaddress); Wire.write((int)(eeaddress)); // Wire.write(rdata); Wire.endTransmission(); //digitalWrite(BOARD_WP, HIGH); } void extendPowerOn() { Serial.println("Extending Power On time"); i2c_eeprom_write_byte(0x50, 0xFB, 0x0); Serial.println("Done"); } void extendBacklightOn() { Serial.println("Extending Backight On time"); i2c_eeprom_write_byte(0x50, 0xFC, 0x0); Serial.println("Done"); } void VLCD() { Serial.println("Setting LCD bias to 3.3V"); i2c_eeprom_write_byte(0x50, 0xF9, 0xC3); Serial.println("Done"); }