标题: 908GP32的SCI中断问题。 [打印本页]
作者: huangwei_flymys 时间: 2006-3-22 09:10 标题: 908GP32的SCI中断问题。
我的SCI只能进一次中断,怀疑是没有清中断标志位。请问各位大虾如何清908GP32的SCI的发送中断标志?谢谢!
作者: strongchen 时间: 2006-3-22 11:16
清SCTE标志的步骤是,先读SCS1寄存器,然后写SCDR寄存器。
作者: huangwei_flymys 时间: 2006-3-22 11:42
老大,我是这么做的阿,我在中断里面 先读SCS1寄存器,然后写SCDR寄存器。
但是之后就再也不进中断了。
作者: huangwei_flymys 时间: 2006-3-22 11:45
为什么我在初始化里面开了发送中断,反而发不了了呢?奇怪啊。
作者: strongchen 时间: 2006-3-22 12:01
你要检查一下,是没有发,还是没有产生中断,还是产生了中断但是没有进中断...
作者: huangwei_flymys 时间: 2006-3-22 12:08
我在PC端接收到了1个字符,说明进了发送中断了。然后我在中断服务程序里按照先读SCS1寄存器,然后写SCDR寄存器的方法,想再发一个字符到PC机,但是就不来了
作者: strongchen 时间: 2006-3-23 10:39
SCI模块被关掉了?
作者: huangwei_flymys 时间: 2006-3-23 11:54
while(1)这个超级循环里面我没有写代码,只是在空转。
然后我在发送中断服务程序里面只是写了这么一句:SCC2 |= SCI_Tx_INT_ENABLE;
应该没有问题啊。老大请指教!!
作者: seuafu2005 时间: 2006-3-24 10:05
发送中断程序里面开中断肯定有问题,应该在外面放开中断,你在中断服务程序里面写,怎么产生中断进入服务程序呢?
作者: huangwei_flymys 时间: 2006-3-24 10:39
哦,那就是说只要在初始化里面使能一次发中断就行了。是吧。
作者: strongchen 时间: 2006-3-24 10:52
是的。
作者: seuafu2005 时间: 2006-3-24 14:24
能不能实现你自己可以试一下,这个应该很容易就测试出来的。
从PC发字符,PC显示出来?PC显示的是输入的字符还是GP32发送过去的字符?
程序中的irbyte好像没有说明什么作用。仅仅给程序片段,没有什么注释很难看出什么问题的。
作者: huangwei_flymys 时间: 2006-3-24 15:10
显示的是PC的输入字符,那个irbyte应该是irflag。我试了一下不行,其他的初始化工作都已经做好了,感觉上应该可以的,但是....
作者: huangwei_flymys 时间: 2006-3-24 15:25
interrupt 12 void SciRxIntHand(void)
{
U8 Status,readbuf;//中间变量
Status = SCS1;//读一次SCS1状态
readbuf = SCDR;//把PC发的数据读到readbuf
rcvbuf[0]=readbuf;//存入rcvbuf[0]
irflag=1;置收到字符的标志
}
while (1)
{
if (irflag) {
irflag=0; //先清一下标志
ix = SCS1;//读一下SCS1状态
SCDR=rcvbuf[0]; //把在接收中断服务程序中的字符发到发送缓冲区中,再发到PC机(这一步有没有什么问题??)
}
}
请老大帮忙看看,我这样能不能实现从PC机发一个字符,就可以在PC上显示出来的功能? (发送中断我没有写程序,是空的。收发中断都已经开了。)谢谢老大!
[此贴子已经被作者于2006-3-24 15:21:20编辑过]
[此贴子已经被作者于2006-3-24 15:25:52编辑过]
作者: seuafu2005 时间: 2006-3-24 17:30
我理解你的测试是这样的过程:
PC输入字符-》通过串口送到GP32-》GP32接收,然后通过串口发送出去-》PC接收字符,显示出来。
如果这样的话,你的串口程序除了有接收的程序,应该需要有发送的程序,否则PC接收不到数据肯定无法正确显示了。如果用中断发送就应该有中断程序。你的程序简单的把字符放在寄存器中不行的,需要设置发送的一些寄存器标志位。
[此贴子已经被作者于2006-3-24 17:30:07编辑过]
作者: huangwei_flymys 时间: 2006-3-24 20:33
谢谢seuafu2005,我试试看。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) |
Powered by Discuz! 7.0.0 |