none
数据采集IST? RRS feed

  • 问题

  • 开发AD数据采集的程序,用中断的方式,如果用ADC_Read()来读取采集的数据,那么IST的任务是什么呢?或者用IST来读取数据,那么读取的数据如何传给应用程序呢?
    2009年10月20日 14:38

答案

  • 不知道你是否了解WINCE MDD/PDD 的驱动模型,
    在此首先要理解,流接口,应用程序,IST的关系。
    例如:应用程序调用流接口向驱动要数据,流接口的工作就是将IST读到的数据返回给应用程序,IST的工作就是在中断发生后立刻将数据读走。

    所以按你的描述,我觉得你应按如下方式实现就足够了,
    1. IST 程序在中断发生后立刻将数据读到自己的缓冲区中
    2. 你的应用程序在需要时调用流接口,将IST缓冲区的数据读走进行处理就可以了

    关于IST的 程序如何处理,请看MSDN,链接如下:
    http://msdn.microsoft.com/en-us/library/ms892415.aspx

    • 已标记为答案 阿达 2009年10月25日 14:26
    2009年10月22日 9:12

全部回复

  • ISR响应之后将会激活IST等待的事件,IST的主要任务就是在事件激活后,读取数据到自己的缓冲区。
    不知道你用的WINCE是哪个版本,如果是CE60之前的版本,可以直接将IST功能写在自己的应用程序里来读取数据,应用程序直接拿到数据后可以使用。
    如果是CE60的版本,还是需要应用程序使用ADC_Read流接口的方式来读数据,之后再使用。

    在此首先要理解,流接口,应用程序,IST的关系。
    例如:应用程序调用流接口向驱动读数据,流接口的工作就是将IST读到的数据返回给应用程序

    2009年10月21日 2:46
  • 我用的是6.0,用ADC_Read()读数据的话那么IST是不是没用了?那怎么用中断的方式读数据呢?谢谢啦!
    2009年10月21日 8:12
  • 数据量不是很大,只要能采集100k的信号就够了,外围利用FPGA控制AD,然后中断产生向ARM传递数据。其实主要是想做一个示波器,实时显示采集数据的波形。我想中断发生就将数据读走,并且应用程序直接响应,从而能实时显示波形。所以想问您我用IST读取数据还是ADC_Read()读取数据呢?用IST读取的话应用程序部分怎么处理呢?
    2009年10月22日 7:52
  • 不知道你是否了解WINCE MDD/PDD 的驱动模型,
    在此首先要理解,流接口,应用程序,IST的关系。
    例如:应用程序调用流接口向驱动要数据,流接口的工作就是将IST读到的数据返回给应用程序,IST的工作就是在中断发生后立刻将数据读走。

    所以按你的描述,我觉得你应按如下方式实现就足够了,
    1. IST 程序在中断发生后立刻将数据读到自己的缓冲区中
    2. 你的应用程序在需要时调用流接口,将IST缓冲区的数据读走进行处理就可以了

    关于IST的 程序如何处理,请看MSDN,链接如下:
    http://msdn.microsoft.com/en-us/library/ms892415.aspx

    • 已标记为答案 阿达 2009年10月25日 14:26
    2009年10月22日 9:12
  • 不知道你是否了解WINCE MDD/PDD 的驱动模型,
    在此首先要理解,流接口,应用程序,IST的关系。
    例如:应用程序调用流接口向驱动要数据,流接口的工作就是将IST读到的数据返回给应用程序,IST的工作就是在中断发生后立刻将数据读走。

    所以按你的描述,我觉得你应按如下方式实现就足够了,
    1. IST 程序在中断发生后立刻将数据读到自己的缓冲区中
    2. 你的应用程序在需要时调用流接口,将IST缓冲区的数据读走进行处理就可以了

    关于IST的 程序如何处理,请看MSDN,链接如下:
    http://msdn.microsoft.com/en-us/library/ms892415.aspx


    我现在也在做类似的开发,但我遇到一个问题,我是在驱动IST读取了一定长度的数据后给应用程序发送事件通知,然后应用程序调用流接口将IST缓冲区的数据读走,但是我发现,每次应用程序来读的时候,都会导致驱动IST丢掉一个中断,也就丢了一包数据。我理解,是不是因为应用程序和驱动的IST是两个线程,当应用程序线程执行时,线程切换时间较长,会导致IST中断丢失呢?请问,是否遇到过这样的情况呢?是如何处理的呢?
    2009年10月22日 9:26
  • 我用的是5.0,怎么在应用程序中实现IST功能呢?能否详细说明一下呢?十分感谢啊,最近正被这个问题困扰。
    2009年10月22日 9:31
  • 谢谢刘老师!
    2009年10月22日 13:43
  • 我现在也在做类似的开发,但我遇到一个问题,我是在驱动IST读取了一定长度的数据后给应用程序发送事件通知,然后应用程序调用流接口将IST缓冲区的数据读走,但是我发现,每次应用程序来读的时候,都会导致驱动IST丢掉一个中断,也就丢了一包数据。我理解,是不是因为应用程序和驱动的IST是两个线程,当应用程序线程执行时,线程切换时间较长,会导致IST中断丢失呢?请问,是否遇到过这样的情况呢?是如何处理的呢?
    “驱动IST读取了一定长度的数据后给应用程序发送事件通知”如何实现的?

    下面是以前搜集的办法
    应用程序事先将一个缓冲区地址传递给驱动程序,驱动程序调用MapPtrToProcess映射应用程序传递过来的地址,当驱动程序调用SendNotifyMessage后应用程序可以直接到该地址中读取数据。
    2009年11月5日 7:49