Board logo

标题: S12单片机SCI问题,急~ [打印本页]

作者: auto_hj    时间: 2008-1-15 11:35     标题: S12单片机SCI问题,急~

在编写S12单片机的SCI程序时遇到一些问题,有请大家帮助!
我的基本思路是这的,用一个定时中断,一个串口中断,在初始化时,开启串口中断,和定时中断,用定时中断定时开启发送标志位来定时向上位机发送一串数据。
问题:
1、在默认的情况下,定时中断与串口中断的优先级是如何?是定时先进入中断还是串口先进入中断?
2、会出现固定频率的丢失数据串的现象,基本上是十四组数组丢失一组数组,不知道问题出在哪?

版主留个邮箱,我把程序发给你,帮我看看~,先谢了!

[此贴子已经被作者于2008-1-15 11:30:15编辑过]

[此贴子已经被作者于2008-1-15 11:35:53编辑过]


作者: strongchen    时间: 2008-1-15 15:01

你可以调整一下定时间隔试试,看看有什么变化。

所谓中断优先级,指示在多个中断正好同时发生时才起作用。一般很少发生这种情况。
作者: auto_hj    时间: 2008-1-16 16:12

对于发送数据丢失的问题已经解决,是版主所说的原因,由于波特率较低,定时时间间隔较短造成的;
但是现在还遇到两个问题:
1、由上位机向单片机发送数据的时候,单片机在接受数据时经常发生数据丢失的情况,
我觉得可能是,在传输数据时,由于定时中断的原因将整个数组的接受打断导致数据的丢失。譬如由上位机向单片机发送一组10个字节的数组,是不是可能当单片机接受到第五个数据时, 定时时间到,进入中断,而破坏整个数组的接受,导致数据的丢失。我采用的是定时时间间隔的方法来读取接受缓冲区的方式来获取有效数据的!
2、为什么在初始化串口寄存器时,开启发送中断允许位时,不法进入主循环?
因为我在主循环中用查询的方式来读取外部按键是否按下?一但初始化中断允许后,按键怎么按也没有反应!可能是什么原因?
谢谢~

[此贴子已经被作者于2008-1-16 16:12:18编辑过]


作者: strongchen    时间: 2008-1-17 10:43

接收数据为什么要采用定时读取数据的方法?一般应采用接收中断的方法。接收一个字节数据的过程是硬件自动完成的,与软件无关。当一个字节接收完成时,会产生中断,此时再去读取数据即可。
作者: auto_hj    时间: 2008-1-17 11:25

我是你讲的那么做的,我的意思是我另外设定了一个接收缓冲区,这个缓冲区用于读取接收数据寄存器的内容;然后我再定时读取接受缓冲区的内容,再对接收到的数据进行解码,得到有用的数据。
编码格式:首字节 子机/顺序号 长度字节 有效数据 校验和 的格式来形成数据串的。

对于第二个问题,版主有没有什么意见或想法?
作者: strongchen    时间: 2008-1-17 11:50

你应该调试一下程序,设一下断点看看,到底程序跑到哪里去了或为什么按键没有反应。有没有标志位?




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0