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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? hwdrv_apci1710.c

?? 最新版comedi的源碼
?? C
?? 第 1 頁 / 共 3 頁
字號(hào):
/**@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;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产又粗又猛又爽又黄91精品| 欧美日韩的一区二区| 国产剧情一区二区三区| 久久99久久99| 国产一区二区三区国产| 久久99国产精品免费| 国内精品嫩模私拍在线| 国产乱人伦精品一区二区在线观看| 精品一区二区三区av| 精品一区二区久久久| 国产精品一区二区不卡| 成人免费福利片| 成人免费观看av| av午夜精品一区二区三区| 91啪亚洲精品| 欧美日韩在线观看一区二区| 884aa四虎影成人精品一区| 91精品国产91久久久久久最新毛片| 日韩欧美一区二区在线视频| 精品国一区二区三区| 久久精品亚洲精品国产欧美kt∨| 国产欧美精品一区aⅴ影院| 中文字幕一区二区在线播放| 亚洲乱码国产乱码精品精小说| 亚洲一级不卡视频| 免费在线观看成人| 国产黄色精品视频| 91女厕偷拍女厕偷拍高清| 欧美日韩一区视频| 久久综合色婷婷| 亚洲天堂av老司机| 日韩精品高清不卡| 高清视频一区二区| 在线亚洲精品福利网址导航| 欧美一区二区三区在线观看视频| 欧美精品一区二区三区久久久| 欧美国产日本视频| 亚洲成在人线在线播放| 欧美日韩国产区一| 精品日产卡一卡二卡麻豆| 国产精品久久久久久久久晋中 | 91麻豆免费观看| 欧美乱妇20p| 国产亚洲精品福利| 亚洲成av人片在线| 国产高清精品在线| 欧美色大人视频| 久久久久国产精品麻豆ai换脸 | 一区二区在线电影| 久久成人免费网| 一本到一区二区三区| 欧美大胆一级视频| 亚洲精品乱码久久久久久黑人| 久久99蜜桃精品| 在线观看国产91| 国产人成亚洲第一网站在线播放 | 日本一区二区视频在线观看| 一区av在线播放| 国产美女在线观看一区| 在线一区二区三区四区| 久久九九久久九九| 五月综合激情婷婷六月色窝| 豆国产96在线|亚洲| 日韩视频一区二区三区在线播放| 亚洲女同一区二区| 丁香天五香天堂综合| 日韩一区二区三区免费看 | 91精品婷婷国产综合久久性色 | 丝袜美腿成人在线| 色老头久久综合| 中文字幕av在线一区二区三区| 日韩av中文在线观看| 一本色道久久加勒比精品| 日本一区免费视频| 久久精品国产亚洲5555| 欧美区在线观看| 一区二区三区欧美激情| 99久久精品国产网站| 久久久国产精华| 狠狠色伊人亚洲综合成人| 欧美日韩高清影院| 亚洲免费av高清| 99久久免费视频.com| 国产亚洲短视频| 精品亚洲国内自在自线福利| 国产精品久久久久久久久久久免费看| 丝袜亚洲另类丝袜在线| 欧洲国内综合视频| 亚洲猫色日本管| 97se亚洲国产综合自在线| 国产日韩视频一区二区三区| 国产在线国偷精品产拍免费yy| 日韩视频免费直播| 日本伊人色综合网| 制服丝袜成人动漫| 婷婷综合五月天| 欧美日韩你懂得| 亚洲激情自拍视频| 色婷婷久久99综合精品jk白丝| 日韩理论片在线| 91麻豆免费观看| 一区二区三国产精华液| 色综合天天综合网天天看片| 国产精品高清亚洲| 99在线热播精品免费| 国产精品久久久久久久裸模| 国产99精品国产| 日本一区二区成人| 成人黄色小视频| 亚洲人一二三区| 欧美综合久久久| 亚洲无人区一区| 678五月天丁香亚洲综合网| 日韩vs国产vs欧美| 欧美tk丨vk视频| 国产精品1区二区.| 国产精品久久久久影视| 91在线观看免费视频| 亚洲精品中文在线| 欧美色倩网站大全免费| 日本不卡高清视频| 精品精品国产高清a毛片牛牛| 国产成人亚洲综合色影视| 亚洲国产精品99久久久久久久久| 99热在这里有精品免费| 一区二区三区av电影| 91精品一区二区三区在线观看| 狠狠色丁香婷婷综合| 国产三区在线成人av| 91视频精品在这里| 爽好多水快深点欧美视频| 久久一二三国产| 99久久精品免费看国产| 天天爽夜夜爽夜夜爽精品视频| 精品日韩欧美一区二区| 成人毛片在线观看| 亚洲一区二区综合| 精品日韩欧美一区二区| 99精品视频一区| 日韩电影一区二区三区| 国产欧美精品一区二区色综合朱莉| 91免费国产视频网站| 污片在线观看一区二区| 国产午夜精品久久久久久久| 在线观看亚洲一区| 久久激情五月激情| 中文字幕中文字幕中文字幕亚洲无线| 欧美日韩在线精品一区二区三区激情| 精品亚洲porn| 亚洲欧美日韩小说| 日韩午夜激情免费电影| av电影天堂一区二区在线观看| 日韩中文字幕一区二区三区| 欧美一区二区视频在线观看2020| 国产成人亚洲综合a∨婷婷| 亚洲福利一二三区| 久久久精品人体av艺术| 欧美伊人久久久久久久久影院| 国产一区二区在线视频| 国产精品一区二区在线观看不卡| 欧美三级资源在线| 午夜激情一区二区| 日韩无一区二区| 成人黄色小视频在线观看| 日本欧美一区二区在线观看| 亚洲青青青在线视频| 2020国产精品自拍| 欧美日韩国产精选| 92国产精品观看| 国产乱码精品一区二区三| 爽好久久久欧美精品| 亚洲男人的天堂在线观看| 日韩欧美国产小视频| 色欧美片视频在线观看| 成人午夜激情在线| 久久成人综合网| 五月天一区二区三区| 成人免费在线播放视频| 久久婷婷综合激情| 日韩亚洲欧美一区二区三区| 日本国产一区二区| 成人精品视频一区| 国产做a爰片久久毛片| 视频一区欧美精品| 亚洲一区二区三区三| 亚洲欧洲av一区二区三区久久| 久久久久久毛片| 精品久久久久久久人人人人传媒| 欧美精品国产精品| 欧美伊人久久大香线蕉综合69 | 91精品国产综合久久精品性色| 99国产精品久久久久| 成人ar影院免费观看视频| 国产一区在线不卡| 久久97超碰国产精品超碰| 免费日本视频一区| 婷婷夜色潮精品综合在线| 一区二区三区蜜桃网| 中文字幕一区在线观看| 国产精品的网站|