直接控制主板IO口输出方波???

jfive   2010-5-10 13:56 楼主
最近想直接控制主板IO口搞点东西,如并口,串口,,想输出如38K (26us)的方波,或者采集38K的波形输入。 我做了以下尝试,在循环中直接读取IO的状态变化, 发现采集的不是很精确,采集到的波形变化有漏 的,也很随机。说明这种方式达不到精度。  是否可以用中断来采集?
我找了一些资料,发现有这么用句话:“win 不是一个实时系统”,所以对我的想法产生了怀疑。难道windows不能做这样的事情? 想来也是,大都是计算机和芯片通讯,芯片做采集工作。
我也在想在usb线上不接任何芯片,在pc驱动程序上直接控制usb的一根线输出方波, 是否可行?  
请高手解惑这方面的疑问、。
我的采集代码如下:
            ULONG mCurrStatus,mTemp;
            int ircount;
            ircount = 0;            

            mCurrStatus = _inp(0x0379);            
            while(1)
            {
                if(ircount == 0)
                {
                    mTemp = _inp(0x0379);
                    if (mTemp!=mCurrStatus)
                    {                                
                        KeQueryTickCount(&tm1);
                        mCurrStatus = mTemp;
                        ircount++;
                    }
                } else                                
                {
                    mTemp = _inp(0x0379);
                    if (mTemp!=mCurrStatus)
                    {                        
                        KeQueryTickCount(&tm1);                        
                        mCurrStatus = mTemp;
                        ircount++;
                        if(ircount>6000)
                            break;
                    }else
                    {                        
                        KeQueryTickCount(&tm2);
                        if((tm2.QuadPart-tm1.QuadPart)>32)                        
                            break;
                    }
                }
            }

回复评论 (7)

不行,hoho

点赞  2010-5-10 16:39
可以每一个pc用的采集卡,1000-6000元都有, 研华什么的,


如果你熟悉硬件,就自己做一个,用单片机来采集,然后把数据发送给pc 也ok,
点赞  2010-5-10 16:41
WINDOWS下是够呛了。。。
点赞  2010-5-10 21:07
计算机原理一知半解的我在琢磨: 计算机的cpu及其资源比起单片机丰富多了,为什么单片机绰绰有余的事情,PC干不了?但如串口的波特率可以达到比38K载波很多的精度了,为什么不能做这样的事情? 是微软设计windows的不是这个方向?我在想应该不是不可以,而是被win的“屏蔽”了或者是没有找到方法。
对于三楼的兄弟说采集卡。呵呵,1块钱的单片机芯片就可以了,用不到1千的。
刚在网上搜索到一个论文,说是在win的并口驱动的基础上实现了采集1m字节的精度,对驱动刚刚接触的我看不懂。
是不是可以在驱动的“优先级”上下文章,或者是执行采集的中间用“关闭中断”的方法。。。
我在arm7的linux上也是在驱动层采集的过程中把中断关闭,“一心一意”的去判断io的变化。 精度也可以达到几us,对于38K的足够了。
在windows上,哪个驱动高手指明下方向?
点赞  2010-5-10 22:12
windows做了一层有一层的封装,以至于很多的东西是无法自己直接操作的。这也是在开发的时候为了系统安全等因素刻意设计的。并不是说硬件本身不支持这种操作。相信双核的P4在性能上应该远远优于普通的arm芯片。把PC平台当成一个特殊的嵌入式平台的话,它的性能是相当不错的。

我一个哥们儿在PC上操作并口模拟过JTAG操作,是可以成功的,不过他PC程序设计基础有限,也没有时间做更多的尝试,所以最后速度上没有达到预想中的要求。实际上也有可能是操作并口需要调用Windows接口函数,导致控制起来没有直接操作那么得心应手的原因。
点赞  2010-5-11 20:02
windows 上控制硬件设备 的确有些麻烦。

楼主可以去 图书馆借几本相关的书籍看看,

现在有很多书籍 讲利用PC做数据采集,即虚拟仪器的书籍。

点赞  2010-5-13 12:33
38K在驱动中应该可以搞定。
点赞  2010-5-20 16:04
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复