#include "ppmc.h"
Include dependency graph for ppmc_dac.c:
Go to the source code of this file.
Functions | |
__inline unsigned short | VoltToCounts (double volts) |
int | RawDAC (int nAxis, double volts) |
short | DACInit (void) |
short | DACQuit (void) |
int | ppmcDacNum (void) |
int | ppmcDacWrite (int dac, double volts) |
int | ppmcDacWriteAll (int max, double *volts) |
|
Definition at line 57 of file ppmc_dac.c. 00058 { 00059 SelWrt(DAC_WRITE_0,0); // reset strobe 00060 SelWrt(DAC_MODE_0,0); // sel strobe to INTR/ line 00061 return 0; 00062 } |
|
Definition at line 64 of file ppmc_dac.c. 00065 { 00066 return DACInit(); //init sets all outputs to zero 00067 } |
|
Definition at line 34 of file ppmc_dac.c. 00035 { 00036 00037 00038 if ( (nAxis > PPMC_MAX_AXIS) || (nAxis < 0) ) /* is axis within range? */ 00039 return -1; 00040 00041 /* convert -10.0 -> 0,0 to 0x8000 10 -> 0xFFFF */ 00042 00043 if (nAxis <=3) 00044 { 00045 SelWrt16(DAC_0 + (nAxis << 1), VoltToCounts(volts)); 00046 SelWrt(DAC_WRITE_0, 0); 00047 } 00048 else { 00049 SelWrt16(DAC_4 + ((nAxis-4) << 1), VoltToCounts(volts)); 00050 SelWrt(DAC_WRITE_1, 0); 00051 } 00052 00053 00054 return 0; 00055 } |
|
Definition at line 18 of file ppmc_dac.c. Referenced by RawDAC(), and ppmcDacWriteAll().
00019 { 00020 long nCounts; 00021 nCounts = (long) (((volts / 10.0) * 0x7FFF)+0x8000); 00022 00023 if (nCounts > 0xffff) 00024 { 00025 nCounts = 0xffff; 00026 } 00027 if (nCounts < 0 ) 00028 { 00029 nCounts = 0; 00030 } 00031 return (unsigned short)nCounts; 00032 } |
|
Definition at line 68 of file ppmc_dac.c. Referenced by extDacNum().
00069 { 00070 return PPMC_MAX_AXIS; 00071 } |
|
Definition at line 73 of file ppmc_dac.c. Referenced by extDacWrite(), and main().
00074 { 00075 return RawDAC(dac, volts); 00076 } |
|
Definition at line 78 of file ppmc_dac.c. Referenced by extDacWriteAll(), and main().
00079 { 00080 int t; 00081 int smax; 00082 00083 /* clip smax to max supported-- if they want more, ignore */ 00084 if (max > PPMC_MAX_AXIS) { 00085 smax = PPMC_MAX_AXIS; 00086 } 00087 else { 00088 smax = max; 00089 } 00090 #ifndef PPMC_8_AXIS 00091 //take advantage of auto increment of address pointer in ppmc 00092 SelAddr(DAC_0); 00093 for (t = 0; t < smax; t++) 00094 { 00095 /* printf(" dac channel %d volts %12.4f digital # %d\n", 00096 t,volts[t],VoltToCounts(volts[t])); */ 00097 WriteData16(VoltToCounts(volts[t])); 00098 } 00099 /* printf("\n"); */ 00100 #else 00101 SelAddr(DAC_0); 00102 if(smax<=4) 00103 { 00104 for (t = 0; t < smax; t++) 00105 { 00106 WriteData16(VoltToCounts(volts[t])); 00107 } 00108 return 0; 00109 } 00110 else 00111 { 00112 for (t = 0; t < 4; t++) 00113 { 00114 WriteData16(VoltToCounts(volts[t])); 00115 } 00116 SelAddr(DAC_1); 00117 for (t = 4; t < smax; t++) 00118 { 00119 WriteData16(VoltToCounts(volts[t])); 00120 } 00121 } 00122 #endif 00123 return 0; 00124 } |