亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hwdrv_apci1710.c

?? 最新版comedi的源碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
/**@verbatimCopyright (C) 2004,2005  ADDI-DATA GmbH for the source code of this module.                 ADDI-DATA GmbH         Dieselstrasse 3         D-77833 Ottersweier         Tel: +19(0)7223/9493-0         Fax: +49(0)7223/9493-92         http://www.addi-data-com         info@addi-data.com This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USAYou shoud also find the complete GPL in the COPYING file accompanying this source code.@endverbatim*//*  +-----------------------------------------------------------------------+  | (C) ADDI-DATA GmbH          Dieselstra?e 3       D-77833 Ottersweier  |  +-----------------------------------------------------------------------+  | Tel : +49 (0) 7223/9493-0     | email    : info@addi-data.com         |  | Fax : +49 (0) 7223/9493-92    | Internet : http://www.addi-data.com   |  +-------------------------------+---------------------------------------+  | Project     : APCI-1710       | Compiler   : GCC                      |  | Module name : hwdrv_apci1710.c| Version    : 2.96                     |  +-------------------------------+---------------------------------------+  | Project manager: Eric Stolz   | Date       :  02/12/2002              |  +-------------------------------+---------------------------------------+  | Description :   Hardware Layer Acces For APCI-1710                    |  +-----------------------------------------------------------------------+  |                             UPDATES                                   |  +----------+-----------+------------------------------------------------+  |   Date   |   Author  |          Description of updates                |  +----------+-----------+------------------------------------------------+  |          |           |                                                |  |          |           |                                                |  |          |           |                                                |  +----------+-----------+------------------------------------------------+*/ #include "hwdrv_APCI1710.h" #include "APCI1710_Inp_cpt.c"  #include "APCI1710_Ssi.c" #include "APCI1710_Tor.c" #include "APCI1710_Ttl.c" #include "APCI1710_Dig_io.c"  #include "APCI1710_82x54.c" #include "APCI1710_Chrono.c" #include "APCI1710_Pwm.c" #include "APCI1710_INCCPT.c"void	i_ADDI_AttachPCI1710 (comedi_device *dev)	{	comedi_subdevice *s;	int ret          = 0;	int n_subdevices = 9;		//Update-0.7.57->0.7.68dev->n_subdevices = 9;	if((ret=alloc_subdevices(dev,n_subdevices))<0)    	return;         // Allocate and Initialise Timer Subdevice Structures		    	s = dev->subdevices + 0;        	s->type = COMEDI_SUBD_TIMER;	s->subdev_flags = SDF_WRITEABLE|SDF_RT|SDF_GROUND|SDF_COMMON; 	s->n_chan = 3; 	s->maxdata = 0; 	s->len_chanlist = 3;	s->range_table = &range_digital;               s->insn_write=i_APCI1710_InsnWriteEnableDisableTimer;	s->insn_read=i_APCI1710_InsnReadAllTimerValue;	s->insn_config=i_APCI1710_InsnConfigInitTimer;	s->insn_bits=i_APCI1710_InsnBitsTimer;       	// Allocate and Initialise DIO Subdevice Structures		s = dev->subdevices + 1;        	s->type = COMEDI_SUBD_DIO;	s->subdev_flags = SDF_WRITEABLE|SDF_READABLE|SDF_RT|SDF_GROUND|SDF_COMMON;	s->n_chan = 7;	s->maxdata = 1;	s->len_chanlist = 7;    	s->range_table = &range_digital;	       	s->insn_config=i_APCI1710_InsnConfigDigitalIO;       	s->insn_read= i_APCI1710_InsnReadDigitalIOChlValue;	s->insn_bits=i_APCI1710_InsnBitsDigitalIOPortOnOff; 	s->insn_write=i_APCI1710_InsnWriteDigitalIOChlOnOff;                // Allocate and Initialise Chrono Subdevice Structures		    	s = dev->subdevices + 2;        	s->type = COMEDI_SUBD_CHRONO;	s->subdev_flags = SDF_WRITEABLE|SDF_RT|SDF_GROUND|SDF_COMMON; 	s->n_chan = 4; 	s->maxdata = 0; 	s->len_chanlist = 4;	s->range_table = &range_digital;                s->insn_write=i_APCI1710_InsnWriteEnableDisableChrono;	s->insn_read=i_APCI1710_InsnReadChrono;	s->insn_config=i_APCI1710_InsnConfigInitChrono;	s->insn_bits=i_APCI1710_InsnBitsChronoDigitalIO;       	       // Allocate and Initialise PWM Subdevice Structures		    	s = dev->subdevices + 3;	s->type = COMEDI_SUBD_PWM;	s->subdev_flags = SDF_WRITEABLE|SDF_READABLE|SDF_RT|SDF_GROUND|SDF_COMMON;	s->n_chan = 3;	s->maxdata = 1;	s->len_chanlist = 3;    	s->range_table = &range_digital;	s->io_bits=0;		//all bits input 		s->insn_config = i_APCI1710_InsnConfigPWM;	s->insn_read   = i_APCI1710_InsnReadGetPWMStatus; 	s->insn_write  = i_APCI1710_InsnWritePWM;        s->insn_bits   = i_APCI1710_InsnBitsReadPWMInterrupt;	// Allocate and Initialise TTLIO Subdevice Structures	s = dev->subdevices + 4;	s->type = COMEDI_SUBD_TTLIO;	s->subdev_flags = SDF_WRITEABLE|SDF_READABLE|SDF_RT|SDF_GROUND|SDF_COMMON;	s->n_chan = 8;	s->maxdata = 1;	s->len_chanlist = 8;    	s->range_table = &range_apci1710_ttl; // to pass arguments in range	        s->insn_config 	= i_APCI1710_InsnConfigInitTTLIO;	s->insn_bits   	= i_APCI1710_InsnBitsReadTTLIO; 	s->insn_write  	= i_APCI1710_InsnWriteSetTTLIOChlOnOff;        s->insn_read	= i_APCI1710_InsnReadTTLIOAllPortValue;	// Allocate and Initialise TOR Subdevice Structures	s = dev->subdevices + 5;	s->type = COMEDI_SUBD_TOR;	s->subdev_flags = SDF_WRITEABLE|SDF_READABLE|SDF_RT|SDF_GROUND|SDF_COMMON;	s->n_chan = 8;	s->maxdata = 1;	s->len_chanlist = 8;    	s->range_table = &range_digital;	s->io_bits=0;		//all bits input 	        s->insn_config = i_APCI1710_InsnConfigInitTorCounter;	s->insn_read   = i_APCI1710_InsnReadGetTorCounterInitialisation; 	s->insn_write  = i_APCI1710_InsnWriteEnableDisableTorCounter;	s->insn_bits   = i_APCI1710_InsnBitsGetTorCounterProgressStatusAndValue; 	// Allocate and Initialise SSI Subdevice Structures	s = dev->subdevices + 6;	s->type = COMEDI_SUBD_SSI;	s->subdev_flags = SDF_WRITEABLE|SDF_READABLE|SDF_RT|SDF_GROUND|SDF_COMMON;	s->n_chan =4;	s->maxdata = 1;	s->len_chanlist = 4;    	s->range_table = &range_apci1710_ssi;		s->insn_config = i_APCI1710_InsnConfigInitSSI;	s->insn_read   = i_APCI1710_InsnReadSSIValue; 	s->insn_bits  = i_APCI1710_InsnBitsSSIDigitalIO; 	// Allocate and Initialise PULSEENCODER Subdevice Structures       	s 			= dev->subdevices + 7;	s->type 		= COMEDI_SUBD_PULSEENCODER;	s->subdev_flags = SDF_WRITEABLE|SDF_READABLE|SDF_RT|SDF_GROUND|SDF_COMMON;	s->n_chan 		= 4;	s->maxdata 		= 1;	s->len_chanlist = 4;    	s->range_table  = &range_digital;		s->insn_config  = i_APCI1710_InsnConfigInitPulseEncoder;	s->insn_write   = i_APCI1710_InsnWriteEnableDisablePulseEncoder; 	s->insn_bits    = i_APCI1710_InsnBitsReadWritePulseEncoder;	s->insn_read    = i_APCI1710_InsnReadInterruptPulseEncoder;	// Allocate and Initialise INCREMENTALCOUNTER Subdevice Structures     	s 			= dev->subdevices + 8;	s->type 		= COMEDI_SUBD_INCREMENTALCOUNTER;	s->subdev_flags = SDF_WRITEABLE|SDF_READABLE|SDF_RT|SDF_GROUND|SDF_COMMON;	s->n_chan 		= 500;	s->maxdata 		= 1;	s->len_chanlist = 500;    	s->range_table  = &range_apci1710_inccpt;		s->insn_config  = i_APCI1710_InsnConfigINCCPT;	s->insn_write   = i_APCI1710_InsnWriteINCCPT;	s->insn_read    = i_APCI1710_InsnReadINCCPT; 	s->insn_bits    = i_APCI1710_InsnBitsINCCPT;	}   int i_APCI1710_Reset(comedi_device *dev);VOID v_APCI1710_Interrupt(int irq, void *d, struct pt_regs *regs) ;//for 1710 int i_APCI1710_Reset(comedi_device *dev){    int ret;    DWORD dw_Dummy;	   	/*********************************/ 	/* Read all module configuration */ 	/*********************************/         ret=inl(devpriv->s_BoardInfos.ui_Address+60);	devpriv->s_BoardInfos.dw_MolduleConfiguration [0]=ret;	             ret=inl(devpriv->s_BoardInfos.ui_Address+124);	devpriv->s_BoardInfos.dw_MolduleConfiguration [1]=ret;	             ret=inl(devpriv->s_BoardInfos.ui_Address+188);	devpriv->s_BoardInfos.dw_MolduleConfiguration [2]=ret;	             ret=inl(devpriv->s_BoardInfos.ui_Address+252);	devpriv->s_BoardInfos.dw_MolduleConfiguration [3]=ret;	// outl(0x80808082,devpriv->s_BoardInfos.ui_Address+0x60);	outl(0x83838383,devpriv->s_BoardInfos.ui_Address+0x60);  		devpriv->s_BoardInfos.b_BoardVersion = 1;    	// Enable the interrupt for the controler 		dw_Dummy =  inl(devpriv->s_BoardInfos.ui_Address+ 0x38);    	outl(dw_Dummy | 0x2000,devpriv->s_BoardInfos.ui_Address+0x38);	return 0;}/*+----------------------------------------------------------------------------+| Function's Name   : __VOID__ v_APCI1710_InterruptFunction                  ||				(BYTE b_Interrupt, __CPPARGS)                |+----------------------------------------------------------------------------+| Task              : APCI-1710 interrupt function                           |+----------------------------------------------------------------------------+| Input Parameters  : BYTE b_Interrupt : Interrupt number                    |+----------------------------------------------------------------------------+| Output Parameters : -                                                      |+----------------------------------------------------------------------------+| Return Value      : 0 : OK                                                 ||                    -1 : Error                                              |+----------------------------------------------------------------------------+*/	VOID v_APCI1710_Interrupt(int irq, void *d, struct pt_regs *regs)  {	comedi_device *dev = d;	BYTE   b_ModuleCpt       = 0;	BYTE   b_InterruptFlag   = 0;	BYTE   b_PWMCpt          = 0;	BYTE   b_TorCounterCpt   = 0;	BYTE   b_PulseIncoderCpt = 0;	UINT  ui_16BitValue;	ULONG ul_InterruptLatchReg = 0;	ULONG ul_LatchRegisterValue = 0;	ULONG ul_82X54InterruptStatus;	ULONG ul_StatusRegister;	str_ModuleInfo  * ps_ModuleInfo;        printk("APCI1710 Interrupt\n");          for (b_ModuleCpt = 0; b_ModuleCpt < 4; b_ModuleCpt ++, ps_ModuleInfo ++)             {		 /**************************/		 /* 1199/0225 to 0100/0226 */		 /**************************/		 ps_ModuleInfo = &devpriv->s_ModuleInfo [b_ModuleCpt];                 /***********************/		 /* Test if 82X54 timer */		 /***********************/		 if ((devpriv->		      s_BoardInfos.		      dw_MolduleConfiguration [b_ModuleCpt] & 0xFFFF0000UL) == APCI1710_82X54_TIMER)		    {		                         //printk("TIMER Interrupt Occurred\n");                     ul_82X54InterruptStatus= inl(devpriv->s_BoardInfos.			       ui_Address + 12 + (64 * b_ModuleCpt));		    /***************************/		    /* Test if interrupt occur */		    /***************************/		    if ((ul_82X54InterruptStatus & ps_ModuleInfo->						   s_82X54ModuleInfo.						   b_InterruptMask) != 0)		       {		       devpriv->		       s_InterruptParameters.		       s_FIFOInterruptParameters [devpriv->						  s_InterruptParameters.						  ui_Write].		       ul_OldInterruptMask = (ul_82X54InterruptStatus & ps_ModuleInfo->									s_82X54ModuleInfo.									b_InterruptMask) << 4;		       devpriv->		       s_InterruptParameters.		       s_FIFOInterruptParameters [devpriv->						  s_InterruptParameters.						  ui_Write].		       b_OldModuleMask = 1 << b_ModuleCpt;		       devpriv->		       s_InterruptParameters.		       s_FIFOInterruptParameters [devpriv->						  s_InterruptParameters.						  ui_Write].		       ul_OldCounterLatchValue = 0;		       devpriv->		       s_InterruptParameters.		       ul_InterruptOccur ++;		       /****************************/		       /* Increment the write FIFO */		       /****************************/		       devpriv->		       s_InterruptParameters.		       ui_Write = (devpriv->				   s_InterruptParameters.				   ui_Write + 1) % APCI1710_SAVE_INTERRUPT;		       b_InterruptFlag = 1;		       			    			     /**********************/			     /* Call user function */			     /**********************/                         //Send a signal to from kernel to user space			     send_sig(SIGIO,devpriv->tsk_Current,0); 			    		       } // if ((ul_82X54InterruptStatus & 0x7) != 0)		    } // 82X54 timer		 /***************************/		 /* Test if increm. counter */		 /***************************/		 if ((devpriv->		      s_BoardInfos.		      dw_MolduleConfiguration [b_ModuleCpt] & 0xFFFF0000UL) == APCI1710_INCREMENTAL_COUNTER)		    {			 ul_InterruptLatchReg=inl(devpriv->s_BoardInfos.			       ui_Address + (64 * b_ModuleCpt));		    /*********************/		    /* Test if interrupt */		    /*********************/		    if ((ul_InterruptLatchReg & 0x22) && (ps_ModuleInfo->							  s_SiemensCounterInfo.							  s_ModeRegister.							  s_ByteModeRegister.							  b_ModeRegister2 & 0x80))		       {		       /************************************/		       /* Test if strobe latch I interrupt */		       /************************************/		       if (ul_InterruptLatchReg & 2)			  {				ul_LatchRegisterValue=inl(devpriv->s_BoardInfos.				     ui_Address + 4 + (64 * b_ModuleCpt));			  devpriv->			  s_InterruptParameters.			  s_FIFOInterruptParameters [devpriv->						     s_InterruptParameters.						     ui_Write].			  ul_OldInterruptMask = 1UL;			  devpriv->			  s_InterruptParameters.			  s_FIFOInterruptParameters [devpriv->						     s_InterruptParameters.						     ui_Write].			  b_OldModuleMask = 1 << b_ModuleCpt;			  devpriv->			  s_InterruptParameters.			  s_FIFOInterruptParameters [devpriv->						     s_InterruptParameters.						     ui_Write].			  ul_OldCounterLatchValue = ul_LatchRegisterValue;			  devpriv->			  s_InterruptParameters.			  ul_InterruptOccur ++;			  /****************************/			  /* 0899/0224 to 1199/0225   */			  /****************************/			  /* Increment the write FIFO */                      /****************************/			  devpriv->			  s_InterruptParameters.			  ui_Write = (devpriv->				      s_InterruptParameters.				      ui_Write + 1) % APCI1710_SAVE_INTERRUPT;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美激情一区二区三区蜜桃视频| 国内精品伊人久久久久av影院 | 亚洲欧美韩国综合色| 亚洲精品国产一区二区三区四区在线| 日韩在线一区二区| 成人黄色小视频| 91精品国产综合久久福利| 中文字幕视频一区二区三区久| 免费在线看一区| 91久久精品一区二区二区| 久久新电视剧免费观看| 久久综合中文字幕| 欧美成人三级在线| 99久久婷婷国产精品综合| 在线亚洲一区二区| 日本一区二区免费在线| 青青青伊人色综合久久| 这里只有精品99re| 亚洲精品视频在线观看免费| 国产精品一区二区不卡| 欧美精选在线播放| 一区二区三区美女视频| 成人精品一区二区三区中文字幕| 精品久久人人做人人爽| 日韩福利视频导航| 欧美另类videos死尸| 一区二区三区电影在线播| 99精品国产91久久久久久| 国产欧美一区二区精品忘忧草| 免费看欧美美女黄的网站| 欧美区视频在线观看| 亚洲黄色av一区| 中日韩免费视频中文字幕| 久久精品国产精品青草| 欧美精选一区二区| 天堂一区二区在线| 欧美电影一区二区三区| 亚洲第一精品在线| 欧美日韩高清一区| 日韩成人免费看| 日韩欧美不卡一区| 九色综合国产一区二区三区| 精品国产一区二区三区不卡 | 成人黄页毛片网站| 国产欧美一区二区三区沐欲| 国产乱对白刺激视频不卡| 一本一道久久a久久精品| 自拍偷拍亚洲综合| 在线观看中文字幕不卡| 亚洲观看高清完整版在线观看| 欧美日韩精品一区视频| 日本不卡一区二区三区| 亚洲精品在线观看网站| 欧美一区二区三级| 555www色欧美视频| 欧美疯狂做受xxxx富婆| 成人一区二区三区| 91黄色在线观看| 日韩国产欧美在线播放| 欧美电视剧免费全集观看| 国产精品自拍毛片| 日韩一区欧美一区| 欧美精品久久久久久久多人混战| 奇米影视一区二区三区| 国产午夜精品在线观看| 日本韩国一区二区| 日韩av不卡一区二区| 国产调教视频一区| 欧美三级电影在线看| 精品无码三级在线观看视频| 最新热久久免费视频| 欧美福利一区二区| 高清不卡在线观看| 日日摸夜夜添夜夜添亚洲女人| 久久久精品日韩欧美| 91福利在线导航| 国产麻豆精品久久一二三| 亚洲欧洲精品天堂一级| 日韩欧美一区在线| 欧美亚洲图片小说| 美国十次综合导航| 亚洲欧美激情视频在线观看一区二区三区| 欧美肥胖老妇做爰| 99久久99久久免费精品蜜臀| 蜜桃视频在线观看一区二区| 亚洲精品伦理在线| 久久久久综合网| 欧美精品xxxxbbbb| 972aa.com艺术欧美| 国产麻豆视频一区二区| 丝袜美腿亚洲一区二区图片| 18成人在线视频| 26uuu久久综合| 欧美亚洲综合网| bt欧美亚洲午夜电影天堂| 激情文学综合插| 日韩有码一区二区三区| 亚洲女性喷水在线观看一区| 国产日产欧产精品推荐色 | 亚洲欧美激情一区二区| 久久久午夜精品| 日韩写真欧美这视频| 欧美视频一二三区| 一道本成人在线| 国产白丝精品91爽爽久久| 国产真实乱对白精彩久久| 秋霞成人午夜伦在线观看| 国产精品久久久久久久蜜臀 | 91在线观看成人| 国产呦精品一区二区三区网站| 亚洲午夜免费视频| 亚洲综合偷拍欧美一区色| 亚洲视频网在线直播| 国产亚洲精品免费| 国产亚洲美州欧州综合国| 久久一留热品黄| 欧美成人在线直播| 日韩免费成人网| 日韩精品中文字幕在线不卡尤物| 欧美美女一区二区在线观看| 欧美日韩情趣电影| 欧美伊人精品成人久久综合97| 91黄视频在线观看| 欧美羞羞免费网站| 精品视频资源站| 4438x亚洲最大成人网| 欧美色图一区二区三区| 欧美日韩卡一卡二| 91精品国产一区二区| 精品毛片乱码1区2区3区| 日韩三级伦理片妻子的秘密按摩| 日韩丝袜情趣美女图片| 精品福利av导航| 中文字幕免费观看一区| 中文字幕视频一区| 亚洲妇女屁股眼交7| 26uuuu精品一区二区| 国产成人av一区二区三区在线| 国内外成人在线| 97se亚洲国产综合自在线观| 日本二三区不卡| 制服丝袜亚洲网站| 久久久久久久久久久久久夜| 亚洲va欧美va人人爽| 奇米四色…亚洲| 成人av网站在线观看免费| 色婷婷综合久久久久中文一区二区| 欧美日韩一区小说| 精品少妇一区二区三区视频免付费| 国产欧美一区二区精品性色| 亚洲美女屁股眼交3| 日韩av二区在线播放| 国产99一区视频免费| 欧美日韩在线不卡| 久久亚洲精品国产精品紫薇| 亚洲激情自拍视频| 毛片av一区二区| 成人高清视频在线| 337p亚洲精品色噜噜狠狠| 久久久久久免费| 亚洲成av人片一区二区三区| 国产精品羞羞答答xxdd| 欧洲av一区二区嗯嗯嗯啊| 欧美性生交片4| 亚洲猫色日本管| 激情av综合网| 一本一道久久a久久精品| 日韩精品一区二| 亚洲丝袜另类动漫二区| 国内外精品视频| 91精品国产色综合久久不卡电影 | 粉嫩蜜臀av国产精品网站| 欧美日韩在线直播| 日本一区二区三区dvd视频在线| 一级中文字幕一区二区| 岛国一区二区在线观看| 欧美一级黄色录像| 一区二区三区欧美| 国产suv精品一区二区三区| 91精品国产色综合久久不卡电影| 亚洲日本一区二区| 懂色一区二区三区免费观看| 日韩欧美国产精品| 亚洲国产精品一区二区尤物区| 成人高清免费在线播放| 欧美精三区欧美精三区| 麻豆免费精品视频| 精品99999| 欧美日韩精品电影| 99在线精品免费| 成人免费精品视频| 久草精品在线观看| 日日摸夜夜添夜夜添国产精品| 国产精品剧情在线亚洲| 中文字幕亚洲一区二区av在线| 亚洲国产精品ⅴa在线观看| 26uuu国产在线精品一区二区| 日韩午夜av一区| 欧美精品一区在线观看| 欧美一区二区在线观看|