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

📄 apci1710_inp_cpt.c

📁 最新版comedi的源码
💻 C
📖 第 1 页 / 共 3 页
字号:
		 case APCI1710_DISABLE:		 devpriv->s_ModuleInfo [b_ModulNbr].		 s_PulseEncoderModuleInfo.		 dw_ControlRegister = devpriv->s_ModuleInfo [b_ModulNbr].				      s_PulseEncoderModuleInfo.				      dw_ControlRegister & (0xFFFFFFFFUL - (1UL << b_PulseEncoderNbr));		 /*****************************/		 /* Disable the pulse encoder */		 /*****************************/				 outl(devpriv->s_ModuleInfo [b_ModulNbr].			 s_PulseEncoderModuleInfo.			 dw_ControlRegister,devpriv->s_BoardInfos.			 ui_Address + 16 + (64 * b_ModulNbr));			break;		 }// switch End		 }	      else		 {		 /*********************************/		 /* Pulse encoder not initialised */		 /*********************************/		 DPRINTK("Pulse encoder not initialised\n");		 i_ReturnValue = -4;		 }	      }	   else	      {	      /************************************/	      /* Pulse encoder selection is wrong */	      /************************************/	      DPRINTK("Pulse encoder selection is wrong\n");		      i_ReturnValue = -3;	      }	   }	else	   {	   /*****************************/	   /* Module selection is wrong */	   /*****************************/	   DPRINTK("Module selection is wrong\n");		   i_ReturnValue = -2;	   }	return (i_ReturnValue);	}/*+----------------------------------------------------------------------------+| Function Name     : _INT_ i_APCI1710_ReadPulseEncoderStatus                ||                                       (BYTE_  b_BoardHandle,               ||                                        BYTE_  b_ModulNbr,                  ||                                        BYTE_  b_PulseEncoderNbr,           ||                                        PBYTE_ pb_Status)                   |+----------------------------------------------------------------------------+| Task    APCI1710_PULSEENCODER_READ          : Reads the pulse encoder status 											and valuefrom selected pulse     ||                     encoder (b_PulseEncoderNbr) from selected module       ||                     (b_ModulNbr).                                          |+----------------------------------------------------------------------------+	BYTE   b_Type; data[0]   APCI1710_PULSEENCODER_WRITE		   		 Writes a 32-bit value (ul_WriteValue) into the selected||                     pulse encoder (b_PulseEncoderNbr) from selected module ||                     (b_ModulNbr). This operation set the new start pulse   ||                     encoder value. APCI1710_PULSEENCODER_READ| Input Parameters  : BYTE_   b_BoardHandle       : Handle of board APCI-1710||            CRAREF()         BYTE_   b_ModulNbr          : Module number to         ||                                                   configure (0 to 3)       ||              data[1]       BYTE_   b_PulseEncoderNbr   : Pulse encoder selection  ||                                                   (0 to 3)      APCI1710_PULSEENCODER_WRITE  				data[2]		ULONG_ ul_WriteValue        : 32-bit value to be       ||                                                   written             |+----------------------------------------------------------------------------+| Output Parameters : PBYTE_ pb_Status            : Pulse encoder status.    ||                                                       0 : No overflow occur||                                                       1 : Overflow occur 						PULONG_ pul_ReadValue       : Pulse encoder value      |  |+----------------------------------------------------------------------------+| Return Value      :  0: No error                                           ||                     -1: The handle parameter of the board is wrong         ||                     -2: Module selection is wrong                          ||                     -3: Pulse encoder selection is wrong                   ||                     -4: Pulse encoder not initialised.                     ||                         See function "i_APCI1710_InitPulseEncoder"         |+----------------------------------------------------------------------------+*//*_INT_   i_APCI1710_ReadPulseEncoderStatus       (BYTE_   b_BoardHandle,						 BYTE_   b_ModulNbr,						 BYTE_   b_PulseEncoderNbr,   						 PBYTE_ pb_Status)						 */INT   i_APCI1710_InsnBitsReadWritePulseEncoder(comedi_device *dev,comedi_subdevice *s,	comedi_insn *insn,lsampl_t *data)	{	INT    i_ReturnValue = 0;	DWORD dw_StatusRegister;	BYTE   b_ModulNbr;	BYTE   b_PulseEncoderNbr;	PBYTE  pb_Status;	BYTE   b_Type;	PULONG pul_ReadValue;	ULONG ul_WriteValue ;                              	i_ReturnValue=insn->n;	b_ModulNbr		=(BYTE) CR_AREF(insn->chanspec);    	b_Type			=(BYTE)   data[0] ;	b_PulseEncoderNbr=(BYTE) data[1];	pb_Status		=(PBYTE) &data[0];	pul_ReadValue	=(PULONG) &data[1];    	/***********************************/	/* Test the selected module number */	/***********************************/	if (b_ModulNbr <= 3)	   {	   /******************************************/	   /* Test the selected pulse encoder number */	   /******************************************/	   if (b_PulseEncoderNbr <= 3)	      {	      /*************************************/	      /* Test if pulse encoder initialised */	      /*************************************/	      if (devpriv->s_ModuleInfo [b_ModulNbr].		  s_PulseEncoderModuleInfo.		  s_PulseEncoderInfo [b_PulseEncoderNbr].		  b_PulseEncoderInit == 1)		 {		switch(b_Type)		{		case APCI1710_PULSEENCODER_READ:		 /****************************/		 /* Read the status register */		 /****************************/					dw_StatusRegister=inl(devpriv->s_BoardInfos.			ui_Address + 16 + (64 * b_ModulNbr));		 devpriv->s_ModuleInfo [b_ModulNbr].		 s_PulseEncoderModuleInfo.		 dw_StatusRegister = devpriv->				     s_ModuleInfo [b_ModulNbr].				     s_PulseEncoderModuleInfo.				     dw_StatusRegister | dw_StatusRegister;		 *pb_Status = (BYTE) (devpriv->s_ModuleInfo [b_ModulNbr].			      s_PulseEncoderModuleInfo.			      dw_StatusRegister >> (1 + b_PulseEncoderNbr)) & 1;		 devpriv->s_ModuleInfo [b_ModulNbr].		 s_PulseEncoderModuleInfo.		 dw_StatusRegister = devpriv->s_ModuleInfo [b_ModulNbr].				     s_PulseEncoderModuleInfo.				     dw_StatusRegister & (0xFFFFFFFFUL - (1 << (1 + b_PulseEncoderNbr)));		 /******************/		 /* Read the value */		 /******************/		 		*pul_ReadValue=inl(devpriv->s_BoardInfos.			ui_Address + (4 * b_PulseEncoderNbr) + (64 * b_ModulNbr));		 break;		case APCI1710_PULSEENCODER_WRITE:			ul_WriteValue = (ULONG) data[2];			/*******************/			/* Write the value */			/*******************/						outl(ul_WriteValue,devpriv->s_BoardInfos.			 ui_Address + (4 * b_PulseEncoderNbr) + (64 * b_ModulNbr));		}//end of switch		 }	      else		 {		 /*********************************/		 /* Pulse encoder not initialised */		 /*********************************/		 DPRINTK("Pulse encoder not initialised\n");		 i_ReturnValue = -4;		 }	      }	   else	      {	      /************************************/	      /* Pulse encoder selection is wrong */	      /************************************/	      DPRINTK("Pulse encoder selection is wrong\n"); 			      i_ReturnValue = -3;	      }	   }	else	   {	   /*****************************/	   /* Module selection is wrong */	   /*****************************/	   DPRINTK("Module selection is wrong\n");	   i_ReturnValue = -2;	   }	return (i_ReturnValue);	}INT   i_APCI1710_InsnReadInterruptPulseEncoder(comedi_device *dev,comedi_subdevice *s,	comedi_insn *insn,lsampl_t *data){	data[0] = devpriv->s_InterruptParameters.						      s_FIFOInterruptParameters [devpriv->										 s_InterruptParameters.										 ui_Read].b_OldModuleMask;        data[1] = devpriv->s_InterruptParameters.						      s_FIFOInterruptParameters [devpriv->										 s_InterruptParameters.										 ui_Read].ul_OldInterruptMask;        data[2] = devpriv->s_InterruptParameters.						      s_FIFOInterruptParameters [devpriv->										 s_InterruptParameters.										 ui_Read].ul_OldCounterLatchValue;			     	/***************************/	/* Increment the read FIFO */	/***************************/	devpriv->s_InterruptParameters.	ui_Read = (devpriv->	s_InterruptParameters.ui_Read + 1) % APCI1710_SAVE_INTERRUPT;        return insn->n;}

⌨️ 快捷键说明

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