[PIC®/AVR®/dsPIC®产品] pic18F26k22 bootloader EEPROM 编程失败

[复制链接]
641|15
 楼主| huangchui 发表于 2022-7-10 12:16 | 显示全部楼层 |阅读模式
本帖最后由 pzsh 于 2022-7-21 11:45 编辑

bootloader 和项目程序都正常,就是EEPROM不能编程
dengdc 发表于 2022-7-10 12:19 | 显示全部楼层

然后呢?你是怎么应对这个的呢        
 楼主| huangchui 发表于 2022-7-10 12:22 | 显示全部楼层
EEPROM的OFFSET 已更改是多少?
jlyuan 发表于 2022-7-10 12:31 | 显示全部楼层
0x00不对?
 楼主| huangchui 发表于 2022-7-10 12:34 | 显示全部楼层
不对,默认也不对
xxmmi 发表于 2022-7-10 12:37 | 显示全部楼层
Flash烧录正常吗?
stly 发表于 2022-7-10 12:59 | 显示全部楼层
嗯,程序运行正常
pengf 发表于 2022-7-10 13:03 | 显示全部楼层
就是eeprom的数据不能写入?
 楼主| huangchui 发表于 2022-7-10 13:06 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| huangchui 发表于 2022-7-10 13:08 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
yszong 发表于 2022-7-10 13:12 | 显示全部楼层
用这些操作,在应用程序里能否对EEPROM操作
dingy 发表于 2022-7-10 13:14 | 显示全部楼层

发完整的数据包帮你看一下
xxrs 发表于 2022-7-10 13:17 | 显示全部楼层
跟踪调试一下。
 楼主| huangchui 发表于 2022-7-10 13:20 | 显示全部楼层
回过来看了手册,又仔细检查程序发现为MCC产生的Bootloader 的代码的问题。
heweibig 发表于 2022-7-10 13:23 | 显示全部楼层
EEADR自动产生为为 EEADRL,实际没有此地址,当时就 改为uint8_t EEADRL,导致写入地址错误。
以下为更改正确的代码。

uint8_t  Write_EE_Data()
{
    EEADR = frame.address_L;
    EEADRH = frame.address_H;
        EECON1 = 0x04;  //   b'00000100';     // Setup for EEData
    for (uint8_t i = 0; i < frame.data_length; i++)
    {
        while (EECON1bits.WR == 1);  // wait until previous write complete
        EEADR = frame.address_L + i;
        if (EEADR == 0x00)
        {
            ++ EEADRH;
        }
        EEDATA = frame.data;
        StartWrite ();
    }
    frame.data[0] = COMMAND_SUCCESS;
    return 10;
}00';     // Setup for EEData
 楼主| huangchui 发表于 2022-7-10 13:26 | 显示全部楼层
明白了,多谢大家讨论这么多哈
您需要登录后才可以回帖 登录 | 注册

本版积分规则

918

主题

12323

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部