Subversion Repositories f9daq

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
186 f9daq 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