Subversion Repositories f9daq

Rev

Blame | Last modification | View Log | RSS feed

  1. #include <ansi_c.h>
  2. //#include <stdlib.h>
  3. //#include <stdio.h>
  4. #include "CAENV814.h"
  5. #include "CAENV814_DEF.h"
  6. #include "wienvme_dll.h"
  7.  
  8. static unsigned int ModuleAddress[10];
  9.  
  10. static unsigned short  m_OutputMaskEcl;
  11. static unsigned short  m_OutputMaskLevel;
  12. static unsigned short  m_InputMaskLevel;
  13. int V814_map (int ModuleNumber,
  14.                          unsigned long ModuleOffset, int print)
  15. {
  16.   unsigned short vsr, mmt, fix;
  17.  
  18.   ModuleAddress[ModuleNumber] =  ModuleOffset;
  19.   VME_A24D16_R(ModuleAddress[ModuleNumber] + CAENV814_FIX, &fix);
  20.   VME_A24D16_R(ModuleAddress[ModuleNumber] + CAENV814_MMT, &mmt);
  21.   VME_A24D16_R(ModuleAddress[ModuleNumber] + CAENV814_VSR, &vsr);
  22.   if (print) {
  23.     printf("CAEN V814 fixed code = 0x%04x\n", fix);
  24.     printf("CAEN V814 manufacturer number = %i\n", MANUFACTURER(mmt));
  25.     printf("CAEN V814 module type = %i\n", MODULE_TYPE(mmt));
  26.     printf("CAEN V814 version = %i\n", VERSION(vsr));
  27.     printf("CAEN V814 serial no. = %i\n", SERIAL(vsr));
  28.   }
  29.   if ((fix != CAEN_FIX_CODE) || (mmt != CAENV814_MMT_VALUE)) return -1;
  30.   return 0;
  31. }
  32.  
  33. int V814_init (int ModuleNumber, unsigned int threshold, unsigned int width, unsigned int mask)
  34. {
  35.   int ch;
  36.   V814_SetWidth(    ModuleNumber, width);
  37.  
  38.   for ( ch=0;ch<16;ch++) V814_SetThreshold(ModuleNumber, ch, threshold);
  39.   V814_SetEnable(   ModuleNumber, mask);
  40.   V814_SetMajority( ModuleNumber, 0);
  41.   //printf("V814_init : value of threshold   =%d\n", threshold);
  42.   //printf("V814_init : value of output width=%d\n", width);
  43.   //printf("V814_init : channels enabled mask=%04x\n", mask);
  44.  
  45.   return 0;
  46. }
  47.  
  48.  
  49.  
  50. int V814_SetThreshold(int ModuleNumber, unsigned long channel, unsigned short threshold)
  51. {
  52. VME_A24D16_W(ModuleAddress[ModuleNumber] + channel* 0x2,&threshold);
  53. return 0;
  54. }
  55.  
  56. int V814_SetEnable(int ModuleNumber, unsigned short mask)
  57. {
  58. VME_A24D16_W(ModuleAddress[ModuleNumber] + CAENV814_INH,&mask);
  59. return 0;
  60. }
  61.  
  62.  
  63. int V814_SetWidth(int ModuleNumber, unsigned short wdt)
  64. {
  65. VME_A24D16_W(ModuleAddress[ModuleNumber] + CAENV814_WDT0,&wdt);
  66. VME_A24D16_W(ModuleAddress[ModuleNumber] + CAENV814_WDT1,&wdt);
  67. return 0;
  68. }
  69.  
  70. int V814_SetMajority(int ModuleNumber, unsigned short majlev)
  71. {
  72. unsigned short maj=(int)((majlev*50.-25.)/4.);
  73. VME_A24D16_W(ModuleAddress[ModuleNumber] + CAENV814_MAJ,&maj);
  74. return 0;
  75. }
  76.  
  77. int V814_TestPulse(int ModuleNumber)
  78. {
  79. unsigned short maj=0;
  80. VME_A24D16_W(ModuleAddress[ModuleNumber] + CAENV814_TST,&maj);
  81. return 0;
  82. }
  83.  
  84.  
  85.