Line 28... |
Line 28... |
|
|
/* *********************************************************************
|
/* *********************************************************************
|
***** global variables **********************************************
|
***** global variables **********************************************
|
********************************************************************* */
|
********************************************************************* */
|
xdata WORD eeprom_addr;
|
xdata WORD eeprom_addr;
|
xdata WORD eeprom_length;
|
|
xdata WORD eeprom_write_bytes;
|
xdata WORD eeprom_write_bytes;
|
xdata BYTE eeprom_write_checksum;
|
xdata BYTE eeprom_write_checksum;
|
|
|
|
|
/* *********************************************************************
|
/* *********************************************************************
|
***** i2c_waitWrite *************************************************
|
***** i2c_waitWrite *************************************************
|
********************************************************************* */
|
********************************************************************* */
|
/* Do the necessary steps after writing I2DAT register. Returns 1 on error. */
|
/* Do the necessary steps after writing I2DAT register. Returns 1 on error. */
|
BYTE i2c_waitWrite()
|
BYTE i2c_waitWrite()
|
Line 200... |
Line 200... |
/* *********************************************************************
|
/* *********************************************************************
|
***** EP0 vendor request 0x38 ***************************************
|
***** EP0 vendor request 0x38 ***************************************
|
********************************************************************* */
|
********************************************************************* */
|
BYTE eeprom_read_ep0 () {
|
BYTE eeprom_read_ep0 () {
|
BYTE i, b;
|
BYTE i, b;
|
b = ( eeprom_length > 64 ) ? 64 : eeprom_length;
|
b = ep0_payload_transfer;
|
i = eeprom_read(EP0BUF, eeprom_addr, b);
|
i = eeprom_read(EP0BUF, eeprom_addr, b);
|
eeprom_addr += b;
|
eeprom_addr += b;
|
eeprom_length -= b;
|
|
return i;
|
return i;
|
}
|
}
|
|
|
ADD_EP0_VENDOR_REQUEST((0x38,, // read from EEPROM
|
ADD_EP0_VENDOR_REQUEST((0x38,, // read from EEPROM
|
eeprom_addr = (SETUPDAT[3] << 8) | SETUPDAT[2]; // Address
|
eeprom_addr = (SETUPDAT[3] << 8) | SETUPDAT[2]; // Address
|
eeprom_length = (SETUPDAT[7] << 8) | SETUPDAT[6]; // size
|
|
EP0BCH = 0;
|
EP0BCH = 0;
|
EP0BCL = eeprom_read_ep0();
|
EP0BCL = eeprom_read_ep0();
|
,,
|
,,
|
EP0BCH = 0;
|
EP0BCH = 0;
|
EP0BCL = eeprom_read_ep0();
|
EP0BCL = eeprom_read_ep0();
|
Line 230... |
Line 228... |
|
|
ADD_EP0_VENDOR_COMMAND((0x39,, // write to EEPROM
|
ADD_EP0_VENDOR_COMMAND((0x39,, // write to EEPROM
|
eeprom_write_checksum = 0;
|
eeprom_write_checksum = 0;
|
eeprom_write_bytes = 0;
|
eeprom_write_bytes = 0;
|
eeprom_addr = ( SETUPDAT[3] << 8) | SETUPDAT[2]; // Address
|
eeprom_addr = ( SETUPDAT[3] << 8) | SETUPDAT[2]; // Address
|
EP0BCL = 1;
|
|
,,
|
,,
|
eeprom_write_ep0(EP0BCL);
|
eeprom_write_ep0(EP0BCL);
|
));;
|
));;
|
|
|
/* *********************************************************************
|
/* *********************************************************************
|