打印

pic24fv16 单片机uart上位机通信数据无法进入单片机

[复制链接]
3070|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xiaozhe2012|  楼主 | 2013-11-14 09:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  大侠们,小菜按照书上标准实例,做了一个pic24fv16单片机的uart串口通信程序,仿真正确,但是下载到单片机运行时,数据无法进入单片机,但是查看中断寄存器,各个设置正确,没有问题呀,下面我把程序负载下面,望大侠们指导,实在是检查不出什么错误了,帮我看看到底是范了什么2b错误,提前谢谢啦!!
   测试串口程序(没有正确运行)
#include <p24Fxxxx.h>
#define ISR(mode) __attribute__((interrupt,mode))
void init();
int main(void)
{
        init();
    while(1)
   {
   
    }
return 0;
}
void init()//初始化
{  
  TRISB = 0x0004;    //设置6输入,16输出

  U1BRG = 25;
  U1MODE = 0x8008;
  U1STA = 0x8400;
  
  INTCON1 = 0x8000;  //禁止中断嵌套
  INTCON2 = 0;
  IEC0bits.U1RXIE = 1;     //允许UART1收中断
  _U1ERIE=1;//接受错误侦错处理中断
  }
void  __attribute__((__interrupt__,auto_psv))  _U1RXInterrupt()//接收中断
{

  U1TXREG=U1RXREG;
_U1RXIF = 0;
}  
void ISR(auto_psv) _U1ErrInterrupt(){
_U1ERIF=0;
U1MODE=0;
Nop();
init();
}

相关帖子

沙发
xiaozhe2012|  楼主 | 2013-11-14 09:25 | 只看该作者
另外,补充的是,程序运行,会自动给上位机乱发数据:00 有时候是ff之类的,实在是无奈了,

使用特权

评论回复
板凳
airwill| | 2013-11-14 09:33 | 只看该作者
看样子还是新人哪. 支持一下.
我看先用示波器捕捉一个通信的波形, 看看发的数据, 以确定上位机和波特率方面正确.
再合理的设置调试端点. 捕捉要发送的数据进行验证
再去寻找程序里的问题

使用特权

评论回复
地板
xiaozhe2012|  楼主 | 2013-11-14 09:33 | 只看该作者
TRISB = 0x0004;    //设置6输入,16输出
这里的管脚:单片机管脚6是Rb2,16是Rb7

使用特权

评论回复
5
xiaozhe2012|  楼主 | 2013-11-14 10:34 | 只看该作者
看了一下,串口调试助手发送数据,正确的数据中间会参杂着00,若不点十六进制显示则会正确显示数据只不过中间会有空格,所以,我把波特率调了一下,改为U1BRG = 51;结果更厉害了。。。

使用特权

评论回复
6
xiaozhe2012|  楼主 | 2013-11-14 10:40 | 只看该作者
我将接收和发送和接收寄存器里数据由0x0000给为其他数据一运行,又变回0x0000。可是我从来没有从电脑上位机上发送0,我发的是5,6之类的,而且我串口调试助手上发送数据改变,接收也随着改变正确改变,只是中间会加着00!等于说下位机自己莫名其妙的给自己添加了0x00的数据在正确的数据之间。(这也是为什么我在接收中断中加了一断点,然后运行,在上位机未发送数据的时候,就跳入接收中断了,查看接收中断寄存器,上面存放的就是0x0000!莫名其妙哦)

使用特权

评论回复
7
huhaomcu| | 2013-11-14 11:19 | 只看该作者
PIC的有点不记得了,照着**说吧!!首先楼主你的程序写得太乱,搞的别人没有往下看的欲望!!PIC单片机都是有配置位的,配置位用来指定你的MCU时钟多少等等一系列极其重要的问题!还有你的串口IO口好像指定的有问题,再者请将你的MCU时钟,串口波特率等等一些重要参数说明白!!!还有最重要的一点,学单片机真没必要买书,直接上其官网上下数据手册,国内的书就是翻译过来的!!并且官网上有很多的应用笔记和DEMO例程并且PIC的网站上关于MCU部分的大部分还是中文的,不过建议你看英文的!!本想跟你发张图片的,结果发现不能上传图片,哎!!
有问题再联系!!!

使用特权

评论回复
8
xiaozhe2012|  楼主 | 2013-11-14 15:23 | 只看该作者
现怀疑问题是:接收串口传输的数据中不知道怎么夹杂着00.。。。不知道是什么原因?

使用特权

评论回复
9
xiaozhe2012|  楼主 | 2013-11-14 17:56 | 只看该作者
huhaomcu 发表于 2013-11-14 11:19
PIC的有点不记得了,照着**说吧!!首先楼主你的程序写得太乱,搞的别人没有往下看的欲望!!PIC单片机都 ...

嘿嘿,刚入门,比较菜,多包涵哈!大侠,我单片机使用的是内部8兆时钟,通信速率是9600.配置位在configurebits软件里面设置的:(反正就是将所有的复位,全部disabled)现截图如下:(传不了图)。。。
现在怀疑单片机最小系统电路会不会偶问题呀,因为怎么会凭空在正确的数据收发里多出那么多00哦!

使用特权

评论回复
10
huhaomcu| | 2013-11-14 20:09 | 只看该作者
xiaozhe2012 发表于 2013-11-14 17:56
嘿嘿,刚入门,比较菜,多包涵哈!大侠,我单片机使用的是内部8兆时钟,通信速率是9600.配置位在configur ...

那你正常的数据能发出来吗???

使用特权

评论回复
11
huhaomcu| | 2013-11-14 20:11 | 只看该作者
xiaozhe2012 发表于 2013-11-14 17:56
嘿嘿,刚入门,比较菜,多包涵哈!大侠,我单片机使用的是内部8兆时钟,通信速率是9600.配置位在configur ...

你单片机具体型号是多少,我跟写个DEMO试试!!

使用特权

评论回复
12
lirunze| | 2013-11-14 20:54 | 只看该作者
路过啊

使用特权

评论回复
13
xiaozhe2012|  楼主 | 2013-11-15 19:29 | 只看该作者
huhaomcu 发表于 2013-11-14 20:11
你单片机具体型号是多少,我跟写个DEMO试试!!

pic24fv16ka302,昨天去试验去了,么在线哦,大侠!麻烦你了!

使用特权

评论回复
14
huhaomcu| | 2013-11-16 13:58 | 只看该作者
本帖最后由 huhaomcu 于 2013-11-16 13:59 编辑
xiaozhe2012 发表于 2013-11-15 19:29
pic24fv16ka302,昨天去试验去了,么在线哦,大侠!麻烦你了!

由于手上没有板子,就用Protues跟你作了个仿真,芯片不是用的PIC24FV16KA302,用的是PIC24F16KA102,两个芯片基本上是一样的,就只有Flash等大小不同而已!!
demo.zip (63.64 KB)
有问题再联系!

使用特权

评论回复
15
xiaozhe2012|  楼主 | 2013-11-16 16:08 | 只看该作者
3q哈,我赶紧试试!

使用特权

评论回复
16
xiaozhe2012|  楼主 | 2013-11-16 17:11 | 只看该作者
huhaomcu 发表于 2013-11-16 13:58
由于手上没有板子,就用Protues跟你作了个仿真,芯片不是用的PIC24FV16KA302,用的是PIC24F16KA102,两个 ...

一运行就乱发00,中间会夹杂着1,2,3,4这些数据。。。:'(会不会是硬件什么错误啊!

使用特权

评论回复
17
huhaomcu| | 2013-11-16 18:33 | 只看该作者
xiaozhe2012 发表于 2013-11-16 17:11
一运行就乱发00,中间会夹杂着1,2,3,4这些数据。。。会不会是硬件什么错误啊! ...

那你在你的板子里随便烧个程序你看它还发不发00之类的,硬件应该没什么问题的!!

使用特权

评论回复
18
xiaozhe2012|  楼主 | 2013-11-17 00:26 | 只看该作者
huhaomcu 发表于 2013-11-16 18:33
那你在你的板子里随便烧个程序你看它还发不发00之类的,硬件应该没什么问题的!! ...

看了哦,换了一个,他也不停发00,ff之类的

使用特权

评论回复
19
zangyong| | 2014-12-17 15:40 | 只看该作者
通信速率调dao1000000 试一试 也许可以

使用特权

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

本版积分规则

5

主题

25

帖子

0

粉丝