v513.c

Go to the documentation of this file.
00001 /*********************************************************************
00002 
00003   Name:         v513.c
00004   Created by:   K.Olchanski
00005 
00006   Contents:     CAEN V513 16-channel NIM I/O register
00007 
00008   $Id: v513.c 3746 2007-07-10 08:26:11Z amaudruz $
00009 *********************************************************************/
00010 #include <stdio.h>
00011 #include <stdint.h>
00012 #include <string.h>
00013 #include "v513.h"
00014 #include "mvmestd.h"
00015 
00016 /*****************************************************************/
00017 /*
00018 Read V513 register value
00019 */
00020 static uint16_t regRead(MVME_INTERFACE *mvme, DWORD base, int offset)
00021 {
00022   mvme_set_am(mvme, MVME_AM_A24);
00023   mvme_set_dmode(mvme, MVME_DMODE_D16);
00024   return mvme_read_value(mvme, base + offset);
00025 }
00026 
00027 /*****************************************************************/
00028 /*
00029 Write V513 register value
00030 */
00031 static void regWrite(MVME_INTERFACE *mvme, DWORD base, int offset, uint16_t value)
00032 {
00033   mvme_set_am(mvme, MVME_AM_A24);
00034   mvme_set_dmode(mvme, MVME_DMODE_D16);
00035   mvme_write_value(mvme, base + offset, value);
00036 }
00037 
00038 uint16_t v513_RegisterRead(MVME_INTERFACE *mvme, DWORD base, int offset)
00039 {
00040   return regRead(mvme,base,offset);
00041 }
00042 
00043 void     v513_RegisterWrite(MVME_INTERFACE *mvme, DWORD base, int offset, uint16_t value)
00044 {
00045   regWrite(mvme,base,offset,value);
00046 }
00047 
00048 uint16_t v513_Read(MVME_INTERFACE *mvme, DWORD base)
00049 {
00050   return regRead(mvme,base,0x4);
00051 }
00052 
00053 void v513_Write(MVME_INTERFACE *mvme, DWORD base, uint16_t data)
00054 {
00055   regWrite(mvme,base,0x4,data);
00056 }
00057 
00058 /*****************************************************************/
00059 void v513_Reset(MVME_INTERFACE *mvme, DWORD base)
00060 {
00061   regWrite(mvme,base,0x46,0); // reset to default configuration
00062   regWrite(mvme,base,0x42,0); // module reset
00063   //regRead(mvme,base,0x50); // scalers clear, vme interrupt clear and disable
00064   regRead(mvme,base,0); // flush posted writes
00065 }
00066 
00067 /*****************************************************************/
00068 void  v513_Status(MVME_INTERFACE *mvme, DWORD base)
00069 {
00070   printf("CAEN V513 at A24 0x%x: version 0x%x, type 0x%x, code 0x%x\n", (int)base,regRead(mvme,base,0xFE),regRead(mvme,base,0xFC),regRead(mvme,base,0xFA));
00071 }
00072 
00073 void v513_SetChannelMode(MVME_INTERFACE *mvme, DWORD base, int channel, int mode)
00074 {
00075   regWrite(mvme,base,0x10 + 2*channel, mode);
00076 }
00077 
00078 int v513_GetChannelMode(MVME_INTERFACE *mvme, DWORD base, int channel)
00079 {
00080   return regRead(mvme,base,0x10 + 2*channel);
00081 }
00082 
00083 //end

Midas DOC Version 2.0.2 ---- PSI Stefan Ritt ----
Contributions: Pierre-Andre Amaudruz - Sergio Ballestrero - Suzannah Daviel - Doxygen - Peter Green - Qing Gu - Greg Hackman - Gertjan Hofman - Paul Knowles - Exaos Lee - Rudi Meier - Glenn Moloney - Dave Morris - John M O'Donnell - Konstantin Olchanski - Renee Poutissou - Tamsen Schurman - Andreas Suter - Jan M.Wouters - Piotr Adam Zolnierczuk