VME Functions (mvme_xxx)
[Midas VME standard]


Functions

int EXPRT mvme_open (MVME_INTERFACE **vme, int idx)
int EXPRT mvme_close (MVME_INTERFACE *vme)
int EXPRT mvme_sysreset (MVME_INTERFACE *vme)
int EXPRT mvme_read (MVME_INTERFACE *vme, void *dst, mvme_addr_t vme_addr, mvme_size_t n_bytes)
unsigned int EXPRT mvme_read_value (MVME_INTERFACE *vme, mvme_addr_t vme_addr)
int EXPRT mvme_write (MVME_INTERFACE *vme, mvme_addr_t vme_addr, void *src, mvme_size_t n_bytes)
int EXPRT mvme_write_value (MVME_INTERFACE *vme, mvme_addr_t vme_addr, unsigned int value)
int EXPRT mvme_set_am (MVME_INTERFACE *vme, int am)
int EXPRT mvme_get_am (MVME_INTERFACE *vme, int *am)
int EXPRT mvme_set_dmode (MVME_INTERFACE *vme, int dmode)
int EXPRT mvme_get_dmode (MVME_INTERFACE *vme, int *dmode)
int EXPRT mvme_set_blt (MVME_INTERFACE *vme, int mode)
int EXPRT mvme_get_blt (MVME_INTERFACE *vme, int *mode)


Function Documentation

int EXPRT mvme_close ( MVME_INTERFACE vme  ) 

Close and release ALL the opened VME channel. See example in mvme_open()

Parameters:
*vme VME structure.
Returns:
MVME_SUCCESS, MVME_ACCESS_ERROR

int EXPRT mvme_get_am ( MVME_INTERFACE vme,
int *  am 
)

Get Address Modifier.

Parameters:
*vme VME structure
*am returned address modifier
Returns:
MVME_SUCCESS

Referenced by sis3820_FifoRead(), VPPGRegRead(), and VPPGRegWrite().

int EXPRT mvme_get_blt ( MVME_INTERFACE vme,
int *  mode 
)

Get current Data mode.

Parameters:
*vme VME structure
*mode returned BLT mode
Returns:
MVME_SUCCESS

int EXPRT mvme_get_dmode ( MVME_INTERFACE vme,
int *  dmode 
)

Get current Data mode.

Parameters:
*vme VME structure
*dmode returned address modifier
Returns:
MVME_SUCCESS

Referenced by lrs1151_Clear(), lrs1151_Read(), lrs1190_CountRead(), lrs1190_Disable(), lrs1190_Enable(), lrs1190_H2Read(), lrs1190_I4Read(), lrs1190_L2Read(), lrs1190_Reset(), sis3801_channel_enable(), sis3801_CSR_read(), sis3801_CSR_write(), sis3801_dwell_time(), sis3801_FIFO_clear(), sis3801_FIFO_flush(), sis3801_HFIFO_read(), sis3801_input_mode(), sis3801_int_attach(), sis3801_int_source(), sis3801_int_source_disable(), sis3801_int_source_enable(), sis3801_IRQ_REG_read(), sis3801_IRQ_REG_write(), sis3801_module_ID(), sis3801_module_reset(), sis3801_next_logic(), sis3801_ref1(), sis3801_Setup(), v1190_AcqModeRead(), v1190_ContinuousSet(), v1190_DataRead(), v1190_DataReady(), v1190_EventRead(), v1190_EvtCounter(), v1190_EvtStored(), v1190_GeoWrite(), v1190_LEResolutionSet(), v1190_MicroFlush(), v1190_MicroRead(), v1190_MicroWrite(), v1190_OffsetSet(), v1190_ResolutionRead(), v1190_SetEdgeDetection(), v1190_Setup(), v1190_SoftClear(), v1190_SoftReset(), v1190_SoftTrigger(), v1190_Status(), v1190_TdcIdList(), v1190_TriggerMatchingSet(), v1190_WidthSet(), v1729_AcqStart(), v1729_ChannelSelect(), v1729_DataRead(), v1729_FrqSamplingSet(), v1729_isTrigger(), v1729_NColsGet(), v1729_NColsSet(), v1729_OrderData(), v1729_PedestalRun(), v1729_PostTrigSet(), v1729_PreTrigSet(), v1729_Reset(), v1729_Setup(), v1729_SoftTrigger(), v1729_Status(), v1729_TimeCalibrationRun(), v1729_TriggerTypeSet(), v792_BitSet2Clear(), v792_BitSet2Read(), v792_BitSet2Set(), v792_ControlRegister1Read(), v792_ControlRegister1Write(), v792_CSR1Read(), v792_CSR2Read(), v792_DataClear(), v792_DataRead(), v792_DataReady(), v792_EmptyEnable(), v792_EventRead(), v792_EvtCntRead(), v792_EvtCntReset(), v792_EvtTriggerSet(), v792_IntDisable(), v792_IntEnable(), v792_IntSet(), v792_isBusy(), v792_isPresent(), v792_LowThDisable(), v792_LowThEnable(), v792_OnlineSet(), v792_Setup(), v792_SingleShotReset(), v792_SoftReset(), v792_Status(), v792_ThresholdRead(), v792_ThresholdWrite(), v792_Trigger(), vf48_AcqStart(), vf48_AcqStop(), vf48_ActiveChMaskRead(), vf48_ActiveChMaskSet(), vf48_ChSuppRead(), vf48_ChSuppSet(), vf48_CsrRead(), vf48_DivisorRead(), vf48_DivisorWrite(), vf48_EventRead(), vf48_EventRead64(), vf48_ExtTrgClr(), vf48_ExtTrgSet(), vf48_FeFull(), vf48_FeNotEmpty(), vf48_GrpEnable(), vf48_GrpRead(), vf48_HitThresholdRead(), vf48_HitThresholdSet(), vf48_isPresent(), vf48_NFrameRead(), vf48_ParameterRead(), vf48_ParameterWrite(), vf48_RawDataSuppRead(), vf48_RawDataSuppSet(), vf48_Reset(), vf48_SegmentSizeRead(), vf48_SegmentSizeSet(), vf48_Setup(), vf48_Status(), vf48_TrgThresholdRead(), vf48_TrgThresholdSet(), vpc6_ASDHysteresisSet(), vpc6_ASDModeSet(), vpc6_ASDRegSet(), vpc6_ASDThresholdSet(), vpc6_CfgRetrieve(), vpc6_isPortBusy(), vpc6_PATypeRead(), vpc6_PATypeWrite(), vpc6_PortCfgLoad(), vpc6_PortRegRBRead(), vpc6_PortRegRead(), vpc6_PortTypeRead(), vpc6_Setup(), vpc6_Status(), VPPGRegRead(), VPPGRegWrite(), vt2_CSRRead(), vt2_CycleNumberRead(), vt2_CycleReset(), vt2_FifoLevelRead(), vt2_FifoRead(), vt2_IntEnable(), vt2_KeepAlive(), vt2_ManReset(), vt48_EventRead(), vt48_RegPrint(), vt48_RegRead(), vt48_RegWrite(), vt48_Setup(), vt48_Status(), vt48_WindowOffsetSet(), and vt48_WindowSet().

int EXPRT mvme_interrupt_attach ( MVME_INTERFACE mvme,
int  level,
int  vector,
void(*)(int, void *, void *)  isr,
void *  info 
)

Referenced by sis3801_int_attach().

int EXPRT mvme_interrupt_detach ( MVME_INTERFACE mvme,
int  level,
int  vector,
void *  info 
)

int EXPRT mvme_interrupt_disable ( MVME_INTERFACE mvme,
int  level,
int  vector,
void *  info 
)

int EXPRT mvme_interrupt_enable ( MVME_INTERFACE mvme,
int  level,
int  vector,
void *  info 
)

int EXPRT mvme_interrupt_generate ( MVME_INTERFACE mvme,
int  level,
int  vector,
void *  info 
)

int EXPRT mvme_open ( MVME_INTERFACE **  vme,
int  idx 
)

VME open The code below summarize the use of most of the mvme calls included in this interface.

#include "vmicvme.h"  // or other VME interface driver.

int main () {
  int i, status, vmeio_status, data;
  MVME_INTERFACE *myvme;

  // Open VME channel 
  status = mvme_open(&myvme, 0);

  // Reset VME 
  // Under VMIC reboot CPU!!
  //  status = mvme_sysreset(myvme);

  // Setup AM 
  status = mvme_set_am(myvme, MVME_AM_A24_ND);

  // Setup Data size 
  status = mvme_set_dmode(myvme, MVME_DMODE_D32);

  // Read VMEIO status 
  status = mvme_read(myvme, &vmeio_status, 0x78001C, 4); 
  printf("VMEIO status : 0x%x\n", vmeio_status);

  // Write Single value 
  mvme_write_value(myvme, 0x780010, 0x3);

  // Read Single Value 
  printf("Value : 0x%x\n", mvme_read_value(myvme, 0x780018));

  // Write to the VMEIO in latch mode 
  for (i=0;i<10000;i++) {
    data = 0xF;
    status = mvme_write(myvme, 0x780010, &data, 4);
    data = 0x0;
    status = mvme_write(myvme, 0x780010, &data, 4);
  }

  // Close VME channel 
  status = mvme_close(myvme);
  return 1;
}
Parameters:
**vme user VME pointer to the interface
idx interface number should be used to distingush multiple VME interface access within the same program.
Returns:
status MVME_SUCCESS, MVME_NO_INTERFACE, MVME_INVALID_PARAM, MVME_ACCESS_ERROR

int EXPRT mvme_read ( MVME_INTERFACE vme,
void *  dst,
mvme_addr_t  vme_addr,
mvme_size_t  n_bytes 
)

Read from VME bus. Implementation of the read can include automatic DMA transfer based on the size of the data. See example in mvme_open()

Parameters:
*vme VME structure
*dst destination pointer
vme_addr source address (VME location).
n_bytes requested transfer size.
Returns:
MVME_SUCCESS

Referenced by sis3820_FifoRead(), v1190_DataRead(), v560_Read(), v792_DataRead(), and vf48_DataRead().

unsigned int EXPRT mvme_read_value ( MVME_INTERFACE vme,
mvme_addr_t  vme_addr 
)

Read single data from VME bus. Useful for register access. See example in mvme_open()

Parameters:
*vme VME structure
vme_addr source address (VME location).
Returns:
MVME_SUCCESS

Referenced by lrs1151_Read(), lrs1190_CountRead(), lrs1190_H2Read(), lrs1190_I4Read(), lrs1190_L2Read(), lrs1190_Reset(), v895::readReg16(), v895::readReg8(), regRead(), sis3801_CSR_read(), sis3801_dwell_time(), sis3801_FIFO_flush(), sis3801_HFIFO_read(), sis3801_input_mode(), sis3801_IRQ_REG_read(), sis3801_IRQ_REG_write(), sis3801_module_ID(), sis3801_next_logic(), sis3801_ref1(), v1190_DataReady(), v1190_EventRead(), v1190_EvtCounter(), v1190_EvtStored(), v1190_GeoWrite(), v1190_MicroRead(), v1190_MicroWrite(), v1729_DataRead(), v1729_isTrigger(), v1729_NColsGet(), v1729_OrderData(), v1729_PedestalRun(), v1729_Status(), v1729_TimeCalibrationRun(), v792_BitSet2Read(), v792_ControlRegister1Read(), v792_CSR1Read(), v792_CSR2Read(), v792_DataReady(), v792_EventRead(), v792_EvtCntRead(), v792_isBusy(), v792_isPresent(), v792_Read16(), v792_Status(), v792_ThresholdRead(), v792_ThresholdWrite(), vf48_AcqStart(), vf48_AcqStop(), vf48_CsrRead(), vf48_EventRead(), vf48_ExtTrgClr(), vf48_ExtTrgSet(), vf48_FeFull(), vf48_FeNotEmpty(), vf48_GrpRead(), vf48_isPresent(), vf48_NFrameRead(), vf48_ParameterRead(), vf48_ParameterWrite(), vf48_Reset(), vf48_Status(), vf48_Trigger(), vmeio_AsyncRead(), vmeio_CsrRead(), vmeio_SyncRead(), vpc6_ASDHysteresisSet(), vpc6_ASDModeSet(), vpc6_ASDThresholdSet(), vpc6_isPortBusy(), vpc6_PATypeRead(), vpc6_PortRegRBRead(), vpc6_PortRegRead(), vpc6_PortTypeRead(), VPPGRegRead(), VPPGRegWrite(), vt2_CSRRead(), vt2_CycleNumberRead(), vt2_FifoLevelRead(), vt2_FifoRead(), vt48_EventRead(), and vt48_RegRead().

int EXPRT mvme_set_am ( MVME_INTERFACE vme,
int  am 
)

Set Address Modifier.

Parameters:
*vme VME structure
am address modifier
Returns:
MVME_SUCCESS

Referenced by regRead(), regWrite(), sis3820_FifoRead(), v560_Read(), vf48_AcqStart(), vf48_AcqStop(), vf48_DataRead(), vf48_NFrameRead(), vmeio_AsyncRead(), vmeio_AsyncWrite(), vmeio_CsrRead(), vmeio_IntEnable(), vmeio_IntRearm(), vmeio_OutputSet(), vmeio_StrobeClear(), vmeio_SyncRead(), vmeio_SyncWrite(), VPPGRegRead(), and VPPGRegWrite().

int EXPRT mvme_set_blt ( MVME_INTERFACE vme,
int  mode 
)

Set Block Transfer mode.

Parameters:
*vme VME structure
mode BLT mode
Returns:
MVME_SUCCESS

Referenced by sis3820_FifoRead(), and vf48_DataRead().

int EXPRT mvme_set_dmode ( MVME_INTERFACE vme,
int  dmode 
)

Set Data mode.

Parameters:
*vme VME structure
dmode Data mode
Returns:
MVME_SUCCESS

Referenced by lrs1151_Clear(), lrs1151_Read(), lrs1190_CountRead(), lrs1190_Disable(), lrs1190_Enable(), lrs1190_H2Read(), lrs1190_I4Read(), lrs1190_L2Read(), lrs1190_Reset(), v895::readReg16(), v895::readReg8(), regRead(), regWrite(), sis3801_channel_enable(), sis3801_CSR_read(), sis3801_CSR_write(), sis3801_dwell_time(), sis3801_FIFO_clear(), sis3801_FIFO_flush(), sis3801_HFIFO_read(), sis3801_input_mode(), sis3801_int_attach(), sis3801_int_source(), sis3801_int_source_disable(), sis3801_int_source_enable(), sis3801_IRQ_REG_read(), sis3801_IRQ_REG_write(), sis3801_module_ID(), sis3801_module_reset(), sis3801_next_logic(), sis3801_ref1(), sis3801_Setup(), v1190_AcqModeRead(), v1190_ContinuousSet(), v1190_DataRead(), v1190_DataReady(), v1190_EventRead(), v1190_EvtCounter(), v1190_EvtStored(), v1190_GeoWrite(), v1190_LEResolutionSet(), v1190_MicroFlush(), v1190_MicroRead(), v1190_MicroWrite(), v1190_OffsetSet(), v1190_ResolutionRead(), v1190_SetEdgeDetection(), v1190_Setup(), v1190_SoftClear(), v1190_SoftReset(), v1190_SoftTrigger(), v1190_Status(), v1190_TdcIdList(), v1190_TriggerMatchingSet(), v1190_WidthSet(), v1729_AcqStart(), v1729_ChannelSelect(), v1729_DataRead(), v1729_FrqSamplingSet(), v1729_isTrigger(), v1729_NColsGet(), v1729_NColsSet(), v1729_OrderData(), v1729_PedestalRun(), v1729_PostTrigSet(), v1729_PreTrigSet(), v1729_Reset(), v1729_Setup(), v1729_SoftTrigger(), v1729_Status(), v1729_TimeCalibrationRun(), v1729_TriggerTypeSet(), v560_Read(), v792_BitSet2Clear(), v792_BitSet2Read(), v792_BitSet2Set(), v792_ControlRegister1Read(), v792_ControlRegister1Write(), v792_CSR1Read(), v792_CSR2Read(), v792_DataClear(), v792_DataRead(), v792_DataReady(), v792_EmptyEnable(), v792_EventRead(), v792_EvtCntRead(), v792_EvtCntReset(), v792_EvtTriggerSet(), v792_IntDisable(), v792_IntEnable(), v792_IntSet(), v792_isBusy(), v792_isPresent(), v792_LowThDisable(), v792_LowThEnable(), v792_OnlineSet(), v792_Read16(), v792_Setup(), v792_SingleShotReset(), v792_SoftReset(), v792_Status(), v792_ThresholdRead(), v792_ThresholdWrite(), v792_Trigger(), v792_Write16(), vf48_AcqStart(), vf48_AcqStop(), vf48_ActiveChMaskRead(), vf48_ActiveChMaskSet(), vf48_ChSuppRead(), vf48_ChSuppSet(), vf48_CsrRead(), vf48_DataRead(), vf48_DivisorRead(), vf48_DivisorWrite(), vf48_EventRead(), vf48_EventRead64(), vf48_ExtTrgClr(), vf48_ExtTrgSet(), vf48_FeFull(), vf48_FeNotEmpty(), vf48_GrpEnable(), vf48_GrpRead(), vf48_HitThresholdRead(), vf48_HitThresholdSet(), vf48_isPresent(), vf48_NFrameRead(), vf48_ParameterRead(), vf48_ParameterWrite(), vf48_RawDataSuppRead(), vf48_RawDataSuppSet(), vf48_Reset(), vf48_SegmentSizeRead(), vf48_SegmentSizeSet(), vf48_Setup(), vf48_Status(), vf48_TrgThresholdRead(), vf48_TrgThresholdSet(), vmeio_AsyncRead(), vmeio_AsyncWrite(), vmeio_CsrRead(), vmeio_IntEnable(), vmeio_IntRearm(), vmeio_OutputSet(), vmeio_StrobeClear(), vmeio_SyncRead(), vmeio_SyncWrite(), vpc6_ASDHysteresisSet(), vpc6_ASDModeSet(), vpc6_ASDRegSet(), vpc6_ASDThresholdSet(), vpc6_CfgRetrieve(), vpc6_isPortBusy(), vpc6_PATypeRead(), vpc6_PATypeWrite(), vpc6_PortCfgLoad(), vpc6_PortRegRBRead(), vpc6_PortRegRead(), vpc6_PortTypeRead(), vpc6_Setup(), vpc6_Status(), VPPGRegRead(), VPPGRegWrite(), vt2_CSRRead(), vt2_CycleNumberRead(), vt2_CycleReset(), vt2_FifoLevelRead(), vt2_FifoRead(), vt2_IntEnable(), vt2_KeepAlive(), vt2_ManReset(), vt48_EventRead(), vt48_RegPrint(), vt48_RegRead(), vt48_RegWrite(), vt48_Setup(), vt48_Status(), vt48_WindowOffsetSet(), vt48_WindowSet(), v895::writeReg16(), and v895::writeReg8().

int EXPRT mvme_sysreset ( MVME_INTERFACE vme  ) 

VME bus reset. Effect of the VME bus reset is dependent of the type of VME interface used. See example in mvme_open()

Parameters:
*vme VME structure.
Returns:
MVME_SUCCESS, MVME_ACCESS_ERROR

int EXPRT mvme_write ( MVME_INTERFACE vme,
mvme_addr_t  vme_addr,
void *  src,
mvme_size_t  n_bytes 
)

Write data to VME bus. Implementation of the write can include automatic DMA transfer based on the size of the data. See example in mvme_open()

Parameters:
*vme VME structure
vme_addr source address (VME location).
*src source array
n_bytes size of the array in bytes
Returns:
MVME_SUCCESS

int EXPRT mvme_write_value ( MVME_INTERFACE vme,
mvme_addr_t  vme_addr,
unsigned int  value 
)

Write single data to VME bus. Useful for register access. See example in mvme_open()

Parameters:
*vme VME structure
vme_addr source address (VME location).
value Value to be written to the VME bus
Returns:
MVME_SUCCESS

Referenced by lrs1151_Clear(), lrs1190_Disable(), lrs1190_Enable(), lrs1190_I4Read(), regWrite(), sis3801_channel_enable(), sis3801_CSR_write(), sis3801_dwell_time(), sis3801_FIFO_clear(), sis3801_input_mode(), sis3801_int_attach(), sis3801_int_clear(), sis3801_int_source(), sis3801_int_source_disable(), sis3801_int_source_enable(), sis3801_IRQ_REG_write(), sis3801_module_reset(), sis3801_next_logic(), sis3801_ref1(), v1190_GeoWrite(), v1190_MicroWrite(), v1190_SoftClear(), v1190_SoftReset(), v1190_SoftTrigger(), v1729_AcqStart(), v1729_ChannelSelect(), v1729_FrqSamplingSet(), v1729_NColsSet(), v1729_PostTrigSet(), v1729_PreTrigSet(), v1729_Reset(), v1729_Setup(), v1729_SoftTrigger(), v1729_TriggerTypeSet(), v792_BitSet2Clear(), v792_BitSet2Set(), v792_ControlRegister1Write(), v792_DataClear(), v792_EmptyEnable(), v792_EvtCntReset(), v792_EvtTriggerSet(), v792_IntDisable(), v792_IntEnable(), v792_IntSet(), v792_LowThDisable(), v792_LowThEnable(), v792_OnlineSet(), v792_SingleShotReset(), v792_SoftReset(), v792_ThresholdWrite(), v792_Trigger(), v792_Write16(), vf48_AcqStart(), vf48_AcqStop(), vf48_ExtTrgClr(), vf48_ExtTrgSet(), vf48_GrpEnable(), vf48_ParameterRead(), vf48_ParameterWrite(), vf48_Reset(), vf48_Trigger(), vmeio_AsyncWrite(), vmeio_IntEnable(), vmeio_IntRearm(), vmeio_OutputSet(), vmeio_StrobeClear(), vmeio_SyncWrite(), vpc6_ASDRegSet(), vpc6_CfgRetrieve(), vpc6_PATypeWrite(), vpc6_PortCfgLoad(), VPPGRegWrite(), vt2_CycleReset(), vt2_IntEnable(), vt2_KeepAlive(), vt2_ManReset(), vt48_RegWrite(), v895::writeReg16(), and v895::writeReg8().


Midas DOC Version 2.0.2 ---- PSI Stefan Ritt ----
Contributions: Pierre-Andre Amaudruz - Sergio Ballestrero - Suzannah Daviel - Doxygen - Peter Green - Qing Gu - Greg Hackman - Gertjan Hofman - Paul Knowles - Exaos Lee - Rudi Meier - Glenn Moloney - Dave Morris - John M O'Donnell - Konstantin Olchanski - Renee Poutissou - Tamsen Schurman - Andreas Suter - Jan M.Wouters - Piotr Adam Zolnierczuk