Arm_LAMPSCH / EEPROM_P4
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers eepromlib.h Source File

eepromlib.h

00001 
00002 #ifndef  EEPROMBUFFERSIZE 
00003 #define  EEPROMBUFFERSIZE   32 
00004 #endif
00005 
00006 
00007 
00008 #define bitchk(var,pos) ((var) & (1<<(pos)))
00009 
00010 
00011 char eedata[EEPROMBUFFERSIZE];
00012 
00013 void eeprom_delay(int delaytime)
00014 {
00015   wait_ms(delaytime);
00016 }
00017 
00018 
00019 void load_eeprom()
00020 {
00021     char ERR=0;
00022     char data[3];       
00023     //printf("Setting read pointer to 0\n");
00024     data[0] = 0;                   // MSB address
00025     data[1] = 0;                   // LSB address
00026     if(Wire.write(0xA0, data, 2)) 
00027     { // send address, but no data
00028        // error("Write failed\n");
00029        ERR+=2;
00030     }    
00031 
00032     if(Wire.read(0xA0, eedata, EEPROMBUFFERSIZE)) 
00033     {
00034      //error("Read failed\n");
00035       ERR+=4;
00036     }    
00037     
00038 //Count Variable ...
00039 if (ERR==0)
00040 { //transfer data to working memory
00041   /*
00042   TIME_SEC    = eedata[0]; 
00043   TIME_dSEC   = eedata[1];
00044   MODE_TD_TS  = eedata[2];
00045   MODE_RANGE  = eedata[3];
00046   OPTION      = eedata[4];    
00047    */
00048  }  
00049  
00050  /*
00051   DEBUG
00052   char str[50];
00053   sprintf (str, "%d#%d:%d:%d",ERR,eedata[0],eedata[1],eedata[2] );
00054   LCDI2C4Bit_cursorTo(0,0);
00055   LCDI2C4Bit_printIn(str);
00056   
00057   sprintf (str, "%d:%d",eedata[3],eedata[4] );
00058   
00059   LCDI2C4Bit_cursorTo(2,0);
00060   LCDI2C4Bit_printIn(str);
00061   
00062   LCDI2C4Bit_backLight(true);
00063   
00064   while(1); 
00065   */
00066 }    
00067 
00068 
00069 
00070 
00071 void save_eeprom()
00072 {
00073 char ERR=0;
00074 char i=0;   
00075  
00076  
00077  /*
00078  eedata[0] = TIME_SEC;  
00079  eedata[1] = TIME_dSEC;
00080  eedata[2] = MODE_TD_TS;
00081  eedata[3] = MODE_RANGE;
00082  eedata[4] = OPTION;
00083 */
00084         
00085     char data[3];
00086     
00087     for ( i=0;i<=(EEPROMBUFFERSIZE-1);i++)
00088     {
00089        data[0] = 0;              // MSB address
00090        data[1] = i;              // LSB address
00091        data[2] = eedata[i];      // data
00092      
00093        if(Wire.write(0xA0, data, 3)) 
00094        {
00095          //error("Write failed\n");
00096          ERR+=1;
00097         }
00098         //delay(75);
00099      
00100         while(Wire.write(0xA0, NULL, 0))
00101         { // wait to complete , this may cause system hang!!
00102           
00103      
00104         }     
00105         eeprom_delay(42); ////delay for EEPROM 40 ms OK
00106      
00107     }
00108         
00109    
00110 }