首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

请教一个SCI 中断的问题

请教一个SCI 中断的问题

采用SCI中断方式接收数据时,发现无法产生中断,SCISR1寄存器始终为0xC0(复位后就是这个值),RDRF标志位一直没有置位,不知是何原因?
没有原程序,太难判断了,先看看SCICR2_RE是否置1.
SCI引脚上有输入信号吗?
海纳百川  有容乃大
QUOTE:
以下是引用fayefayehoo在2008-9-19 15:59:00的发言:
没有原程序,太难判断了,先看看SCICR2_RE是否置1.

SCICR2 = 0X0C; TE和RE都置1

我就挺纳闷SCI初始化后(初始化时通过读SCISR1和SCIDRL,清0),SCISR1还是0XC0,按道理初始化后SCISR1应该为0X00

QUOTE:
以下是引用strongchen在2008-9-22 14:34:00的发言:
SCI引脚上有输入信号吗?

我没有示波器,用万用表看不出来吧?

你用的是哪个SCI,我用的是 S12SCIV5,,初始化以后SCISR1也是0xC0,但接收发送都很正常。

最好把初始化的代码发上来看看

另外,波特率你设对了没有

[此贴子已经被作者于2008-9-23 13:14:24编辑过]

QUOTE:
以下是引用fayefayehoo在2008-9-23 13:12:00的发言:

你用的是哪个SCI,我用的是 S12SCIV5,,初始化以后SCISR1也是0xC0,但接收发送都很正常。

最好把初始化的代码发上来看看

另外,波特率你设对了没有

[此贴子已经被作者于2008-9-23 13:14:24编辑过]

从单片机上往上位机发没有问题,这应该说波特率是正确的,初始化代码如下:

void SCIInit(void)
{
INT8U i;
//(1)设置波特率为9600
SCIBDL=0x68; //BR=fbus/(16*Bt)=16000000/(16*9600)=104.17:0x68
SCIBDH=0x00; //SCIBDH=0x00,SCIBDL=0x68;
//(2)设置控制寄存器
SCICR1=0x00; //允许SCI,正常码输出,8位数据,无校验
SCICR2=0x0C; //中断暂时关闭,允许发送(TE=1)和接收(RE=1)
//(3)清空数据寄存器和状态寄存器
i = SCISR1; //清空状态寄存器1
i = SCIDRL; //清空数据寄存器
}

在初始化结束后开启接受中断和总中断.

[此贴子已经被作者于2008-9-24 10:39:31编辑过]

我用得外部晶振是8M

还是找个示波器检查一下波形比较好,初始化来看没什么问题。

我自己用的初始化程序比你还简单

void Init_SCI0(void)
{
LinTransceiverWakeup();
SCI0SR2_AMAP = 0;

SCI0BD_SBR = 13; // 9600 bps

SCI0CR1 = 0x00;
SCI0CR2 = 0x2C;
SCI0SR2_BRK13 = 1;
LinRxState = ReceiveIdle;
LinTransceiverWakeup();
}

我用PE生成的SCI代码,发送正常,就是接收时没有进入接收中断,不知为何

有可能没有开启接收中断,或者没有输入信号?
海纳百川  有容乃大

问题解决了吗,给个答复吧

谢谢

返回列表