| 0,0 → 1,84 |
| #include <ansi_c.h> |
| //#include <stdlib.h> |
| //#include <stdio.h> |
| #include "CAENV814.h" |
| #include "CAENV814_DEF.h" |
| #include "wienvme_dll.h" |
| |
| static unsigned int ModuleAddress[10]; |
| |
| static unsigned short m_OutputMaskEcl; |
| static unsigned short m_OutputMaskLevel; |
| static unsigned short m_InputMaskLevel; |
| int V814_map (int ModuleNumber, |
| unsigned long ModuleOffset, int print) |
| { |
| unsigned short vsr, mmt, fix; |
| |
| ModuleAddress[ModuleNumber] = ModuleOffset; |
| VME_A24D16_R(ModuleAddress[ModuleNumber] + CAENV814_FIX, &fix); |
| VME_A24D16_R(ModuleAddress[ModuleNumber] + CAENV814_MMT, &mmt); |
| VME_A24D16_R(ModuleAddress[ModuleNumber] + CAENV814_VSR, &vsr); |
| if (print) { |
| printf("CAEN V814 fixed code = 0x%04x\n", fix); |
| printf("CAEN V814 manufacturer number = %i\n", MANUFACTURER(mmt)); |
| printf("CAEN V814 module type = %i\n", MODULE_TYPE(mmt)); |
| printf("CAEN V814 version = %i\n", VERSION(vsr)); |
| printf("CAEN V814 serial no. = %i\n", SERIAL(vsr)); |
| } |
| if ((fix != CAEN_FIX_CODE) || (mmt != CAENV814_MMT_VALUE)) return -1; |
| return 0; |
| } |
| |
| int V814_init (int ModuleNumber, unsigned int threshold, unsigned int width, unsigned int mask) |
| { |
| int ch; |
| V814_SetWidth( ModuleNumber, width); |
| |
| for ( ch=0;ch<16;ch++) V814_SetThreshold(ModuleNumber, ch, threshold); |
| V814_SetEnable( ModuleNumber, mask); |
| V814_SetMajority( ModuleNumber, 0); |
| //printf("V814_init : value of threshold =%d\n", threshold); |
| //printf("V814_init : value of output width=%d\n", width); |
| //printf("V814_init : channels enabled mask=%04x\n", mask); |
| |
| return 0; |
| } |
| |
| |
| |
| int V814_SetThreshold(int ModuleNumber, unsigned long channel, unsigned short threshold) |
| { |
| VME_A24D16_W(ModuleAddress[ModuleNumber] + channel* 0x2,&threshold); |
| return 0; |
| } |
| |
| int V814_SetEnable(int ModuleNumber, unsigned short mask) |
| { |
| VME_A24D16_W(ModuleAddress[ModuleNumber] + CAENV814_INH,&mask); |
| return 0; |
| } |
| |
| |
| int V814_SetWidth(int ModuleNumber, unsigned short wdt) |
| { |
| VME_A24D16_W(ModuleAddress[ModuleNumber] + CAENV814_WDT0,&wdt); |
| VME_A24D16_W(ModuleAddress[ModuleNumber] + CAENV814_WDT1,&wdt); |
| return 0; |
| } |
| |
| int V814_SetMajority(int ModuleNumber, unsigned short majlev) |
| { |
| unsigned short maj=(int)((majlev*50.-25.)/4.); |
| VME_A24D16_W(ModuleAddress[ModuleNumber] + CAENV814_MAJ,&maj); |
| return 0; |
| } |
| |
| int V814_TestPulse(int ModuleNumber) |
| { |
| unsigned short maj=0; |
| VME_A24D16_W(ModuleAddress[ModuleNumber] + CAENV814_TST,&maj); |
| return 0; |
| } |
| |
| |