打印

求助!

[复制链接]
1244|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fulnonono|  楼主 | 2012-1-23 19:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
小弟遇到下面的一个问题,不知哪位大侠可以提供帮助。


问题描述:

一个数字信号通过8个独立的信道向单片机传输。

单片机内有个一个独立运行的分辨率很高的定时器可以利用。

当每个信号改变时,系统都会记下当前的时间。

每个输入信号的改变时,都会触发中断

8个输入信号的状态可以通过一个寄存器读取出来

在中断中,需要记录输入信号的状态以及当前的时刻到一个数据中。 这个数据的赋予通过一个任务来给出。

在这个任务中,每个输入的信号都应该保持成一个队列。 由数据可得知的状态改变和改变时间信息可以记录到这个队列当中。记录所花费的时间应该保持常数。


以上是问题的描述,需要一个解决的办法。 我的目前理解是否是这个信号接着8个I/O口,当有信号从0变成1或者从1变成0的时候,就触发I/O中断,记下定时器当前的时间和当前I/O口的状态。然后把它储存在一个数据结构中。
中断任务中的队列应该怎么处理?压栈还是? 后面一句记录所花费的时间保持常数是什么意思?


哪位大侠可以帮忙啊,谢谢了啊!!!

相关帖子

沙发
fulnonono|  楼主 | 2012-1-23 19:11 | 只看该作者
自己先顶一下,呵呵!

使用特权

评论回复
板凳
chunyang| | 2012-1-23 19:47 | 只看该作者
这里的队列指在存储器中依次存放数据,花费时间相同指相关程序运行的时间是常数即每次中断发生后的处理时间相同。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
fulnonono + 1
地板
fulnonono|  楼主 | 2012-1-23 20:20 | 只看该作者
3# chunyang
那队列的操作就用指针来加吗?每有一个新的数据,我的指针就挪到下一个地址? 怎么控制任务执行的时间呢? 哈哈 对了,我前面对问题的理解还算正确吗?谢谢了啊。

使用特权

评论回复
5
fulnonono|  楼主 | 2012-1-23 21:41 | 只看该作者
这个问题是不是需要实时操作系统,因为里面有任务和队列的概念。。

使用特权

评论回复
6
yewuyi| | 2012-1-23 21:41 | 只看该作者
从你的描述看,你应该需要检测8路开关量信号的动作,给一个简洁的办法:
将8路信号接到MCU的一个8位IO口上,设计恰当的触发电路让8路信号中任意一路出现电平变化时都触发MCU的外部中断,MCU进入中断后,读取MCU的IO口值,只要信号的沿变化小于中断的响应时间,就可以保证读取的正确性,然后处理读到的那个8位IO值即可

使用特权

评论回复
7
chunyang| | 2012-1-23 23:41 | 只看该作者
可以用指针,也可以用一个寄存器/存储器累加,响应处理时间主要靠严格的程序结构,不一定非要实时操作系统,但其思想可以借鉴。

使用特权

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

本版积分规则

0

主题

4

帖子

0

粉丝