完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我有一个奇怪的问题与我的两个PIC16F628 A微控制器,我收到的样本为Microchip。我正在测试USART通信(重点在同步部分),并且有两个微芯片,一个作为接收器,一个作为发射器。问题是,在没有被切断的情况下,我似乎无法传输超过4字节的数据。在我解释这个问题之前,我会发布一些环境的示例代码。我正在运行XC8编译器,并在MPLABSIPPE上读取读取的EEPROM。这是我用来传输数据的代码,这些字符存储在无符号字符msg[]中;这是我的接收代码。不要发送数据。例如,如果我的消息是Hello,我打开两个微芯片,从接收机读出EEPROM,那么我所得到的就是HellHellHellHellHellHellHellHellHell……。它从不发送O?或者O从未被正确地记录/接收?这个词和所有单词一样,长度小于4个字符。如果尝试设置无符号字符msg[]="Cat";在EEPROM中得到以下结果:Cat.Cat.Cat.Cat.Cat.Cat.Cat.Cat.Cat.这个。是一个0x00在十六进制表示没有数据…正在发生什么,为什么会发生这种情况?另外,我的波特率是4MHz设置为9.615,或者SPBRG的十进制值是103。另外,一个设置为同步主传输,另一个设置为数据表之后的同步从接收。
|
|
相关推荐
7个回答
|
|
您可能需要给MSG[]一个大小,以确保它分配足够的内存。你在告诉编译器thATSF[]]“猫”,所以编译器很可能只分配3字节来保存MSG(或者4)?对于空终止符?)熟悉编译器的人可能会确认/拒绝这个.tryunsigned char msg[10]="Cat";然后查看是否遇到相同的问题。
|
|
|
|
您的代码:将总是发送5(最初我在这里有4个OOP)字符,for…下一个循环是如此指定的。当更改字符串长度时,是否更改了限制(i和lt?5)?通常最好使用while循环(而不是for-next)并循环直到(msg==0)(即0),这是字符串结束指示符(NULL字符)。确保您的字符串始终具有NULL(0x00)作为最后一个字节/字符。(编译器在分配时为您这样做,就像您所做的那样:
|
|
|
|
(1)你有意发送五字节吗?0′C′1′a′2′t′3 0x00 4未知垃圾〔2〕您是否允许EEPROM写需要几毫秒?最好保存到RAM,然后在获得NULL终止符时写入EEPROM。或者,使用中断来接收,并将字节保存到RAM中的循环缓冲区中,这样EEPROM写入延迟不会导致您错过传入的字节。
|
|
|
|
对不起,让我再清楚一点…我意识到我在IDE中编辑了部分代码,但没有在这里发布编辑后的版本。在发送消息“Hello”时,我将其声明为无符号char msg[]=“Hello”;并且我将forloop设置为5个字符(i<5)。因为Hello有5个字符。在更改字符串时,更改for循环长度。当我读到微芯片时,我得到的是“地狱地狱地狱”一直重复到最后,这意味着o从来没有发送过。我有点不确定我该如何去做一些涉及中断或保存到RAM的事情?在编写EEPROM之前,是否有任何示例代码可以理解如何使用中断和/或保存到RAM中。是否可以简单地创建一个临时变量来存储传入的数据,然后将该变量发送给函数?
|
|
|
|
当他说保存到RAM时,他只需在PIC上写入缓冲区/变量即可。除非另有说明,否则编译器将变量定位在RAM中(例如,const将声明变量为常数并将其写入ROM)。无符号字符rcvd[10]将作为10字节缓冲区进行简化。进入EEPROM。
|
|
|
|
在接收时,您似乎没有测试任何错误。如果您得到一个OERR(溢出错误-通常由波特率错误引起),接收器将停止接收直到错误被清除。可能不是目前的问题,但可能是在某个时刻。
|
|
|
|
稍微后退一点。您真的希望从设备继续向EEPROM写入字节流,还是实际向从设备发送固定大小的数据包?如果您能以某种方式告诉从机您已经发送了所有数据,例如通过发送一个空值,那么您可以不中断地完成这项工作,但是首先将数据保存到RAM缓冲区中。/www. GooLuMun.M.AU/PIC-教程/MIDRONGE-PIC-样本
|
|
|
|
只有小组成员才能发言,加入小组>>
5183 浏览 9 评论
2005 浏览 8 评论
1932 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3178 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2229 浏览 5 评论
739浏览 1评论
624浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
510浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
637浏览 0评论
535浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 18:05 , Processed in 1.591561 second(s), Total 88, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号