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

📄 apci1710_82x54.c

📁 最新版comedi的源码
💻 C
📖 第 1 页 / 共 5 页
字号:
                         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;         break;                 case APCI1710_TIMER_READALLTIMER:	/**************************/	/* Test the module number */	/**************************/       	if (b_ModulNbr < 4)	   {	   /***********************/	   /* Test if 82X54 timer */	   /***********************/	   if ((devpriv->s_BoardInfos.		dw_MolduleConfiguration [b_ModulNbr] & 0xFFFF0000UL) == APCI1710_82X54_TIMER)	      {	      /********************************/	      /* Test if timer 0 iniutialised */	      /********************************/	      if (devpriv->s_ModuleInfo [b_ModulNbr].		  s_82X54ModuleInfo.		  s_82X54TimerInfo  [0].		  b_82X54Init == 1)		 {		 /********************************/		 /* Test if timer 1 iniutialised */		 /********************************/		 if (devpriv->s_ModuleInfo [b_ModulNbr].		     s_82X54ModuleInfo.		     s_82X54TimerInfo  [1].		     b_82X54Init == 1)		    {		    /********************************/		    /* Test if timer 2 iniutialised */		    /********************************/		    if (devpriv->s_ModuleInfo [b_ModulNbr].			s_82X54ModuleInfo.			s_82X54TimerInfo  [2].			b_82X54Init == 1)		       {		       /*********************/		       /* Latch all counter */		       /*********************/		       				outl(0x17,devpriv->s_BoardInfos.			       ui_Address + 12 + (64 * b_ModulNbr));		       /**************************/		       /* Read the timer 0 value */		       /**************************/		       				pul_TimerValueArray [0]=inl(devpriv->s_BoardInfos.			      ui_Address + 0 + (64 * b_ModulNbr));		       /**************************/		       /* Read the timer 1 value */		       /**************************/		       				pul_TimerValueArray [1]=inl(devpriv->s_BoardInfos.			      ui_Address + 4 + (64 * b_ModulNbr));		       /**************************/		       /* Read the timer 2 value */		       /**************************/		       				pul_TimerValueArray [2]=inl(devpriv->s_BoardInfos.			      ui_Address + 8 + (64 * b_ModulNbr));		       }		    else		       {		       /****************************************/		       /* Timer 2 not initialised see function */		       /****************************************/                      DPRINTK("Timer 2 not initialised see function\n");		       i_ReturnValue = -6;		       }		    }		 else		    {		    /****************************************/		    /* Timer 1 not initialised see function */		    /****************************************/			DPRINTK("Timer 1 not initialised see function\n");		    i_ReturnValue = -5;		    }		 }	      else		 {		 /****************************************/		 /* Timer 0 not initialised see function */		 /****************************************/		 DPRINTK("Timer 0 not initialised see function\n");		 i_ReturnValue = -4;		 }	      }	   else	      {	      /************************************/	      /* The module is not a TIMER module */	      /************************************/	      DPRINTK("The module is not a TIMER module\n");	      i_ReturnValue = -3;	      }	   }	else	   {	   /***********************/	   /* Module number error */	   /***********************/	   DPRINTK("Module number error\n");	   i_ReturnValue = -2;	   }       }// End of Switch	return (i_ReturnValue);	}/*+----------------------------------------------------------------------------+| Function Name     :INT i_APCI1710_InsnBitsTimer(comedi_device *dev,comedi_subdevice *s,comedi_insn *insn,lsampl_t *data)                   |+----------------------------------------------------------------------------+| Task              : Read write functions for Timer                                          |+----------------------------------------------------------------------------+| Input Parameters  : +----------------------------------------------------------------------------+| Output Parameters : -                                                      |+----------------------------------------------------------------------------+| Return Value      : +----------------------------------------------------------------------------+*/INT	i_APCI1710_InsnBitsTimer(comedi_device *dev,comedi_subdevice *s,comedi_insn *insn,lsampl_t *data){	BYTE b_BitsType;	INT i_ReturnValue=0;    	b_BitsType=data[0];	printk ("\n82X54");		switch(b_BitsType)	{	case APCI1710_TIMER_READVALUE:		i_ReturnValue=i_APCI1710_ReadTimerValue       (dev,					 (BYTE)   CR_AREF(insn->chanspec),					 (BYTE)    CR_CHAN(insn->chanspec),					 (PULONG)   &data[0]);		break;	case APCI1710_TIMER_GETOUTPUTLEVEL:		i_ReturnValue=i_APCI1710_GetTimerOutputLevel  (dev,					 (BYTE)   CR_AREF(insn->chanspec),					 (BYTE)   CR_CHAN(insn->chanspec),					 (PBYTE)  &data[0]);		break;	case APCI1710_TIMER_GETPROGRESSSTATUS:		i_ReturnValue=i_APCI1710_GetTimerProgressStatus  (dev,						 (BYTE)   CR_AREF(insn->chanspec),						 (BYTE)   CR_CHAN(insn->chanspec),						 (PBYTE) &data[0]);		break;	case APCI1710_TIMER_WRITEVALUE:		i_ReturnValue=i_APCI1710_WriteTimerValue      (dev,					 (BYTE)   CR_AREF(insn->chanspec),					 (BYTE)   CR_CHAN(insn->chanspec),					 (ULONG)  data[1]);                 		break;	default:		printk("Bits Config Parameter Wrong\n");                i_ReturnValue=-1;	}	if(i_ReturnValue>=0) i_ReturnValue =insn->n;	return (i_ReturnValue);}/*+----------------------------------------------------------------------------+| Function Name     : _INT_     i_APCI1710_ReadTimerValue                    ||                                       (BYTE_     b_BoardHandle,            ||                                        BYTE_     b_ModulNbr,               ||                                        BYTE_     b_TimerNbr,               ||                                        PULONG_ pul_TimerValue)             |+----------------------------------------------------------------------------+| Task              : Return the timer value from selected digital timer     ||                     (b_TimerNbr) from selected timer  module (b_ModulNbr). |+----------------------------------------------------------------------------+| Input Parameters  : BYTE_   b_BoardHandle     : Handle of board            ||                                                 APCI-1710                  ||                     BYTE_   b_ModulNbr        : Selected module number     ||                                                 (0 to 3)                   ||                     BYTE_   b_TimerNbr        : Timer number to read       ||                                                 (0 to 2)                   |+----------------------------------------------------------------------------+| Output Parameters : PULONG_ pul_TimerValue    : Timer value                |+----------------------------------------------------------------------------+| Return Value      : 0: No error                                            ||                    -1: The handle parameter of the board is wrong          ||                    -2: Module selection wrong                              ||                    -3: Timer selection wrong                               ||                    -4: The module is not a TIMER module                    ||                    -5: Timer not initialised see function                  ||                        "i_APCI1710_InitTimer"                              |+----------------------------------------------------------------------------+*/INT   i_APCI1710_ReadTimerValue       (comedi_device *dev,					 BYTE     b_ModulNbr,					 BYTE     b_TimerNbr,					 PULONG   pul_TimerValue)	{	INT i_ReturnValue = 0;		/**************************/	/* Test the module number */	/**************************/	if (b_ModulNbr < 4)	   {	   /***********************/	   /* Test if 82X54 timer */	   /***********************/	   if ((devpriv->s_BoardInfos.		dw_MolduleConfiguration [b_ModulNbr] & 0xFFFF0000UL) == APCI1710_82X54_TIMER)	      {	      /*************************/	      /* Test the timer number */	      /*************************/	      if (b_TimerNbr <= 2)		 {		 /*****************************/		 /* Test if timer initialised */		 /*****************************/		 if (devpriv->		     s_ModuleInfo [b_ModulNbr].		     s_82X54ModuleInfo.		     s_82X54TimerInfo  [b_TimerNbr].		     b_82X54Init == 1)		    {		    /*************************/		    /* Latch the timer value */		    /*************************/		    			 outl((2 << b_TimerNbr) | 0xD0,devpriv->s_BoardInfos.			    ui_Address + 12 + (64 * b_ModulNbr));		    /**************************/		    /* Read the counter value */		    /**************************/		                                   			*pul_TimerValue=inl(devpriv->s_BoardInfos.		   	ui_Address + (b_TimerNbr * 4) + (64 * b_ModulNbr));		    }		 else		    {		    /**************************************/		    /* Timer not initialised see function */		    /**************************************/                    DPRINTK("Timer not initialised see function\n");		    i_ReturnValue = -5;		    }		 }	      else		 {		 /*************************/		 /* Timer selection wrong */		 /*************************/		 DPRINTK("Timer selection wrong\n");		 i_ReturnValue = -3;

⌨️ 快捷键说明

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