[PIC®/AVR®/dsPIC®产品] 重启后MCU不能正常工作

[复制链接]
1059|23
 楼主| zyf部长 发表于 2022-6-11 17:15 | 显示全部楼层 |阅读模式
本帖最后由 pzsh 于 2022-6-25 15:54 编辑

PIC 16 单片机 write flash 按照行写 重启后MCU不能正常工作
llljh 发表于 2022-6-11 17:17 | 显示全部楼层
还有什么现象?能再详细描述下吗?
 楼主| zyf部长 发表于 2022-6-11 17:19 | 显示全部楼层
按照行(一行32个字)擦写后,重启后MCU不能正常起来,有引起反复重启 以及 电流从200MA下降至89MA两种
jlyuan 发表于 2022-6-11 17:23 | 显示全部楼层
用工具把整个flash读出来, 然后研究你刚刚操作的那段flash的内容, 看看是不是你期望的,
kangzj 发表于 2022-6-11 17:27 | 显示全部楼层
如果不是期望的就是错的咯, 看看错在哪里, 是地址错了,还是内容有误.
 楼主| zyf部长 发表于 2022-6-11 17:30 | 显示全部楼层
直接从菜单  window--->PIC memory views-->program memory看?
dengdc 发表于 2022-6-11 17:32 | 显示全部楼层
不完全是的..
先连上你的 烧录工具, 然后read一下,
zwll 发表于 2022-6-11 17:34 | 显示全部楼层

本帖子中包含更多资源

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

×
supernan 发表于 2022-6-11 17:37 | 显示全部楼层
最后才是在program memory里面看你操作的地址及对应内容..
juventus9554 发表于 2022-6-12 12:01 | 显示全部楼层
编译提示的占用space,是指生成的代码, 如果一句连一句, 实打实的需要1AA8H这么多条.
但是,实际上, 编译器将这些放到整个ROM区域, 可能不是连续.
dengdc 发表于 2022-6-12 12:03 | 显示全部楼层
我猜你这里想"空白利用"的意思, 或者说, 你是想在ROM拿一段区域出来自行擦写,自行存放数据用..
jlyuan 发表于 2022-6-12 12:05 | 显示全部楼层
你可以 在项目属性里面指定 你想要的ROM区域..如下图所示:
pengf 发表于 2022-6-12 12:07 | 显示全部楼层
看一下注释说明, 应该很清楚用法的哈..
huangchui 发表于 2022-6-12 12:09 | 显示全部楼层

本帖子中包含更多资源

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

×
dengdc 发表于 2022-6-12 12:12 | 显示全部楼层
看一下flash区域,别写道寄存器地址去了
 楼主| zyf部长 发表于 2022-6-12 12:16 | 显示全部楼层
请教pic里面的32位变量正确的定义和使用方式:
unsigned long int len;
unsigned int lenh, lenl;
lenh = 0x9988;
lenl = 0x7766;
//以上打印出来正确
len = (lenh <<16)|lenl;
lenh = (len & 0xffff0000) >> 16;
lenl = len&0x0000ffff;
//打印出来lenh  lenl分别是0000 FFEE
 楼主| zyf部长 发表于 2022-6-12 12:20 | 显示全部楼层
擦写地址指向到代码空间了。
xxrs 发表于 2022-6-12 12:22 | 显示全部楼层
你这个是PIC16, 8位机, 默认的long好像是24位的, 你需要改一下编译器的设置,改到更长才可以的....
huangchui 发表于 2022-6-12 12:25 | 显示全部楼层
len = (lenh <<16)|lenl;
此时lenh宽度不够,左移后数据不变。应该为
len = ((unsigned longlenh <<16)|lenl;
先将lenh扩转到32位,再移位。
yszong 发表于 2022-6-12 12:28 | 显示全部楼层
代码区被改了?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

694

主题

7102

帖子

8

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