完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
嗨,我试图控制一个128×64 OLED屏幕的基本成功,并遇到了一个数组的问题。我需要一个保存1024字节值的缓冲数组通过I2C将其内容发送到屏幕。I2C通信工作正常,但当我从缓冲数组中删除const关键字时,它找不到合适的值,PIC只发送0x8F(用Salea Logic分析)。我附带了项目(pic18_i2c.X.zip),可以在缓冲区数组初始化之前输入const关键字进行测试。这一个无效:如果我修改并添加const关键字,那么这一个有效:两种情况下其余代码相同:工具链:PIC18F25J50MPLAB-X 3.51XC8 1.31Pherip用PICKit2Attachements上传的erial Library 2.00rc3Hex:const.zip-Logic捕获,当用常数数组(在程序内存中的数组)编译时使用withoutconst.zip-Logic捕获,当用非常数数组(在数据部分中的数组)编译时使用pic18_i2c.X.zip-projectconst.jpg-d上的结果当数组为常数时,当数组不常量时显示结果
Zip(27.06 KB)-下载42次PIC18FI2C.X.Zip(154.95 KB)-下载44次 |
|
相关推荐
11个回答
|
|
自从我使用XC8编译器已经很久了,但是您可能会遇到这样的问题,即“const”值存储在ROM中,而非“const”值存储在RAM中。XC8编译器可以很好地计算出要使用的正确代码(获取表单RAM和ROM需要不同的指令),但我注意到,在“buf”指针声明中没有const限定符。因此,编译器可能试图读取RAM时,它应该是从ROM读取。只是猜测…苏珊
|
|
|
|
无论BUF指针是否“const”,它都应该工作。当表位于ROM(具有const Qualfor)时,用TBLPTR=BUF、TBLRD和TabLAT访问。当表位于RAM中时,用FSRX=BUF和INDFx访问。
|
|
|
|
是的,它应该工作摊位的情况下,但它不是工作例外,当它是建立没有const关键字。这就是我提出问题的反常原因。我根本看不出我做错了什么,这就是我在第一篇文章中附加完整项目的原因。也许是我要说的一些配置单词或者我错过了什么。我试着关闭优化来构建,编译的十六进制文件更大,但是我没有看到输出有任何变化。我禁用了看门狗计时器,看看它是否是异常的根源,但是发生了同样的事情。
|
|
|
|
在第一个帖子中有一个项目zip文件,它包含一个带有所有链接器和映射文件的内置版本。在这个项目的状态下,我不使用中断,为什么我要处理ISR?
|
|
|
|
嗨,如果你使用const,编译器会自动把数组放入FLASH。如果你不放const,编译器会把数组放入RAM。两个版本之间有什么变化是访问Flash或访问RAM的时机。我会在线性之后使用断点进行调试。实际上我会创建一个全局的变量数据,并在调试模式(监视窗口)中添加行和检查数据值,看看发生了什么……
|
|
|
|
嗨,你能告诉我如何在模拟器中调试它吗?如果我试着调试,它会在步骤中挂起(一直等待)。有没有办法在这一点上发送一个ACK到模拟器?
|
|
|
|
如果它卡在I2C1中,那么您的I2C总线有问题。因为它是模拟器,它可能不完全支持I2C外围设备。您检查了哪个位导致该函数指示“非空闲”吗?你不能发送一个ACK直到它空闲。
|
|
|
|
嗨,这个步骤只停留在模拟器中,在真实的硬件中,它发送垃圾并且正常地返回ACK(正如在第一篇文章的附件中可以看到的)。所以我想用I2C模拟项目并不容易(或者说不可能)。也许如果我注释掉所有的IdleI2C1。()命令,它可能会跨过…
|
|
|
|
你好,bbb,忘记模拟器……真实生活=真实硬件。你在模拟器中看到的任何问题都更有可能成为模拟问题(模拟器错误)而不是真正的硬件问题。所以你可能会白白浪费时间……
|
|
|
|
嗨,通过真正的硬件调试(开始时很痛苦,因为MPLAB-X不能连接/不能获得错误消息),我发现问题不在于指针,而在于数据本身。应该是。但是,如果它不是常数,那么它只是垃圾,在I2C行上正确地发送。所以真正的问题是,如果它位于数据区段,为什么编译器要从我的无符号数组中产生垃圾?
|
|
|
|
嗨,我终于可以解决这个问题了,我的显示终于工作了。它是两个小步骤,导致成功。1)将XSIT配置为OFF2)将数组创建为静态的,在用数据填充缓冲区数组之后,不必用DATANOW填充它。很好,谢谢大家!PS:如何将这个主题标记为已解决?我不能把我的答案标记为解决方案…
|
|
|
|
只有小组成员才能发言,加入小组>>
5158 浏览 9 评论
1997 浏览 8 评论
1926 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3168 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2222 浏览 5 评论
722浏览 1评论
605浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
492浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
619浏览 0评论
518浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-18 19:21 , Processed in 1.500746 second(s), Total 98, Slave 81 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号