📄 apci1710_82x54.c
字号:
} // if ((b_TimerNbr >= 0) && (b_TimerNbr <= 2)) } else { /************************************/ /* The module is not a TIMER module */ /************************************/ DPRINTK("The module is not a TIMER module\n"); i_ReturnValue = -4; } } else { /***********************/ /* Module number error */ /***********************/ DPRINTK("Module number error\n"); i_ReturnValue = -2; } return (i_ReturnValue); } /*+----------------------------------------------------------------------------+| Function Name : _INT_ i_APCI1710_GetTimerOutputLevel || (BYTE_ b_BoardHandle, || BYTE_ b_ModulNbr, || BYTE_ b_TimerNbr, || PBYTE_ pb_OutputLevel) |+----------------------------------------------------------------------------+| Task : Return the output signal level (pb_OutputLevel) 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 test || (0 to 2) |+----------------------------------------------------------------------------+| Output Parameters : PBYTE_ pb_OutputLevel : Output signal level || 0 : The output is low || 1 : The output is high |+----------------------------------------------------------------------------+| 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_GetTimerOutputLevel (comedi_device *dev, BYTE b_ModulNbr, BYTE b_TimerNbr, PBYTE pb_OutputLevel) { INT i_ReturnValue = 0; DWORD dw_TimerStatus; /**************************/ /* 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) | 0xE0,devpriv->s_BoardInfos. ui_Address + 12 + (64 * b_ModulNbr)); /*************************/ /* Read the timer status */ /*************************/ dw_TimerStatus=inl(devpriv->s_BoardInfos. ui_Address + 16 + (b_TimerNbr * 4) + (64 * b_ModulNbr)); *pb_OutputLevel = (BYTE) (((dw_TimerStatus >> 7) & 1) ^ devpriv-> s_ModuleInfo [b_ModulNbr]. s_82X54ModuleInfo. s_82X54TimerInfo [b_TimerNbr]. b_OutputLevel); } 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; } // if ((b_TimerNbr >= 0) && (b_TimerNbr <= 2)) } else { /************************************/ /* The module is not a TIMER module */ /************************************/ DPRINTK("The module is not a TIMER module\n"); i_ReturnValue = -4; } } else { /***********************/ /* Module number error */ /***********************/ DPRINTK("Module number error\n"); i_ReturnValue = -2; } return (i_ReturnValue); }/*+----------------------------------------------------------------------------+| Function Name : _INT_ i_APCI1710_GetTimerProgressStatus || (BYTE_ b_BoardHandle, || BYTE_ b_ModulNbr, || BYTE_ b_TimerNbr, || PBYTE_ pb_TimerStatus) |+----------------------------------------------------------------------------+| Task : Return the progress status (pb_TimerStatus) 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 test || (0 to 2) |+----------------------------------------------------------------------------+| Output Parameters : PBYTE_ pb_TimerStatus : Output signal level || 0 : Timer not in progress || 1 : Timer in progress |+----------------------------------------------------------------------------+| 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_GetTimerProgressStatus (comedi_device *dev, BYTE b_ModulNbr, BYTE b_TimerNbr, PBYTE pb_TimerStatus) { INT i_ReturnValue = 0; DWORD dw_TimerStatus; /**************************/ /* 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) | 0xE0,devpriv->s_BoardInfos. ui_Address + 12 + (64 * b_ModulNbr)); /*************************/ /* Read the timer status */ /*************************/ dw_TimerStatus=inl(devpriv->s_BoardInfos. ui_Address + 16 + (b_TimerNbr * 4) + (64 * b_ModulNbr)); *pb_TimerStatus = (BYTE) ((dw_TimerStatus) >> 8) & 1; printk("ProgressStatus : %d",*pb_TimerStatus); } else { /**************************************/ /* Timer not initialised see function */ /**************************************/ i_ReturnValue = -5; } } else { /*************************/ /* Timer selection wrong */ /*************************/ i_ReturnValue = -3; } // if ((b_TimerNbr >= 0) && (b_TimerNbr <= 2)) } else { /************************************/ /* The module is not a TIMER module */ /************************************/ i_ReturnValue = -4; } } else { /***********************/ /* Module number error */ /***********************/ i_ReturnValue = -2; } return (i_ReturnValue); }/*+----------------------------------------------------------------------------+| Function Name : _INT_ i_APCI1710_WriteTimerValue || (BYTE_ b_BoardHandle, || BYTE_ b_ModulNbr, || BYTE_ b_TimerNbr, || ULONG_ ul_WriteValue) |+----------------------------------------------------------------------------+| Task : Write the value (ul_WriteValue) into the selected timer|| (b_TimerNbr) from selected timer module (b_ModulNbr). || The action in depend of the time mode selection. || See timer mode description table. |+----------------------------------------------------------------------------+| 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 write || (0 to 2) || ULONG_ ul_WriteValue : Value to write |+----------------------------------------------------------------------------+| Output Parameters : - |+-----------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -