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

[复制链接]
3628|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
 楼主| xiaozhe2012 发表于 2013-11-14 10:34 | 显示全部楼层
看了一下,串口调试助手发送数据,正确的数据中间会参杂着00,若不点十六进制显示则会正确显示数据只不过中间会有空格,所以,我把波特率调了一下,改为U1BRG = 51;结果更厉害了。。。
 楼主| xiaozhe2012 发表于 2013-11-14 10:40 | 显示全部楼层
我将接收和发送和接收寄存器里数据由0x0000给为其他数据一运行,又变回0x0000。可是我从来没有从电脑上位机上发送0,我发的是5,6之类的,而且我串口调试助手上发送数据改变,接收也随着改变正确改变,只是中间会加着00!等于说下位机自己莫名其妙的给自己添加了0x00的数据在正确的数据之间。(这也是为什么我在接收中断中加了一断点,然后运行,在上位机未发送数据的时候,就跳入接收中断了,查看接收中断寄存器,上面存放的就是0x0000!莫名其妙哦)
huhaomcu 发表于 2013-11-14 11:19 | 显示全部楼层
PIC的有点不记得了,照着**说吧!!首先楼主你的程序写得太乱,搞的别人没有往下看的欲望!!PIC单片机都是有配置位的,配置位用来指定你的MCU时钟多少等等一系列极其重要的问题!还有你的串口IO口好像指定的有问题,再者请将你的MCU时钟,串口波特率等等一些重要参数说明白!!!还有最重要的一点,学单片机真没必要买书,直接上其官网上下数据手册,国内的书就是翻译过来的!!并且官网上有很多的应用笔记和DEMO例程并且PIC的网站上关于MCU部分的大部分还是中文的,不过建议你看英文的!!本想跟你发张图片的,结果发现不能上传图片,哎!!
有问题再联系!!!
 楼主| xiaozhe2012 发表于 2013-11-14 15:23 | 显示全部楼层
现怀疑问题是:接收串口传输的数据中不知道怎么夹杂着00.。。。不知道是什么原因?
 楼主| xiaozhe2012 发表于 2013-11-14 17:56 | 显示全部楼层
huhaomcu 发表于 2013-11-14 11:19
PIC的有点不记得了,照着**说吧!!首先楼主你的程序写得太乱,搞的别人没有往下看的欲望!!PIC单片机都 ...

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

那你正常的数据能发出来吗???
huhaomcu 发表于 2013-11-14 20:11 | 显示全部楼层
xiaozhe2012 发表于 2013-11-14 17:56
嘿嘿,刚入门,比较菜,多包涵哈!大侠,我单片机使用的是内部8兆时钟,通信速率是9600.配置位在configur ...

你单片机具体型号是多少,我跟写个DEMO试试!!
lirunze 发表于 2013-11-14 20:54 | 显示全部楼层
路过啊
 楼主| xiaozhe2012 发表于 2013-11-15 19:29 | 显示全部楼层
huhaomcu 发表于 2013-11-14 20:11
你单片机具体型号是多少,我跟写个DEMO试试!!

pic24fv16ka302,昨天去试验去了,么在线哦,大侠!麻烦你了!
huhaomcu 发表于 2013-11-16 13:58 | 显示全部楼层
本帖最后由 huhaomcu 于 2013-11-16 13:59 编辑
xiaozhe2012 发表于 2013-11-15 19:29
pic24fv16ka302,昨天去试验去了,么在线哦,大侠!麻烦你了!

由于手上没有板子,就用Protues跟你作了个仿真,芯片不是用的PIC24FV16KA302,用的是PIC24F16KA102,两个芯片基本上是一样的,就只有Flash等大小不同而已!!

有问题再联系!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| xiaozhe2012 发表于 2013-11-16 16:08 | 显示全部楼层
3q哈,我赶紧试试!
 楼主| xiaozhe2012 发表于 2013-11-16 17:11 | 显示全部楼层
huhaomcu 发表于 2013-11-16 13:58
由于手上没有板子,就用Protues跟你作了个仿真,芯片不是用的PIC24FV16KA302,用的是PIC24F16KA102,两个 ...

一运行就乱发00,中间会夹杂着1,2,3,4这些数据。。。:'(会不会是硬件什么错误啊!
huhaomcu 发表于 2013-11-16 18:33 | 显示全部楼层
xiaozhe2012 发表于 2013-11-16 17:11
一运行就乱发00,中间会夹杂着1,2,3,4这些数据。。。会不会是硬件什么错误啊! ...

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

看了哦,换了一个,他也不停发00,ff之类的
zangyong 发表于 2014-12-17 15:40 | 显示全部楼层
通信速率调dao1000000 试一试 也许可以
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

25

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部