Example #1
0
void SaveEepromBoardConfig()
{
	// 
	// Save Board Cnfiguration to EE
	//

	_prog_addressT EE_addr;
	int i=0, *DMAdx;
	int test=0;
	int test1=0;
	
	// initialize a variable to represent the Data EEPROM address 
	_init_prog_address(EE_addr, ee_data);
	
	// Erase Data EEPROM at ee_data  
	for(i=0 ; i < sizeof(BoardConfig) ; i++)
	{
	  _erase_eedata(EE_addr++, _EE_WORD);
	  _wait_eedata();
	}
	
	// Write BoardConfig to Data EEPROM
	_init_prog_address(EE_addr, ee_data);
	DMAdx = (int*) &BoardConfig;
	for(i=0 ; i < sizeof(BoardConfig) ; i++)
	{
	  _write_eedata_word(EE_addr, *DMAdx );
	  EE_addr+=2;
	  DMAdx++;
	  test++;
	  test1=sizeof(BoardConfig);
	  _wait_eedata();
	}
	test=test+1;
}
Example #2
0
void ee_word_write(unsigned int offset, int data)
{
#ifdef USE_EEPROM
	_prog_addressT p;
	_init_prog_address(p, eeData);
	p += offset;
	asm volatile ("disi #5"); // Disable Interrupts For 5 Instructions (TODO, validate the number of cycles)
	_erase_eedata(p,_EE_WORD);	
	_wait_eedata();
	asm volatile ("disi #5"); // Disable Interrupts For 5 Instructions (TODO, validate the number of cycles)
	_write_eedata_word(p,data);	
	_wait_eedata();
#else
#warning "ee_word_write NOT using EEPROM, Flash implementation not (yet) available."
#endif
}
Example #3
0
void my_eeprom_write_int(Eeprom* eeprom_, unsigned long index, unsigned char value) {
    if (index >= EEPROM_30F_MAX_INDEX) {
        writeError(EEPROM_OUT_OF_BOUNDS);
        return;
    }
    _prog_addressT EE_addr;

    // initialize a variable to represent the EEPROM address
    _init_prog_address(EE_addr, eeData);

    _erase_eedata(EE_addr + (index * _EE_WORD), _EE_WORD);
    _wait_eedata();

    // write value
    _write_eedata_word(EE_addr + (index * _EE_WORD), value);
    _wait_eedata();
}
Example #4
0
/*************************************
 * Initialize EEPROM
 *************************************/
void InitEEPROM(void)
{
    /* initialize a variable to represent the Data EEPROM address */
    _init_prog_address(EE_addr, parameters_EEPROM);
    
    _init_prog_address(EE_is_blank_addr, EE_is_blank);
    
    /*Copy blank status flag from from DataEEPROM to RAM*/
    _memcpy_p2d16(&EE_is_blank_RAM, EE_is_blank_addr, _EE_WORD);
    
    if(EE_is_blank_RAM != 0x3FFF)
    {
        StoreEEPROMparams();
        
        EE_is_blank_RAM = 0x3FFF;
        _erase_eedata(EE_is_blank_addr, _EE_WORD);
        _wait_eedata();
        _write_eedata_word(EE_is_blank_addr, EE_is_blank_RAM);
        _wait_eedata();
    }
}