打印
[PIC®/AVR®/dsPIC®产品]

如何对PIC24F系列的程序存储器进行擦、写操作

[复制链接]
1512|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
青鸟的虚像|  楼主 | 2015-8-25 14:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这几天在弄擦、写一直没成功,其中在开启编程序列时需要将闪存控制寄存器NVMCON的WR位置1,才能启动编程/擦除,但是为什么我用“BSET NVMCON,#WR"进行置1操作后,查看NVMCON寄存器却发现WR位的值没有发生变化。当然,写程序存储器的根本没实现。
沙发
青鸟的虚像|  楼主 | 2015-8-25 14:12 | 只看该作者
麻烦清除的亲帮帮忙谢谢,已经困扰好多天了,依然没什么进展。

使用特权

评论回复
板凳
青鸟的虚像|  楼主 | 2015-8-26 14:51 | 只看该作者
“    DISI #5 ; Block all interrupts with priority <7
                 ; for next 5 instructions
    MOV.B      #0x55, W0
    MOV        W0, NVMKEY ; Write the 0x55 key
    MOV.B     #0xAA, W1 ;
    MOV        W1, NVMKEY ; Write the 0xAA key
    BSET       NVMCON, #WR ; Start the erase sequence
    NOP   ; Insert two NOPs after the erase
    NOP   ; command is asserted”
这是我启动擦、写时的启动序列,查了好多资料,提供的例程也都和这个是一样的。只是一直不明白为什么执行“BSET       NVMCON, #WR ”后WR位没有置1.

使用特权

评论回复
地板
青鸟的虚像|  楼主 | 2015-8-26 14:56 | 只看该作者
然后发现,如果把
MOV.B      #0x55, W0
MOV        W0, NVMKEY ; Write the 0x55 key
MOV.B     #0xAA, W1 ;
MOV        W1, NVMKEY ; Write the 0xAA key
这几步去掉,直接执行“BSET       NVMCON, #WR”的话,NVMCON的WRERR位(写序列错误标志位)就会报错。
而执行完这几步再执行“BSET       NVMCON, #WR”的话,NVMCON的WRERR位(写序列错误标志位)不会报错。
所以我猜测,擦/写程序已经正常执行了。
但是因为某些原因所以查看NVMCON寄存器却看不到WR位的值没有置1。
以上只是个人猜测,如果有更好的解释欢迎继续交流。

使用特权

评论回复
5
StevenLau2008| | 2015-9-7 13:54 | 只看该作者

Microchip:

TEL:13148736025
QQ:359920019

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

37

帖子

1

粉丝