ATmega128内部EEPROM数据掉电丢失的问题?

2019-03-24 20:42发布

通过串口向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 写使能*/
                }
} 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1条回答
chunyang
2019-03-25 03:05
 精彩回答 2  元偷偷看……0人看过

一周热门 更多>