Subversion Repositories f9daq

Compare Revisions

Ignore whitespace Rev 88 → Rev 89

/cvi/instr/CAENV288/CAENV288.c
0,0 → 1,94
#include <ansi_c.h>
#include "CAENV288.h"
#include "CAENV288_DEF.h"
 
 
#include "vme.h"
 
#include <utility.h>
 
static unsigned long ModuleAddress[10];
 
void _VI_FUNC V288_Map (int ModuleNumber, unsigned long ModuleOffset)
{
ModuleAddress[ModuleNumber] = ModuleOffset;
 
return;
}
 
void _VI_FUNC V288_Reset(int ModuleNumber)
{
unsigned short ultmp=0;
 
VME_A24D16_W(ModuleAddress[ModuleNumber]+V288_RST, &ultmp);
 
return;
};
 
void _VI_FUNC V288_Init (int ModuleNumber)
{
V288_Reset(ModuleNumber);
 
return;
}
int _VI_FUNC V288_Send (int ModuleNumber,int slaveid,int nbuf,unsigned short *buf)
{
int i;
unsigned short ultmp,ulstat;
ultmp=0x0001;
while (1){
VME_A24D16_W(ModuleAddress[ModuleNumber]+V288_BUF, &ultmp);
VME_A24D16_R(ModuleAddress[ModuleNumber]+V288_STATUS, &ulstat);
if (ulstat & 1) Delay(0.1); else break;
}
 
ultmp=slaveid;
while (1){
VME_A24D16_W(ModuleAddress[ModuleNumber]+V288_BUF, &ultmp);
VME_A24D16_R(ModuleAddress[ModuleNumber]+V288_STATUS, &ulstat);
if (ulstat & 1) Delay(0.1); else break;
}
 
for (i=0;i<nbuf;i++){
ultmp=buf[i];
while (1){
VME_A24D16_W(ModuleAddress[ModuleNumber]+V288_BUF, &ultmp);
VME_A24D16_R(ModuleAddress[ModuleNumber]+V288_STATUS, &ulstat);
if (ulstat & 1) Delay(0.1); else break;
}
}
 
while (1){
VME_A24D16_W(ModuleAddress[ModuleNumber]+V288_TX, &ultmp);
VME_A24D16_R(ModuleAddress[ModuleNumber]+V288_STATUS, &ulstat);
if (ulstat & 1) Delay(0.1); else break;
}
 
return 0;
}
 
int _VI_FUNC V288_Receive(int ModuleNumber,int nbuf,unsigned short *buf)
{
int i;
unsigned short ecode,ulstat;
while (1){
VME_A24D16_R(ModuleAddress[ModuleNumber]+V288_BUF, &ecode);
VME_A24D16_R(ModuleAddress[ModuleNumber]+V288_STATUS, &ulstat);
if (ulstat & 1) Delay(0.1); else break;
}
if (ecode) return 1;
 
i=0;
while (i<nbuf){
VME_A24D16_R(ModuleAddress[ModuleNumber]+V288_BUF, &buf[i]);
VME_A24D16_R(ModuleAddress[ModuleNumber]+V288_STATUS, &ulstat);
if (ulstat & 1) break;
i++;
}
 
return i;
}
/cvi/instr/CAENV288/CAENV288.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/CAENV288/CAENV288_DEF.h
===================================================================
--- instr/CAENV288/CAENV288_DEF.h (nonexistent)
+++ instr/CAENV288/CAENV288_DEF.h (revision 89)
@@ -0,0 +1,10 @@
+#ifndef _CAENV288_DEF_H
+#define _CAENV288_DEF_H
+
+#define V288_BUF 0x0
+#define V288_STATUS 0x2
+#define V288_TX 0x4
+#define V288_RST 0x6
+#define V288_IVR 0x8
+
+#endif
Index: instr/CAENV288/CAENV288.h
===================================================================
--- instr/CAENV288/CAENV288.h (nonexistent)
+++ instr/CAENV288/CAENV288.h (revision 89)
@@ -0,0 +1,12 @@
+#ifndef _CAENV288_H
+#define _CAENV288_H
+
+#include <ivi.h>
+
+void _VI_FUNC V288_Map (int ModuleNumber, unsigned long ModuleOffset);
+void _VI_FUNC V288_Reset(int ModuleNumber);
+void _VI_FUNC V288_Init (int ModuleNumber);
+int _VI_FUNC V288_Send(int ModuleNumber,int slaveid,int nbuf,unsigned short *buf);
+int _VI_FUNC V288_Receive(int ModuleNumber,int nbuf,unsigned short *buf);
+
+#endif