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

📄 apci1710_inccpt.c

📁 最新版comedi的源码
💻 C
📖 第 1 页 / 共 5 页
字号:
		 /*****************/		 		 outl(0,devpriv->s_BoardInfos.			 ui_Address + 16 + (64 * b_ModulCpt));		 }	      }	   }	else	   {	   /***************************/	   /* No counter module found */	   /***************************/          DPRINTK("No counter module found\n");	   i_ReturnValue = -2;	   }	return (i_ReturnValue);	}/*+----------------------------------------------------------------------------+| Function Name     : _INT_ i_APCI1710_InitIndex (BYTE_ b_BoardHandle,       ||                                                 BYTE_ b_ModulNbr,          ||                                                 BYTE_ b_ReferenceAction,   ||                                                 BYTE_ b_IndexOperation,    ||                                                 BYTE_ b_AutoMode,          ||                                                 BYTE_ b_InterruptEnable)   |+----------------------------------------------------------------------------+| Task              : Initialise the index corresponding to the selected     ||                     module (b_ModulNbr). If a INDEX flag occur, you have   ||                     the possibility to clear the 32-Bit counter or to latch||                     the current 32-Bit value in to the first latch         ||                     register. The b_IndexOperation parameter give the      ||                     possibility to choice the INDEX action.                ||                     If you have enabled the automatic mode, each INDEX     ||                     action is cleared automatically, else you must read    ||                     the index status ("i_APCI1710_ReadIndexStatus")        ||                     after each INDEX action.                               ||                                                                            ||                                                                            ||                               Index action                                 ||                               ------------                                 ||                                                                            ||           +------------------------+------------------------------------+  ||           |   b_IndexOperation     |         Operation                  |  ||           |------------------------+------------------------------------|  ||           |APCI1710_LATCH_COUNTER  | After a index signal, the counter  |  ||           |                        | value (32-Bit) is latched in to    |  ||           |                        | the first latch register           |  ||           |------------------------|------------------------------------|  ||           |APCI1710_CLEAR_COUNTER  | After a index signal, the counter  |  ||           |                        | value is cleared (32-Bit)          |  ||           +------------------------+------------------------------------+  |+----------------------------------------------------------------------------+| Input Parameters  : BYTE_ b_BoardHandle     : Handle of board APCI-1710    ||                     BYTE_ b_ModulNbr        : Module number to configure   ||                                               (0 to 3)                     ||                     BYTE_ b_ReferenceAction : Determine if the reference   ||                                               must set or no for the       ||                                               acceptance from index        ||                                               APCI1710_ENABLE :            ||                                                  Reference must be set for ||                                                  accepted the index        ||                                               APCI1710_DISABLE :           ||                                                  Reference have not        ||                                                  importance                ||                     BYTE_ b_IndexOperation  : Index operating mode.        ||                                               See table.                   ||                     BYTE_ b_AutoMode        : Enable or disable the        ||                                               automatic index reset.       ||                                               APCI1710_ENABLE :            ||                                                 Enable the automatic mode  ||                                               APCI1710_DISABLE :           ||                                                 Disable the automatic mode ||                     BYTE_ b_InterruptEnable : Enable or disable the        ||                                               interrupt.                   ||                                               APCI1710_ENABLE :            ||                                               Enable the interrupt         ||                                               APCI1710_DISABLE :           ||                                               Disable the interrupt        |+----------------------------------------------------------------------------+| Output Parameters : -                                                      |+----------------------------------------------------------------------------+| Return Value      :  0: No error                                           ||                     -1: The handle parameter of the board is wrong         ||                     -2: No counter module found                            ||                     -3: Counter not initialised see function               ||                         "i_APCI1710_InitCounter"                           ||                     -4  The reference action parameter is wrong            ||                     -5: The index operating mode parameter is wrong        ||                     -6: The auto mode parameter is wrong                   ||                     -7: Interrupt parameter is wrong                       ||                     -8: Interrupt function not initialised.                ||                         See function "i_APCI1710_SetBoardIntRoutineX"      |+----------------------------------------------------------------------------+*/INT   i_APCI1710_InitIndex    (comedi_device *dev,				 BYTE b_ModulNbr,				 BYTE b_ReferenceAction,				 BYTE b_IndexOperation,				 BYTE b_AutoMode,				 BYTE b_InterruptEnable)	{	INT  i_ReturnValue = 0;		/**************************/	/* Test the module number */	/**************************/	if (b_ModulNbr < 4)	   {	   /*******************************/	   /* Test if counter initialised */	   /*******************************/	   if (devpriv->	       s_ModuleInfo [b_ModulNbr].	       s_SiemensCounterInfo.	       s_InitFlag.	       b_CounterInit == 1)	      {	      /********************************/	      /* Test the reference parameter */	      /********************************/	      if (b_ReferenceAction == APCI1710_ENABLE ||		  b_ReferenceAction == APCI1710_DISABLE)		 {		 /****************************/		 /* Test the index parameter */		 /****************************/		 if (b_IndexOperation == APCI1710_HIGH_EDGE_LATCH_COUNTER           ||		     b_IndexOperation == APCI1710_LOW_EDGE_LATCH_COUNTER            ||		     b_IndexOperation == APCI1710_HIGH_EDGE_CLEAR_COUNTER           ||		     b_IndexOperation == APCI1710_LOW_EDGE_CLEAR_COUNTER            ||		     b_IndexOperation == APCI1710_HIGH_EDGE_LATCH_AND_CLEAR_COUNTER ||		     b_IndexOperation == APCI1710_LOW_EDGE_LATCH_AND_CLEAR_COUNTER)		    {		    /********************************/		    /* Test the auto mode parameter */		    /********************************/		    if (b_AutoMode == APCI1710_ENABLE ||			b_AutoMode == APCI1710_DISABLE)		       {		       /***************************/		       /* Test the interrupt mode */		       /***************************/		       if (b_InterruptEnable == APCI1710_ENABLE ||			   b_InterruptEnable == APCI1710_DISABLE)			  {			 			     /************************************/			     /* Makte the configuration commando */			     /************************************/			     if (b_ReferenceAction == APCI1710_ENABLE)				{				devpriv->				s_ModuleInfo [b_ModulNbr].				s_SiemensCounterInfo.				s_ModeRegister.				s_ByteModeRegister.				b_ModeRegister2 = devpriv->						  s_ModuleInfo [b_ModulNbr].						  s_SiemensCounterInfo.						  s_ModeRegister.						  s_ByteModeRegister.						  b_ModeRegister2 | APCI1710_ENABLE_INDEX_ACTION;				}			     else				{				devpriv->				s_ModuleInfo [b_ModulNbr].				s_SiemensCounterInfo.				s_ModeRegister.				s_ByteModeRegister.				b_ModeRegister2 = devpriv->						  s_ModuleInfo [b_ModulNbr].						  s_SiemensCounterInfo.						  s_ModeRegister.						  s_ByteModeRegister.						  b_ModeRegister2 & APCI1710_DISABLE_INDEX_ACTION;				}			     /****************************************/			     /* Test if low level latch or/and clear */			     /****************************************/			     if (b_IndexOperation == APCI1710_LOW_EDGE_LATCH_COUNTER ||				 b_IndexOperation == APCI1710_LOW_EDGE_CLEAR_COUNTER ||				 b_IndexOperation == APCI1710_LOW_EDGE_LATCH_AND_CLEAR_COUNTER)				{				/*************************************/				/* Set the index level to low (DQ26) */				/*************************************/				devpriv->				s_ModuleInfo [b_ModulNbr].				s_SiemensCounterInfo.				s_ModeRegister.				s_ByteModeRegister.				b_ModeRegister4 = devpriv->						  s_ModuleInfo [b_ModulNbr].						  s_SiemensCounterInfo.						  s_ModeRegister.						  s_ByteModeRegister.						  b_ModeRegister4 | APCI1710_SET_LOW_INDEX_LEVEL;				}			     else				{				/**************************************/				/* Set the index level to high (DQ26) */				/**************************************/				devpriv->				s_ModuleInfo [b_ModulNbr].				s_SiemensCounterInfo.				s_ModeRegister.				s_ByteModeRegister.				b_ModeRegister4 = devpriv->						  s_ModuleInfo [b_ModulNbr].						  s_SiemensCounterInfo.						  s_ModeRegister.						  s_ByteModeRegister.						  b_ModeRegister4 & APCI1710_SET_HIGH_INDEX_LEVEL;				}			     /***********************************/			     /* Test if latch and clear counter */			     /***********************************/			     if (b_IndexOperation == APCI1710_HIGH_EDGE_LATCH_AND_CLEAR_COUNTER ||				 b_IndexOperation == APCI1710_LOW_EDGE_LATCH_AND_CLEAR_COUNTER)				{				/***************************************/				/* Set the latch and clear flag (DQ27) */				/***************************************/				devpriv->				s_ModuleInfo [b_ModulNbr].				s_SiemensCounterInfo.				s_ModeRegister.				s_ByteModeRegister.				b_ModeRegister4 = devpriv->						  s_ModuleInfo [b_ModulNbr].						  s_SiemensCounterInfo.						  s_ModeRegister.						  s_ByteModeRegister.						  b_ModeRegister4 | APCI1710_ENABLE_LATCH_AND_CLEAR;				} // if (b_IndexOperation == APCI1710_HIGH_EDGE_LATCH_AND_CLEAR_COUNTER || b_IndexOperation == APCI1710_LOW_EDGE_LATCH_AND_CLEAR_COUNTER)			     else				{				/*****************************************/				/* Clear the latch and clear flag (DQ27) */				/*****************************************/				devpriv->				s_ModuleInfo [b_ModulNbr].				s_SiemensCounterInfo.				s_ModeRegister.				s_ByteModeRegister.				b_ModeRegister4 = devpriv->						  s_ModuleInfo [b_ModulNbr].						  s_SiemensCounterInfo.						  s_ModeRegister.						  s_ByteModeRegister.						  b_ModeRegister4 & APCI1710_DISABLE_LATCH_AND_CLEAR;				/*************************/				/* Test if latch counter */				/*************************/				if (b_IndexOperation == APCI1710_HIGH_EDGE_LATCH_COUNTER ||				    b_IndexOperation == APCI1710_LOW_EDGE_LATCH_COUNTER)				   {				   /*********************************/				   /* Enable the latch from counter */				   /*********************************/				   devpriv->				   s_ModuleInfo [b_ModulNbr].				   s_SiemensCounterInfo.				   s_ModeRegister.				   s_ByteModeRegister.				   b_ModeRegister2 = devpriv->						     s_ModuleInfo [b_ModulNbr].						     s_SiemensCounterInfo.						     s_ModeRegister.						     s_ByteModeRegister.						     b_ModeRegister2 | APCI1710_INDEX_LATCH_COUNTER;				   }				else				   {				   /*********************************/				   /* Enable the clear from counter */				   /*********************************/				   devpriv->				   s_ModuleInfo [b_ModulNbr].				   s_SiemensCounterInfo.				   s_ModeRegister.				   s_ByteModeRegister.				   b_ModeRegister2 = devpriv->						     s_ModuleInfo [b_ModulNbr].						     s_SiemensCounterInfo.						     s_ModeRegister.						     s_ByteModeRegister.						     b_ModeRegister2 & (~APCI1710_INDEX_LATCH_COUNTER);				   }				} // // if (b_IndexOperation == APCI1710_HIGH_EDGE_LATCH_AND_CLEAR_COUNTER || b_IndexOperation == APCI1710_LOW_EDGE_LATCH_AND_CLEAR_COUNTER)

⌨️ 快捷键说明

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