///////////////////////////////////////////////////////////////////////////
////   Library for a MicroChip 24C65                                   ////
////                                                                   ////
////   init_ext_eeprom();    Call before the other functions are used  ////
////                                                                   ////
////   write_ext_eeprom(a, d);  Write the byte d to the address a      ////
////                                                                   ////
////   d = read_ext_eeprom(a);   Read the byte d from the address a    ////
////                                                                   ////
////   The main program may define eeprom_sda                          ////
////   and eeprom_scl to override the defaults below.                  ////
////                                                                   ////
///////////////////////////////////////////////////////////////////////////
////        (C) Copyright 1996,1997 Custom Computer Services            ////
//// This source code may only be used by licensed users of the CCS C   ////
//// compiler.  This source code may only be distributed to other       ////
//// licensed users of the CCS C compiler.  No other use, reproduction  ////
//// or distribution is permitted without written permission.           ////
//// Derivative programs created using this software in object code     ////
//// form are not restricted in any way.                                ////
////////////////////////////////////////////////////////////////////////////

// can be used for FRAM FR24C65

//this is already defined in core.c
//#ifndef EEPROM_SDA
//#define EEPROM_SDA  PIN_C5
//#define EEPROM_SCL  PIN_C4
//#endif
//#use i2c(master,sda=EEPROM_SDA, scl=EEPROM_SCL)

#define hi(x)  (*(&x+1))

#define EEPROM_ADDRESS long int
#define EEPROM_SIZE    8192

void init_ext_eeprom() {
   output_float(i2c_scl);
   output_float(i2c_sda);
}


void write_ext_eeprom(long int address, byte data) {

   i2c_start();
   //i2c_write(0xa0);
   i2c_write(0xa2);
   i2c_write(hi(address));
   i2c_write(address);
   i2c_write(data);
   i2c_stop();
   delay_ms(11);
}


byte read_ext_eeprom(long int address) {
   byte data;

   i2c_start();
   //i2c_write(0xa0);
   i2c_write(0xa2);
   i2c_write(hi(address));
   i2c_write(address);
   i2c_start();
   //i2c_write(0xa1);
    i2c_write(0xa3);
   data=i2c_read(0);
   i2c_stop();
   return(data);
}


