完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
你好,我的PIC24F16KA102有个问题。我使用PicKit2 UART工具与PC机进行通信。所以,这是我的例程(参见附带的文件)。当我使用PicKit2 UART工具发送和接收字符时,我得到的是:当我发送“1”字符时,我从未收到“1”,但有时我收到“回车”?所以,我的问题是:我应该在哪里开始调试?有什么可能出错?谢谢你,亚历克斯
TXT(0.29 KB)-下载142次 |
|
相关推荐
19个回答
|
|
|
波特率通常是错误的。你也可以有一个倒TX线(在PIC的硬件或取决于你使用的收发器,如果有的话)
|
|
|
|
|
|
在初始化UART之后,您可能需要重置中断。我使用PIC24HJ128,数据表说在UART初始化后清除中断,以允许接收器继续。
|
|
|
|
|
|
@DarioG,我仔细检查过,我确信我对这个问题没问题。@inky这听起来是一个非常恰当的解决方案,在我尝试之后,我会回来给出答案。
|
|
|
|
|
|
请注意你所说的“重置中断”的意思。数据表的意思是,你需要重置适当的IF标志(这适用于任何外围设备),因为它是“1”状态,将触发调用ISR。如果你不清除ISR的标志,那么它就会被再次调用。你不需要做的就是玩IE的标志。而且我几乎会把钱放在错误的坏账率上。您不需要向我们显示配置设置,也不需要向我们显示“init”函数,我假设您设置了振荡器部分,以便您可以计算波特率时钟的魔术数字“25”。TIN在设置UXTEN位之前就行了。最后,为什么要反转空闲状态设置?苏珊
|
|
|
|
|
|
显然,我还不能(还没有)在这里邮政编码,所以我会上传文件。我上传了所有的例程。在第一个文件中,你可以看到我使用MP LAB X中的配置位工具选择的所有配置位。主要是U ART例程的调用。在最后一个文件中有i关于波特率和设备时钟:我找到了一个内置的编译器例程,命名为delay 32(cycles),其中“cycles”表示设备将停止的周期数。因此,如果我调用延迟32(4000000),设备停止精确1秒。所以我猜PIC的工作频率是F C Y=F O SC/2=4MHz。因此,我把U 1 B R G值从25(8MHz时钟的9600波特率)改为12(4MHz时钟的9600波特率)。
MIN .txt(0.17 KB)-下载136次UART GGCH和ReCHEC.TXT(1.26 KB)-下载151次 |
|
|
|
|
|
您可能希望将错误检查添加到接收器代码中。可能有帮助。而且,你没有检查线的范围,是吗?
|
|
|
|
|
|
不,不幸的是我没有范围:
|
|
|
|
|
|
根据我的计算器(和数据表示例),给出了4MHz和9600波特率的fCy,thsSuSun.
|
|
|
|
|
|
显然,它奏效了!谢谢你的帮助,苏珊。我缩小了问题的范围。所以,我修改了循环中的主要部分:write't'、Delay 10 ms、write'e'、Delay 10 ms、write's'、Delay 10 ms、write's'、Delay 10 ms、write't'、Delay 10 ms、write'send'I am.esly."t e s t",但当涉及到接收"GetChar"时我收到0。我修改了GetChar例程,如下所示:如果O ERR位是0-这转换为没有溢出错误,我返回发送的char。否则我返回0。因此,显然,无论我发送什么char,O ERR位是1。该怎么做?我应该清除一些寄存器吗?那些是什么?
|
|
|
|
|
|
Overrun意味着您收到的字符太多,而没有读取它们(可能是2、3、4,或者取决于您的PIC)。
|
|
|
|
|
|
我不知道为什么回音(向超级终端发送什么)不起作用,但是如果我一次编写主程序来发送一个字符,它就工作了!我可以在超级终端上清楚地读出输出!我想我可以做到这一点。我还在循环中添加了初始化例程,所以它不再有任何错误。谢谢你的帮助。如果出现问题,我会回来进一步处理。
|
|
|
|
|
|
不,不要那样做!
|
|
|
|
|
|
好吧,这很有说服力。我会收回的。我只将初始化例程放在主循环之前,但为了学习目的,这有什么不对吗?
|
|
|
|
|
|
嗯,当你初始化一个外围设备时,一些东西被“重置”到初始状态(在这个例子中,例如,波特率生成器/计数器)。反复做这些可能会引起错误——很多类型的错误。
|
|
|
|
|
|
你好,你用的是TX和RX。我认为您需要映射外围引脚作为UART1 TX和UART1 RX引脚使用。如果您没有使用模拟功能,那么禁用所有引脚上的模拟功能。禁用所有引脚上的模拟功能,因为我不使用它们。不需要使用外围引脚映射。我已经映射了我的UART TX和RX引脚如下,您可以从下面的步骤开始。其次是做UART设置。
|
|
|
|
|
|
NIMIT:OP使用的MCU没有PPS(根据数据表),所以这不适用。苏珊
|
|
|
|
|
|
哎呀。没有看到数据表。我认为所有图片都有这个特性。我的错。
|
|
|
|
|
|
您好,现在UART已经启动并运行(用PicKit2 UART工具检查了输出),现在我想在两个PIC之间实现RF通信(都是24F16KA102)。显然,我还需要一些指导。对于这个RF com,我使用了两个模块(FS1000A/XY-MK-5V对)。在接收机PIC端,我使用UART1(TX和RX)根据PicKit2方案通过PicKit2向PC发送数据。RF接收器模块有两个用于数据的引脚(我猜一个引脚用于8位MSB,另一个引脚用于8位LSB)。随机信息:在发射器PIC端,我使用UART1用于TX到另一个PIC。我的(第一个)问题是:在哪个PIC引脚上执行I/我可以连接RF接收的两个数据引脚R模块(XY-MK-5V)?我想我可以连接一个UART2 RX PIN,但我仍然有一个PIN等待分配。
|
|
|
|
|
|
我在http://wiki.j..co/./rfrxtx/接收器上的两个数据管脚连接在一起。只需使用其中一个而忽略另一个。注意,这些都是非常简单的模块。不要期望它们之间有完美的串行通信。尤其是当你开始发送字符序列时,前几个字符可能会被损坏。最好发送几个虚拟字符来使链接正常工作,然后发送一些可识别的字符作为数据的开始。这迫使你数据包中的数据,而不只是发送单个字符。
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
473 浏览 0 评论
5793 浏览 9 评论
2334 浏览 8 评论
2224 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3530 浏览 3 评论
1121浏览 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 20:21 , Processed in 1.266421 second(s), Total 107, Slave 91 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1022