0
问答首页 最新问题 热门问题 等待回答标签广场
我要提问

求助!

小弟遇到下面的一个问题,不知哪位大侠可以提供帮助。


问题描述:

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

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

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

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

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

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

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


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


哪位大侠可以帮忙啊,谢谢了啊!!!
提问者:Furlong 地点:- 浏览次数:8663 提问时间:12-28 08:40
我有更好的答案
提 交
5条回答
深圳博英特科技有限公司 12-29 14:03
自己先顶一下,呵呵!
testd035 01-07 02:50
这里的队列指在存储器中依次存放数据,花费时间相同指相关程序运行的时间是常数即每次中断发生后的处理时间相同。
keke2979 01-05 09:37
这个问题是不是需要实时操作系统,因为里面有任务和队列的概念。。
chinaruto 01-02 20:27
从你的描述看,你应该需要检测8路开关量信号的动作,给一个简洁的办法:
将8路信号接到MCU的一个8位IO口上,设计恰当的触发电路让8路信号中任意一路出现电平变化时都触发MCU的外部中断,MCU进入中断后,读取MCU的IO口值,只要信号的沿变化小于中断的响应时间,就可以保证读取的正确性,然后处理读到的那个8位IO值即可
boju81 01-01 01:20
可以用指针,也可以用一个寄存器/存储器累加,响应处理时间主要靠严格的程序结构,不一定非要实时操作系统,但其思想可以借鉴。
撰写答案
提 交
1 / 3
1 / 3