通过串口向ATmega128的EEPROM写入数据:
eprom_write(0x00, 0x0E, data_in);
每次上电时从EEPROM中读出:
eprom_read(0x00, 0x0E, data_out);
可是每次断电重启之后有时会出现读出数据出错的情况
请问该如何解决?
已经尝试了在熔丝位设置时设置Bodlevel启动电压2.7V或4.0V,同时勾选了EEPROM掉电保护。可是不管用
读写程序如下:
/*EEPROM读取函数*/
/*addr:地址;number:长度;p_buff:读出数据存放指针*/
void eprom_read(unsigned int addr, unsigned char number, unsigned char *p_buff) {
while(EECR & (1 << EEWE)); /* 等待上一次写操作结束 */
while(number --) {
EEAR = addr ++; /* 设置地址寄存器 */
EECR |= (1 << EERE); /* 置位EERE 读使能 */
*p_buff++ = EEDR;
}
}
/*EEPROM写入函数*/
/*addr:地址;number:长度;p_buff:写入数据存放指针*/
void eprom_write(unsigned int addr, unsigned char number, unsigned char *p_buff) {
while(number --) {
while(EECR & (1 << EEWE)); /* 等待上一次写操作结束 */
EEAR = addr ++; /* 设置地址寄存器 */
EEDR = *p_buff ++; /* 设置数据寄存器 */
EECR |= (1 << EEMWE); /* 置位EEMWE 主机写使能*/
EECR |= (1 << EEWE); /* 置位EEWE 写使能*/
}
} |