单片机问题

[复制链接]
5670|8
 楼主| dfsa 发表于 2013-2-28 12:52 | 显示全部楼层 |阅读模式
问题描述:

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

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

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

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

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

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

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


以上是问题的描述,需要一个解决的办法。 我的目前理解是否是这个信号接着8个I/O口,当有信号从0变成1或者从1变成0的时候,就触发I/O中断,记下定时器当前的时间和当前I/O口的状态。然后把它储存在一个数据结构中。
中断任务中的队列应该怎么处理?压栈还是? 后面一句记录所花费的时间保持常数是什么意思?
秋天落叶 发表于 2013-2-28 13:07 | 显示全部楼层
我觉得记录所花费的时间为常数即为中断开始的时间与中断功能程序执行结束时的系统时间之差应该为一个人常数,具体这样要求有什么用,还得看具体要求了
baidudz 发表于 2013-2-28 13:16 | 显示全部楼层
我觉得要用计数器和串口通信
firstblood 发表于 2013-2-28 13:17 | 显示全部楼层
可利用单片机的定时器的捕获计数功能就可以的啦
baidudz 发表于 2013-2-28 13:20 | 显示全部楼层
那个定时器维护一个时钟即可

数据结构就是包含时间与记录八个数字信号的无符号型字符变量

其它的,我也支持LS大伙们说的循环队列

具体情况还要看您的应用方式
无冕之王 发表于 2013-2-28 13:26 | 显示全部楼层
LZ把具体要求说一下
smilingangel 发表于 2013-2-28 13:41 | 显示全部楼层
利用单片机的Io口 的中断功能也是可以实现IO的电平跳变的记录的
yybj 发表于 2013-2-28 16:06 | 显示全部楼层
baidudz 发表于 2013-2-28 13:16
我觉得要用计数器和串口通信

用计时器和串口通信试试
shenmu2012 发表于 2013-3-4 18:16 | 显示全部楼层
单片机内有个一个独立运行的分辨率很高的定时器可以利用,用好该定时器的可以节省很多的开发成本的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

282

主题

2404

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部