完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛扫一扫,分享给好友
|
我试过行写和双字写。我似乎不能写Flash。排队的方法是掷铅球。我擦除0xA800的页面,然后写24字节(8个锁存器)来保存校准结构。我在使用Real ICE的调试器中,所以内存开始被擦除。提交看起来像是在写,但是第二个Get看到所有的0xFFFFFF……在写之后,我不能再进行调试,除非我拔掉Real ICE……MEM_ADDRESS是0xA800g_eedata,它是一个22字节的结构(我将2字节过去写入FLASH,但是读取端保护SRAM溢出)Legacy dsPIC33FJ程序集代码和一个XC16包装成功读取(测试了我最初将默认内容放入FLASH部分的位置):不抛出错误(UERR,WRERR)但看起来不写入的双字写入:
|
|
相关推荐
11个回答
|
|
|
也许会有助于查阅最新的勘误表(Rev)。l)。他们只添加了一些与你的问题相关的案例(47 CPU)。特别是当你使用汇编代码时。
|
|
|
|
|
|
在64K设备上,0xA800不是最后一个闪存页面吗?一个你不应该抹去的!为了保护,许多设备在配置删除时默认为完全保护。也许你的调试器发生了什么。注意不是所有的指令都是1个周期。建议:为了保护代码...DISI 1000....DISI 0如果您使用_builtin_DISI(1000),那么(0)您可以保护C语句,而不必计算指令或退化为程序集...
|
|
|
|
|
|
T Yorky-AB80是配置regs,所以AA00是关键块。在DISI上注意这一点很好,但是整个函数都封装在IPL=7中,在我调试的地方禁用中断。后来FreeRTOS都在iPL1 max……我说,我会记住这一点的许多端口位砰砰任务等。
|
|
|
|
|
|
编译器应该没问题(除非到目前为止您使用了一些“古董”版本,但是使用了汇编源代码……加上您可能不应该写入的方面。与短时间启动后捕获一些异常相反。您应该能够从重置开始正确地逐步识别这两种可能性……
|
|
|
|
|
|
我是肯定的(起初我不积极)。它要么在地址0(goto_reset)要么在地址4(陷阱的向量,不是在陷阱中)停止。在NVM地址中,或者写入的值被某种程度地破坏,我不写或擦除我不应该在哪里。我跟踪并观察NVMADR,所以如果它是字节地址,我就好了。如果它是一个指令号,我可能会有问题。此外,这个问题是“解决”的,因此是新线程。我用上面的代码执行得很好,而且写在LASH上假装成功,但是重读它显示了原始的价值…
|
|
|
|
|
|
“所以AA00是关键的块”“对不起,jcandle,您完全误解了内存映射……闪存页的边界是每0x400而不是0x200(许多设备都有0x800页)。在Flash上阅读手册部分。每页512英寸。每个指令是2个字(实际上是24位,带有幻像字节)地址在两个字中跳跃。ADDR位0总是0,很可能这是你的问题。在PIC33 FJ上工作,因为配置不存储在PROG Flash MEM T Yorky中。
|
|
|
|
|
|
谢谢。我的脑袋在字节和指令之间旋转。我以为是艾尔玛。现在关闭,并将测试风暴过后。
|
|
|
|
|
|
好奇的…芯片数据表说:“有两个NVM地址寄存器:NVMADRU和NVMADR。这两个寄存器在连接时形成用于编程操作的selectedword/row的24位有效地址(EA)或用于擦除操作的selectedpage。NVMADRU寄存器用于保存EA的上8位,而NVMADR寄存器用于保存EA的下16位。对于行编程操作,要写到程序闪存的数据被写到数据存储器空间(RAM)中,地址由NVMSRCADR寄存器定义(第一元素行内编程数据的位置)。Flash编程“没有提到这个寄存器对,明确地说写锁存器……这似乎是有效的!我说出现,因为我仍然需要实现未压缩格式,但我会称之为“解决”。
|
|
|
|
|
|
对不起,不能理解你要用这个线程做什么?你为什么编辑原来的文章?这将完全推翻任何人使用许多答复来解决他们的问题!!!!问题在于误解了闪存页面的布局并删除了将配置存储在页面的最后寄存器中的设备的最后一页。因此,任何人阅读这个。在实现这种配置技术的16位PIC(而不是全部)上,这是一个明确的“否”!不!”(除非你采取预防措施来防止“砌砖”)。作为对其他人的建议,为了避免丢失最后一页的其余部分(包含配置)的使用,可以在Linker Script...memory部分:HMA(xr):ORIGIN=0xA800,LENGTH=0x01F6DefinedSectionsofProgramMemory:/*SystemRoutines*/.HighMe中专门为该页分配一个内存区域mory: {*(.HighMemory);}>HMADefinitions/Declarations in C程序:define SctnC_OPSYS_.((.(.HighMemory"))使用示例:BYTE SctnC_OPSYS INTFLASH_SectorWrite(DWORD扇区_addr,BYTE*缓冲区,BYTE allowWriteToZero)注意,上面的示例在64K设备中使用,因此不需要fo远的定义。希望这有助于任何人阅读上述。T Yorky
|
|
|
|
|
|
我已经标记它解决了,就像我过去被指示的那样。这个问题不是一个高页的问题,因为我避免了数据表和FRM之间的不一致。在这种情况下,FRM是错误的,因为它说使用表写进行行编程,但是这个芯片添加了一个新的内存缓冲指针,并在后台完成所有RAM到FLASH的写操作。这是我最初的观点。我无法让芯片在任何地方写入,即使我真的不应该写入。解决方案是(除了适当地打包RAM缓冲区以及“假设”16位地址)无符号char buf[192]={0xFF};memcpy(buf,&g_eedata,sizeof(g_eedata));NVMSRCADRL=(无符号int)buf;NVMSRCADRH=0;
|
|
|
|
|
|
您好,重点在于数据表总是优先于FRM。FRM指的是通用操作,如果特定于dsPIC的实现不同于它,那么将在数据表中描述。
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
473 浏览 0 评论
5793 浏览 9 评论
2334 浏览 8 评论
2224 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3530 浏览 3 评论
1122浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
1095浏览 1评论
我是Microchip 的代理商,有PIC16F1829T-I/SS 技术问题可以咨询我,微信:A-chip-Ti
872浏览 1评论
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
473浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 21:33 , Processed in 0.844693 second(s), Total 92, Slave 75 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2438