<code>
//::::::::::::::::::::::::::::::::::::::::::::::::::::::
// Чтение EEPROM
//::::::::::::::::::::::::::::::::::::::::::::::::::::::
void GB_Read_EEPROM(void)
{
u32_t addr;
u8_t len, i;
u8_t __eeprom* ee_ptr = 0;
*(u32_t*)(u8_t*)&addr = *(u32_t*)(u8_t*)&gb.rx_buf[GB_RX_MEM_CNTRL_ADDR];
*((u8_t*)&addr + 3) = 0;
len = gb.rx_buf[GB_RX_MEM_CNTRL_DATA_LEN];
ee_ptr += (u16_t)addr;
if(((addr + len) <= EEPROM_SIZE) && (len <= GB_MAX_LEN_SUB_DATA) && (len != 0))
{
i = 0;
do
{
gb.tx_buf[GB_TX_MEM_CNTRL_DATA + i] = *(ee_ptr + i);
i++;
}while(i<len);
gb.tx_buf[GB_TX_ADDR] = gb.own_address;
gb.tx_buf[GB_TX_CMD] = GB_CMD_MEM_CNTRL;
gb.tx_buf[GB_TX_N] = len;
GB_Send_Pac();
}
else
{
GB_Send_Error(GB_ERR_MISMTH_PARAM);//Вернем код ошибки
}
}
//::::::::::::::::::::::::::::::::::::::::::::::::::::::
// Запись EEPROM
//::::::::::::::::::::::::::::::::::::::::::::::::::::::
void GB_Write_EEPROM(void)
{
u32_t addr;
u8_t len, i;
u8_t __eeprom* ee_ptr = 0;
*(u32_t*)(u8_t*)&addr = *(u32_t*)(u8_t*)&gb.rx_buf[GB_RX_MEM_CNTRL_ADDR];
*((u8_t*)&addr + 3) = 0;
len = gb.rx_buf[GB_RX_MEM_CNTRL_DATA_LEN];
ee_ptr += (u16_t)addr;
if(((addr + len) <= EEPROM_SIZE) && (len <= GB_MAX_LEN_SUB_DATA) && (len != 0))
{
i = 0;
do
{
*(ee_ptr + i) = gb.rx_buf[GB_RX_MEM_CNTRL_DATA + i];
i++;
}while(i<len);
GB_Send_Error(GB_ERR_NOT);
}
else
{
GB_Send_Error(GB_ERR_MISMTH_PARAM);//Вернем код ошибки
}
}
</code>