divers/lrs1190.h

Go to the documentation of this file.
00001 /*-----------------------------------------------------------------------------
00002  * Copyright (c) 1996      TRIUMF Data Acquistion Group
00003  * Please leave this header in any reproduction of that distribution
00004  * 
00005  * TRIUMF Data Acquisition Group, 4004 Wesbrook Mall, Vancouver, B.C. V6T 2A3
00006  * Email: online@triumf.ca           Tel: (604) 222-1047  Fax: (604) 222-1074
00007  *         amaudruz@triumf.ca
00008  * ----------------------------------------------------------------------------
00009  *  
00010  * Description  : Header file for Macros support to the LeCroy 1190
00011  *                dual port memory buffer.
00012  *
00013  * Author:  Pierre-Andre Amaudruz Data Acquisition Group
00014  
00015   $Id: lrs1190.h 2753 2005-10-07 14:55:31Z ritt $
00016 
00017  * Revision 1.0  1996/ Pierre    Initial revision
00018  *
00019  *  VME_RESET_1190 (base);              ! Reset 
00020  *  VME_ENABLE_1190 (base);             ! Enable Front Panel Port (FPP)
00021  *  VME_DISABLE_1190 (base);            ! Enable VME port (disable FPP)
00022  *  VME_COUNT_1190 (base, d);           ! Read entry counter
00023  *  VME_READI4_1190 (base, b, r);       ! Read r entries of 32bit word size
00024  *  VME_READL2_1190 (base, d, r);       ! Read r entries of the low port in 32bit data
00025  *  VME_READH2_1190 (base, d, r);       ! Read r entries of the high port in 32 bit data
00026  *  VME_READL2_TONY_1190 (base, d, r);  ! Read r entries of the low port in 16bit data 
00027  *---------------------------------------------------------------------------*/
00028 #ifndef _vme_h_
00029 #define _vme_h_
00030 #include "vxWorks.h"
00031 #include "vme.h"
00032 #endif
00033 
00034 #define A32D24         0xf0000000       /* A32D24 access */
00035 
00036 /*------------------------------------------------------------------------------------*/
00037 
00038 #define VME_ENABLE_1190(_vmebase){\
00039                                     {\
00040                                        DWORD _ll, _local;\
00041                                        _ll = _vmebase;\
00042                                        _local = ((_ll) | 0x8002) | A32D24;\
00043                                        *(WORD *)_local = 0x1;\
00044                                    }\
00045                                 }
00046 
00047 #define VME_DISABLE_1190(_vmebase){\
00048                                     {\
00049                                        DWORD _ll, _local;\
00050                                       _ll = _vmebase;\
00051                                        _local = ((_ll) | 0x8002) | A32D24;\
00052                                        *(WORD *)_local = 0x0;\
00053                                    }\
00054                                 }
00055 
00056 #define VME_RESET_1190(_vmebase){\
00057                                    {\
00058                                       static DWORD _ll, _dummy, _local;\
00059                                       _ll = _vmebase;\
00060                                       _local = (_ll) | A32D24;\
00061                                       _dummy = *(WORD *) _local;\
00062                                   }\
00063                                }
00064 
00065 #define VME_COUNT_1190(_vmebase, _d){\
00066                                         {\
00067                                          DWORD _ll, *_pcount;\
00068                                          _ll = _vmebase;\
00069                                          _pcount = (DWORD *) (((_ll) | 0x8000) | A32D24);\
00070                                          *((WORD *) _d) = *(WORD *) _pcount;\
00071                                        }\
00072                                     }
00073 
00074 
00075 #define VME_READI4_1190(_vmebase,_d,_r){\
00076                                         {\
00077                                          DWORD _ll, *_local, __r, _count;\
00078                                          DWORD *_pcount;\
00079                                          __r = _r;\
00080                                          _ll = _vmebase;\
00081                                          _pcount = (DWORD *) (((_ll) | 0x8000) | A32D24);\
00082                                          _count = *(WORD *) _pcount;\
00083                                          if (_count <= __r)\
00084                                            __r = _count;\
00085                                          _local = (DWORD *)((_ll)  | A32D24);\
00086                                          while (__r > 0) {\
00087                                                 *_d++ = *_local++;\
00088                                                 __r--;}\
00089                                          }\
00090                                       }
00091 
00092 #define VME_READL2_1190(_vmebase,_d,_r){\
00093                                         {\
00094                                          DWORD _ll, *_pcount, *_local;\
00095                                          WORD _count, __r;\
00096                                          __r = _r;\
00097                                          _ll = _vmebase;\
00098                                          _pcount = (DWORD *) (((_ll) | 0x8000) | A32D24);\
00099                                          _count = *(WORD *) _pcount;\
00100                                          if (_count <= __r)\
00101                                            __r = _count;\
00102                                          _local = (DWORD *)((_ll)  | A32D24);\
00103                                          while (__r > 0) {\
00104                                                 *(WORD *) _d = *(WORD *)_local;\
00105                                                 ((WORD *)_d)++;\
00106                                                 (_local)++;\
00107                                                 __r--;}\
00108                                          }\
00109                                       }
00110 
00111 #define VME_READH2_1190(_vmebase,_d,_r){\
00112                                         {\
00113                                          DWORD _ll, *_pcount, *_local;\
00114                                          WORD _count, __r;\
00115                                          __r = _r;\
00116                                          _ll = _vmebase;\
00117                                          _pcount = (DWORD *) (((_ll) | 0x8000) | A32D24);\
00118                                          _count = *(WORD *) _pcount;\
00119                                          if (_count <= __r)\
00120                                            __r = _count;\
00121                                          _local = (DWORD *)((_ll)  | A32D24);\
00122                                          while (__r > 0) {\
00123                                                 *(WORD *) _d = *(++((WORD *)_local));\
00124                                                 ((WORD *)_d)++;\
00125                                                 ((WORD *)_local)++;\
00126                                                 __r--;}\
00127                                          }\
00128                                       }
00129 
00130 #define VME_READL2_TONY_1190(_vmebase,_d,_r){\
00131                                         {\
00132                                          DWORD _ll, *_pcount, *_local, __r, _count;\
00133                                          __r = _r;\
00134                                          _ll = _vmebase;\
00135                                          _pcount = (DWORD *) (((_ll) | 0x8000) | A32D24);\
00136                                          _count = *(WORD *) _pcount;\
00137                                          if (_count <= __r)\
00138                                            __r = _count;\
00139                                          _local = (DWORD *)((_ll)  | A32D24);\
00140                                          *(WORD *) _d = __r;\
00141                                          ((WORD *)_d)++;\
00142                                          while (__r > 0) {\
00143                                                 *(WORD *) _d = *(WORD *)_local;\
00144                                                 ((WORD *)_d)++;\
00145                                                 (_local)++;\
00146                                                 __r--;}\
00147                                          }\
00148                                       }
00149 /*------------------------------------------------------------------------------------*/

Midas DOC Version 3.0.0 ---- 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