⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 manual_user_interrupt_types.html

📁 Diamond公司Dscud通用驱动使用说明手册
💻 HTML
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"        "http://www.w3.org/TR/html4/loose.dtd"><html lang="en"><head><title>User Interrupt Types - Universal Driver Documentation</title><meta http-equiv="Content-type" content="text/html; charset=iso-8859-1"><meta name="robots" content="index,follow"><link rel="shortcut icon" href="/favicon.ico"><link rel="stylesheet" href="/dscud/style/wikiprintable.css"><script type="text/javascript" src="/dscud/style/wikibits.js"></script><style type='text/css'><!--a.new, #quickbar a.new { color: #CC2200; }#quickbar { position: absolute; top: 4px; left: 4px; border-right: 1px solid gray; }#article { margin-left: 152px; margin-right: 4px; }//--></style></head><body bgcolor='#FFFFFF'><div class='titlebox'><h1 class='pagetitle'>User Interrupt Types</h1><span class='subtitle'>Universal Driver Documentation</span></div><div class='navbox'><a href="manual_Main_Page.html" class='printable' title ="Main Page">Main Page</a> || <a href="manual_Table_of_Contents.html" class='printable' title ="Table of Contents">Table_of_Contents</a> || <a href="http://www.diamondsystems.com/">Diamond Systems Website</a></div></div><div class='bodytext'><a name="top"></a><p><table border="0" id="toc"><tr><td align="center"><b>Table of contents</b> <script type='text/javascript'>showTocToggle("show","hide")</script></td></tr><tr id='tocinside'><td align="left"><div style="margin-bottom:0px;"><A CLASS="internal" HREF="#The_After_Type">1  The "After" Type </A><BR></div><div style="margin-bottom:0px;"><A CLASS="internal" HREF="#The_Instead_Type">2  The "Instead" Type </A><BR></div><div style="margin-bottom:0px;"><A CLASS="internal" HREF="#The_Solo_Type">3  The "Solo" Type </A><BR></div><div style="margin-bottom:0px;"><A CLASS="internal" HREF="#Why_is_there_no_Before_type?">4  Why is there no "Before" type? </A><BR></div></td></tr></table><P><h3><a name="The_After_Type"> The "After" Type </a></h3>
<p>
The user's function will be called every time the standard kernel-mode interrupt routine breaks to user-mode. This is convenient for those programs that want to add additional functionality to the interrupt routine. The break to user-mode occurs when a) the sample buffer has been filled or b) the selected dump threshold has been reached. The user's function does not need to manage any hardware interrupt details on the board, since all operation upkeep is performed in the kernel-mode code.
<p>
<strong>Note that this means that the user interrupt function is not called on every sample or on every interrupt.</strong>
<p>
<ul><li> If you want your function to be called on every interrupt, set the dump threshold equal to the FIFO size.
</li></ul><p>
<ul><li> If you want your function to be called on every sample (or every scan), set the FIFO size to 1 (or the scan size) or disable the FIFO, and also set the dump threshold to 0.
</li></ul><p>
<h3><a name="The_Instead_Type"> The "Instead" Type </a></h3>
<p>
The user's function is called *instead of* the standard kernel routine. This method completely bypasses the routines inside of the dscudkp.sys/.vxd kernel code. When an interrupt is generated by the board, the kernel routine will immediately break out and call the user's function.
<p>
This means that the user defined function is responsible for everything that the standard interrupt function does, including (if necessary): resetting the interrupt flipflop on the board, removing A/D data from the FIFO, putting the data in a user-accessible buffer, checking for FIFO overflow, and determining if interrupts should be terminated. If you do not want to perform these functions yourself, consider the "Solo" type below.
<p>
<h3><a name="The_Solo_Type"> The "Solo" Type </a></h3>
<p>
This interrupt is generated by either a counter/timer on the board or an external signal, depending on the available features on the board. When the interrupt is generated, it does not trigger any other functionality on the board (i.e. no A/D conversion).
<p>
This interrupt type is used typically when the user needs to call a background function at regular intervals, but does not desire A/D samples to be generated or processed.
<p>
<h3><a name="Why_is_there_no_Before_type?"> Why is there no "Before" type? </a></h3>
<p>
Diamond Systems' Universal Driver uses a driver toolkit called WinDriver to handle interrupt operations on several operating systems. WinDriver runs interrupt functions in a Kernel mode separate from the application, where the user interrupt function resides. When an interrupt is generated, control transfers to the kernel code. With the structure of WinDriver, it is not possible to run non-kernel code before kernel code. There is no way to have the kernel interrupt routine "break out" of itself, run a user-mode function, and then "break in" to the kernel again. Therefore the user interrupt function must run after the kernel code containing the main interrupt function is finished.
<p></div><p><em> <br> This page was last modified 19:04, 3 Feb 2004.<br>Copyright (c) 2004 Diamond Systems.  All Rights Reserved.</em><!-- Time since request: 0.15 secs. --></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -