Subversion Repositories f9daq

Compare Revisions

Ignore whitespace Rev 189 → Rev 190

/cvi/instr/CAENV462/CAENV462.c
0,0 → 1,110
#include <ansi_c.h>
#include "CAENV462.h"
#include "CAENV462_DEF.h"
 
#ifdef SISVME
#include "sisvme_dll.h"
#endif
#ifdef WIENVME
#include "wienvme_dll.h"
#endif
 
static unsigned long ModuleAddress[10];
 
int _VI_FUNC V462_map (int ModuleNumber,
unsigned long ModuleOffset, int print)
{
unsigned short vsr, mmt, fix;
ModuleAddress[ModuleNumber] = ModuleOffset;
VME_A24D16_R(ModuleAddress[ModuleNumber] + CAENV462_FIX,&fix);
VME_A24D16_R(ModuleAddress[ModuleNumber] + CAENV462_MMT,&mmt);
VME_A24D16_R(ModuleAddress[ModuleNumber] + CAENV462_VSR,&vsr);
if (print) {
printf("fixed code = 0x%04x\n", fix);
printf("manufacturer number = %i\n", MANUFACTURER(mmt));
printf("module type = %i\n", MODULE_TYPE(mmt));
printf("version = %i\n", VERSION(vsr));
printf("serial no. = %i\n", SERIAL(vsr));
}
if ((fix != FIX_CODE) || (mmt != CAENV462_MMT_VALUE)) return 1;
return 0;
}
 
int _VI_FUNC V462_set0 (int ModuleNumber, int time)
{
int i;
unsigned int status;
union {
unsigned short lsbmsb[2];
unsigned long bcd;
} set;
if ((time > 99999999) || (time < 0)) time = 0;
set.bcd = 0;
for (i=0;i<32;i+=4) {
set.bcd |= (time % 10) << i;
time = time / 10;
}
 
VME_A24D16_W(ModuleAddress[ModuleNumber] + CAENV462_MSB0, &set.lsbmsb[1]);
VME_A24D16_W(ModuleAddress[ModuleNumber] + CAENV462_LSB0, &set.lsbmsb[0]);
VME_A24D16_R(ModuleAddress[ModuleNumber] + CAENV462_CSR, &status);
return (status & CAENV462_STATUS);
}
 
int _VI_FUNC V462_set1 (int ModuleNumber, int time)
{
int i;
unsigned int status;
union {
unsigned short lsbmsb[2];
unsigned long bcd;
} set;
if ((time > 99999999) || (time < 0)) time = 0;
set.bcd = 0;
for (i=0;i<32;i+=4) {
set.bcd |= (time % 10) << i;
time = time / 10;
}
 
VME_A24D16_W(ModuleAddress[ModuleNumber] + CAENV462_MSB1, &set.lsbmsb[1]);
VME_A24D16_W(ModuleAddress[ModuleNumber] + CAENV462_LSB1, &set.lsbmsb[0]);
VME_A24D16_R(ModuleAddress[ModuleNumber] + CAENV462_CSR, &status);
return ( status & CAENV462_STATUS );
}
 
int _VI_FUNC V462_start0 (int ModuleNumber)
{
unsigned int status;
unsigned short dum16= CAENV462_START0;
VME_A24D16_W(ModuleAddress[ModuleNumber] + CAENV462_CSR, &dum16 );
VME_A24D16_R(ModuleAddress[ModuleNumber] + CAENV462_CSR, &status);
return ( status & CAENV462_STATUS );
}
 
 
int _VI_FUNC V462_start1 (int ModuleNumber)
{
unsigned int status;
unsigned short dum16= CAENV462_START1;
VME_A24D16_W(ModuleAddress[ModuleNumber] + CAENV462_CSR, &dum16 );
VME_A24D16_R(ModuleAddress[ModuleNumber] + CAENV462_CSR, &status);
return ( status & CAENV462_STATUS );
}
 
 
 
 
int _VI_FUNC V462_status (int ModuleNumber)
{
unsigned int status;
VME_A24D16_R(ModuleAddress[ModuleNumber] + CAENV462_CSR, &status);
return (status & CAENV462_STATUS );
}
/cvi/instr/CAENV462/CAENV462.fp
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: instr/CAENV462/CAENV462.h
===================================================================
--- instr/CAENV462/CAENV462.h (nonexistent)
+++ instr/CAENV462/CAENV462.h (revision 190)
@@ -0,0 +1,13 @@
+#ifndef _CAENV462_H
+#define _CAENV462_H
+
+#include <ivi.h>
+
+int _VI_FUNC V462_map (int ModulNumber, unsigned long ModuelOffset, int print);
+int _VI_FUNC V462_set0 (int ModuleNumber, int time);
+int _VI_FUNC V462_set1 (int ModuleNumber, int time);
+int _VI_FUNC V462_start0 (int ModuleNumber);
+int _VI_FUNC V462_start1 (int ModuleNumber);
+int _VI_FUNC V462_status (int ModuleNumber);
+
+#endif
Index: instr/CAENV462/CAENV462_DEF.h
===================================================================
--- instr/CAENV462/CAENV462_DEF.h (nonexistent)
+++ instr/CAENV462/CAENV462_DEF.h (revision 190)
@@ -0,0 +1,24 @@
+// 13.4.2007 napaka v CAENV462_START1, popravil Rok Pestotnik
+#define CAENV462_CSR 0x00
+#define CAENV462_MSB0 0x02
+#define CAENV462_LSB0 0x04
+#define CAENV462_MSB1 0x06
+#define CAENV462_LSB1 0x08
+#define CAENV462_FIX 0xFA
+#define CAENV462_MMT 0xFC
+#define CAENV462_VSR 0xFE
+
+#define FIX_CODE 0xFAF5
+#define CAENV462_MMT_VALUE 0x080A
+#define CAENV462_START0 0x200
+#define CAENV462_START1 0x400
+#define CAENV462_STATUS 0xF800
+
+#define VERSION(x) (((x)>>12) & 0xf)
+#define SERIAL(x) ((x) & 0xfff)
+#define MANUFACTURER(x) (((x)>>10) & 0x3f)
+#define MODULE_TYPE(x) ((x) & 0x3ff)
+
+#define VME_D8(x) ( *((unsigned char *) (x)))
+#define VME_D16(x) ( *((unsigned short *) (x)))
+#define VME_D32(x) ( *((unsigned long *) (x)))