Data Structures | |
| struct | ADC2MSCB_TABLE |
| struct | IADC_TABLE |
| struct | EEPAGE |
| struct | user_data_type |
Defines | |
| #define | ADT7486A_ADDR0 0x49 |
| #define | ADT7486A_ADDR1 0x48 |
| #define | ADT7486A_ADDR2 0x4B |
| #define | ADT7486A_ADDR3 0x4A |
| #define | ADT7486A_ADDR4 0x48 |
| #define | SST_LINE1 1 |
| #define | SST_LINE2 2 |
| #define | SST_TIME 2 |
| #define | BIAS_OUTPUT_ENABLE ADDR_PCA9539, PCA9539_CONFIG0, PCA9539_ALL_OUTPUT |
| #define | BIAS_DISABLE ADDR_PCA9539, PCA9539_OUTPUT0, 0xFF |
| #define | BIAS_ENABLE ADDR_PCA9539, PCA9539_OUTPUT0, 0x00 |
| #define | BIAS_READ ADDR_PCA9539, PCA9539_INPUT0 |
| #define | BIAS_WRITE ADDR_PCA9539, PCA9539_OUTPUT0 |
| #define | BACKPLANE_INPUT_ENABLE ADDR_PCA9539, PCA9539_CONFIG1, PCA9539_ALL_INPUT |
| #define | BACKPLANE_READ ADDR_PCA9539, PCA9539_INPUT1 |
| #define | N_RB_CHANNEL 16 |
| #define | EXT_VREF 1.25f |
| #define | CURR_MEASURE 0x04 |
| #define | V_A2MTABLE 0 |
| #define | I_A2MTABLE 1 |
| #define | VOLT_MEASURE 0x04 |
| #define | GAIN1 0 |
| #define | GAIN4 1 |
| #define | GAIN8 2 |
| #define | GAIN16 3 |
| #define | GAIN32 4 |
| #define | GAIN64 5 |
| #define | CONVER_FAC2 65536.0f |
| #define | CONVER_FAC1 0xFFFFFFFF |
| #define | Q_PUMP_INIT 1 |
| #define | Q_PUMP_OFF 2 |
| #define | Q_PUMP_ON 3 |
| #define | INT_VREF 2.44f |
| #define | IntGAIN1 0 |
| #define | IntGAIN2 1 |
| #define | IntGAIN4 2 |
| #define | IntGAIN8 3 |
| #define | IntGAIN16 4 |
| #define | EEP_CTRL_KEY 0x3C000000 |
| #define | EEP_CTRL_READ 0x00110000 |
| #define | EEP_CTRL_WRITE 0x00220000 |
| #define | EEP_CTRL_INVAL_REQ 0xff000000 |
| #define | EEP_CTRL_INVAL_KEY 0x00ff0000 |
| #define | EEP_CTRL_OFF_RANGE 0x0000ff00 |
| #define | PAGE_SIZE sizeof(eepage) |
| #define | EEP_RW_IDX 0x06 |
| #define | EEP_RW_LAST_IDX PAGE_SIZE/4 |
| #define | NCHANNEL_BIAS 64 |
| #define | NCHANNEL_ASUM 8 |
| #define | NCHANNEL_SST 8 |
| #define | NCHANNEL_ADT7486A 4 |
| #define | IDXEER 1 |
| #define | IDXCTL 2 |
| #define | IDXQVOLT 6 |
| #define | IDXBSWITCH 5 |
| #define | IDXASUM 47 |
| #define | IDXSST 19 |
| #define | IDXBIAS 55 |
| #define | IDXEEP_CTL 144 |
| #define | IDXASUM_CTL 145 |
| #define | SERIALN_LENGTH (unsigned int) 4 |
| #define | SERIALN_ADD (unsigned int) (0x600) |
| #define | FIRST_BIAS IDXBIAS |
| #define | LAST_BIAS FIRST_BIAS + NCHANNEL_BIAS |
| #define | FIRST_ASUM IDXASUM |
| #define | LAST_ASUM FIRST_ASUM + NCHANNEL_ASUM |
| #define | ADDR_LTC1669 0x20 |
| #define | ADDR_PCA9539 0x74 |
| #define | ADDR_LTC2497 0x14 |
| #define | ADDR_LTC2495 0x14 |
| #define | ON 1 |
| #define | DONE 1 |
| #define | OFF 0 |
| #define | FAILED 0 |
| #define | CLEAR 0 |
| #define | UCTEMPERATURE_MASK 0x0100 |
| #define | BTEMPERATURE_MASK 0x1000 |
| #define | FGDTEMPERATURE_MASK 0x0400 |
| #define | VOLTAGE_MASK 0x001C |
| #define | CURRENT_MASK 0x0040 |
Functions | |
| void | user_init (unsigned char init) |
| void | user_loop (void) |
| void | user_write (unsigned char index) reentrant |
| unsigned char | user_read (unsigned char index) |
| unsigned char | user_func (unsigned char *data_in, unsigned char *data_out) |
| float | read_voltage (unsigned char channel, unsigned int *rvalue, float coeff, float offset, unsigned char gain) |
| void | switchonoff (unsigned char command) |
| int | eepageAddrConvert (unsigned int index) |
Variables | |
| ADC2MSCB_TABLE xdata | adc2mscb_table [16] |
| IADC_TABLE xdata | iadc_table [8] |
| unsigned char | rEER |
| EEPAGE xdata | eepage |
| EEPAGE xdata | eepage2 |
| unsigned int xdata | PageAddr [] = {0x000, 0x200, 0x400, 0x600} |
| unsigned char xdata | ltc1665mirror [64] |
| unsigned int xdata | ltc2600mirror [8] |
| unsigned char bdata | rCTL |
| sbit | CPup = rCTL ^ 0 |
| sbit | CAsum = rCTL ^ 2 |
| sbit | Ccal = rCTL ^ 3 |
| sbit | CeeS = rCTL ^ 4 |
| sbit | CeeR = rCTL ^ 5 |
| sbit | CeeClr = rCTL ^ 6 |
| sbit | CmSd = rCTL ^ 7 |
| unsigned char bdata | rCSR |
| sbit | SPup = rCSR ^ 0 |
| sbit | SqPump = rCSR ^ 1 |
| sbit | SAsum = rCSR ^ 2 |
| sbit | Scal = rCSR ^ 3 |
| sbit | SeeS = rCSR ^ 4 |
| sbit | SeeR = rCSR ^ 5 |
| sbit | SsS = rCSR ^ 6 |
| sbit | SmSd = rCSR ^ 7 |
| unsigned int bdata | rESR |
| sbit | vQpump = rESR ^ 8 |
| sbit | iQpump = rESR ^ 9 |
| sbit | vReg1 = rESR ^ 10 |
| sbit | vReg2 = rESR ^ 11 |
| sbit | vReg3 = rESR ^ 12 |
| sbit | iReg1 = rESR ^ 13 |
| sbit | iReg2 = rESR ^ 14 |
| sbit | iReg3 = rESR ^ 15 |
| sbit | uCT = rESR ^ 0 |
| sbit | IntssTT = rESR ^ 1 |
| sbit | ExtssTT = rESR ^ 2 |
| sbit | EEPROM = rESR ^ 3 |
| sbit | pcbssTT = rESR ^ 4 |
| sbit | RdssT = rESR ^ 5 |
| user_data_type xdata | user_data |
| sbit | timing = P2 ^ 7 |
| unsigned long xdata | smbdebug |
| #define ADDR_LTC1669 0x20 |
| #define ADDR_LTC2495 0x14 |
| #define ADDR_LTC2497 0x14 |
| #define ADDR_PCA9539 0x74 |
| #define ADT7486A_ADDR0 0x49 |
| #define ADT7486A_ADDR1 0x48 |
| #define ADT7486A_ADDR2 0x4B |
| #define ADT7486A_ADDR3 0x4A |
| #define ADT7486A_ADDR4 0x48 |
| #define BACKPLANE_INPUT_ENABLE ADDR_PCA9539, PCA9539_CONFIG1, PCA9539_ALL_INPUT |
| #define BACKPLANE_READ ADDR_PCA9539, PCA9539_INPUT1 |
| #define BIAS_DISABLE ADDR_PCA9539, PCA9539_OUTPUT0, 0xFF |
| #define BIAS_ENABLE ADDR_PCA9539, PCA9539_OUTPUT0, 0x00 |
| #define BIAS_OUTPUT_ENABLE ADDR_PCA9539, PCA9539_CONFIG0, PCA9539_ALL_OUTPUT |
| #define BIAS_READ ADDR_PCA9539, PCA9539_INPUT0 |
| #define BIAS_WRITE ADDR_PCA9539, PCA9539_OUTPUT0 |
| #define BTEMPERATURE_MASK 0x1000 |
| #define CLEAR 0 |
| #define CONVER_FAC1 0xFFFFFFFF |
| #define CONVER_FAC2 65536.0f |
| #define CURR_MEASURE 0x04 |
| #define CURRENT_MASK 0x0040 |
| #define DONE 1 |
| #define EEP_CTRL_INVAL_KEY 0x00ff0000 |
| #define EEP_CTRL_INVAL_REQ 0xff000000 |
| #define EEP_CTRL_KEY 0x3C000000 |
| #define EEP_CTRL_OFF_RANGE 0x0000ff00 |
| #define EEP_CTRL_READ 0x00110000 |
| #define EEP_CTRL_WRITE 0x00220000 |
| #define EEP_RW_IDX 0x06 |
| #define EEP_RW_LAST_IDX PAGE_SIZE/4 |
| #define EXT_VREF 1.25f |
| #define FAILED 0 |
| #define FGDTEMPERATURE_MASK 0x0400 |
| #define FIRST_ASUM IDXASUM |
| #define FIRST_BIAS IDXBIAS |
| #define GAIN1 0 |
| #define GAIN16 3 |
| #define GAIN32 4 |
| #define GAIN4 1 |
| #define GAIN64 5 |
| #define GAIN8 2 |
| #define I_A2MTABLE 1 |
| #define IDXASUM 47 |
| #define IDXASUM_CTL 145 |
| #define IDXBIAS 55 |
| #define IDXBSWITCH 5 |
| #define IDXCTL 2 |
| #define IDXEEP_CTL 144 |
| #define IDXEER 1 |
| #define IDXQVOLT 6 |
| #define IDXSST 19 |
| #define INT_VREF 2.44f |
| #define IntGAIN1 0 |
| #define IntGAIN16 4 |
| #define IntGAIN2 1 |
| #define IntGAIN4 2 |
| #define IntGAIN8 3 |
| #define LAST_ASUM FIRST_ASUM + NCHANNEL_ASUM |
| #define LAST_BIAS FIRST_BIAS + NCHANNEL_BIAS |
| #define N_RB_CHANNEL 16 |
| #define NCHANNEL_ADT7486A 4 |
| #define NCHANNEL_ASUM 8 |
| #define NCHANNEL_BIAS 64 |
| #define NCHANNEL_SST 8 |
| #define OFF 0 |
| #define ON 1 |
| #define PAGE_SIZE sizeof(eepage) |
| #define Q_PUMP_INIT 1 |
| #define Q_PUMP_OFF 2 |
| #define Q_PUMP_ON 3 |
| #define SERIALN_ADD (unsigned int) (0x600) |
| #define SERIALN_LENGTH (unsigned int) 4 |
| #define SST_LINE1 1 |
| #define SST_LINE2 2 |
| #define SST_TIME 2 |
| #define UCTEMPERATURE_MASK 0x0100 |
| #define V_A2MTABLE 0 |
| #define VOLT_MEASURE 0x04 |
| #define VOLTAGE_MASK 0x001C |
| int eepageAddrConvert | ( | unsigned int | index | ) |
00250 { 00251 int add; 00252 //if index is even 00253 if(!(index%2)) 00254 add = index/2 + 18 + EEP_RW_IDX; // offset from the eepage struct 00255 //if index is odd 00256 else 00257 add = index/2 + EEP_RW_IDX; // offset from the eepage struct 00258 return add; 00259 }
| float read_voltage | ( | unsigned char | channel, | |
| unsigned int * | rvalue, | |||
| float | coeff, | |||
| float | offset, | |||
| unsigned char | gain | |||
| ) |
00416 { 00417 unsigned int xdata i; 00418 float xdata voltage; 00419 unsigned int xdata rawbin; 00420 unsigned long xdata rawsum = 0; 00421 00422 // Averaging on 10 measurements for now. 00423 for (i=0 ; i<10 ; i++) { 00424 rawbin = adc_read(channel, gain); 00425 rawsum += rawbin; 00426 yield(); 00427 } 00428 00429 /* convert to V */ 00430 *rvalue = rawsum/10; 00431 voltage = (float) *rvalue; // averaging 00432 voltage = (float) voltage / 1024.0 * INT_VREF; // conversion 00433 if ( channel != TCHANNEL) 00434 voltage = voltage * coeff + offset; 00435 00436 return voltage; 00437 }
| void switchonoff | ( | unsigned char | command | ) |
00187 { 00188 if(command==ON) 00189 { 00190 // Turn ON card 00191 SFRPAGE = CONFIG_PAGE; 00192 P2MDOUT &= ~0x08; // V4_ENn(P2.3) OD 00193 V4_ENn = 0; // ON 00194 00195 rESR = 0x0000; // Reset error status at each Power UP 00196 rCSR = user_data.status; 00197 SPup = ON; // Set Status 00198 SsS = OFF; // Clear System Shutdown 00199 SmSd = OFF; // Clear Manual Shutdown 00200 00201 // Publish Status and Error 00202 DISABLE_INTERRUPTS; 00203 user_data.status = rCSR; 00204 user_data.error = rESR; 00205 ENABLE_INTERRUPTS; 00206 00207 // Setup CMB SPI ports 00208 P2MDOUT |= 0x20; // CMB_SPI_SCK (P2.5) PP 00209 P2MDOUT |= 0x40; // CMB_SPI_MOSI (P2.6) PP 00210 P2MDOUT &= ~0x80; // CMB_SPI_MISO (P2.7) OD 00211 P2MDOUT |= 0x02; // CMB_CS (P2.1) PP 00212 P2MDOUT |= 0x01; // CFG_RECOVER (P2.0) PP 00213 CMB_CSn = 1; 00214 00215 CMBSPI_Init(); 00216 00217 delay_ms(1000); 00218 CMB_SPI_WriteByte(CMBSPI_WADDRESS, ~pca_add); 00219 delay_us(100); 00220 user_data.eepage = CMB_SPI_ReadByte(CMBSPI_RADDRESS); 00221 delay_us(100); 00222 CMB_SPI_WriteByte(CMBSPI_WADDRESS, ~pca_add); 00223 delay_us(100); 00224 user_data.spare = CMB_SPI_ReadByte(CMBSPI_RADDRESS); 00225 00226 } else if(command==OFF) { 00227 // Switch all the ports to open drain except for... 00228 SFRPAGE = CONFIG_PAGE; 00229 P2MDOUT = 0; 00230 V4_ENn = 1; 00231 } 00232 }
| unsigned char user_func | ( | unsigned char * | data_in, | |
| unsigned char * | data_out | |||
| ) |
| void user_init | ( | unsigned char | init | ) |
00183 { 00184 char xdata i; 00185 /* Format the SVN and store this code SVN revision into the system */ 00186 for (i = 0; i < 4; i++) { 00187 if (svn_rev_code[6 + i] < 48) { 00188 svn_rev_code[6 + i] = '0'; 00189 } 00190 } 00191 sys_info.svn_revision = (svn_rev_code[6] - '0') * 1000 + 00192 (svn_rev_code[7] - '0') * 100 + 00193 (svn_rev_code[8] - '0') * 10 + 00194 (svn_rev_code[9] - '0'); 00195 00196 // P0MDIN = 0xFF; // default 0xFF all digital pins 00197 // P1MDIN = 0xFF; 00198 // P2MDIN = 0xFF; 00199 00200 P0MDOUT = 0x18; // Default OD 485TX, TXD 00201 P1MDOUT = 0x00; // OD 00202 P2MDOUT = 0xFF; // OD 00203 00204 P0 = 0x03; // default 0xFF 00205 P1 = 0xFF; 00206 P2 = 0xFF; 00207 00208 /* set initial state of lines */ 00209 GPIB_DATA = 0xFF; 00210 GPIB_EOI = 1; 00211 GPIB_DAV = 1; 00212 GPIB_NRFD = 1; 00213 GPIB_NDAC = 1; 00214 GPIB_IFC = 1; 00215 GPIB_SRQ = 1; 00216 GPIB_ATN = 1; 00217 GPIB_REN = 1; 00218 00219 BUF_CLE = 0; // Enable buffers 00220 BUF_DATAE = 0; 00221 00222 /* initialize GPIB */ 00223 GPIB_IFC = 0; 00224 delay_ms (1); 00225 GPIB_IFC = 1; 00226 00227 GPIB_ATN = 0; 00228 send_byte (0x14); // DCL 00229 GPIB_ATN = 1; 00230 00231 user_data.gpib_adr = GPIB_ADDR_0; 00232 00233 sprintf (str, "OE2"); // prohibit overvoltage setting 00234 send (user_data.gpib_adr, str); 00235 sprintf (str, "OC0"); // hv supply will *not* shutdown if current overload 00236 send (user_data.gpib_adr, str); 00237 sprintf (str, "SE0"); // enables SRQ in response to overvoltage detection 00238 send (user_data.gpib_adr, str); 00239 sprintf (str, "SC0"); // enables SRQ in response to overcurrent detection 00240 send (user_data.gpib_adr, str); 00241 00242 user_data.status = 0; 00243 if (init) { 00244 user_data.ramp_up = 10; 00245 user_data.ramp_down = 10; 00246 user_data.u_limit = MAX_VOLTAGE; 00247 user_data.i_limit = MAX_CURRENT; 00248 } 00249 sprintf (user_data.warning, "current OK"); 00250 00251 set_voltage_limit(user_data.u_limit); 00252 set_current_limit(user_data.i_limit); 00253 00254 read_hvi(); // check to see if hv is already on 00255 00256 if ( user_data.u_meas < 10 ) // bertan hv must be off 00257 { 00258 user_data.u_demand = 0; 00259 u_actual = 0; 00260 set_hv(0); 00261 } 00262 else // bertan hv must already be on 00263 { 00264 user_data.u_demand = user_data.u_meas; // restore to status quo 00265 u_actual = user_data.u_meas; 00266 } 00267 00268 #ifdef RTC_410 00269 // Init RTC on 410 00270 SmaRTCInit(); 00271 #endif 00272 }
| void user_loop | ( | void | ) |
00683 { 00684 /* set voltage limit if changed */ 00685 if (chn_bits & HV_LIMIT_CHANGED) { 00686 set_voltage_limit(user_data.u_limit); 00687 chn_bits &= ~HV_LIMIT_CHANGED; 00688 } 00689 00690 /* set current limit if changed */ 00691 if (chn_bits & CUR_LIMIT_CHANGED) { 00692 set_current_limit(user_data.i_limit); 00693 chn_bits &= ~CUR_LIMIT_CHANGED; 00694 } 00695 00696 // Read Voltage and Current 00697 read_hvi(); 00698 00699 // Yield to other activities (MSCB) 00700 // yield(); 00701 00702 // Do ramping if necessary 00703 ramp_hv(); 00704 00705 #ifdef RTC_410 00706 // RTC stuff 00707 ltime = SmaRTCRead(); 00708 user_data.mytime = ltime; 00709 ascTime(mydate, ltime); 00710 sprintf(user_data.date, "%s", mydate); 00711 #endif 00712 00713 // Slow it down 00714 delay_ms (MINDEL); 00715 00716 // Loop timing 00717 led_blink(0, 1, 50); 00718 }
| void user_write | ( | unsigned char | index | ) |
00387 { 00388 rCSR = user_data.status; 00389 if (index == IDXCTL) { 00390 rCTL = user_data.control; 00391 } // IDXCTL 00392 00393 // 00394 //-- EE Page function 00395 if (index == IDXEEP_CTL) EEP_CTR_Flag = 1; 00396 }
| struct ADC2MSCB_TABLE xdata adc2mscb_table[16] |
Initial value:
{
{GAIN32, 1, I_A2MTABLE, 1000, 22}, {GAIN32, 3, I_A2MTABLE, 1000, 127}
, {GAIN32, 5, I_A2MTABLE, 1000, 7176}, {GAIN32, 7, I_A2MTABLE, 1000, 1840}
, {GAIN1 , 7, V_A2MTABLE, 101.1, 230}, {GAIN1 , 5, V_A2MTABLE, 101.1, 230}
, {GAIN1 , 3, V_A2MTABLE, 101.1, 230}, {GAIN1 , 1, V_A2MTABLE, 101.1, 230}
, {GAIN32, 0, I_A2MTABLE, 1000, 3178}, {GAIN32, 2, I_A2MTABLE, 1000, 1800}
, {GAIN32, 4, I_A2MTABLE, 1000, 925}, {GAIN32, 6, I_A2MTABLE, 1000, 4895}
, {GAIN1 , 6, V_A2MTABLE, 101.1, 24}, {GAIN1 , 4, V_A2MTABLE, 101.1, 230}
, {GAIN1 , 2, V_A2MTABLE, 101.1, 225}, {GAIN1 , 0, V_A2MTABLE, 101.1, 230}
}
| struct IADC_TABLE xdata iadc_table[8] |
| unsigned char xdata ltc1665mirror[64] |
| unsigned int xdata ltc2600mirror[8] |
| unsigned int xdata PageAddr[] = {0x000, 0x200, 0x400, 0x600} |
| unsigned char bdata rCSR |
| unsigned char bdata rCTL |
| unsigned char rEER |
| unsigned int bdata rESR |
| unsigned long xdata smbdebug |
| struct user_data_type xdata user_data |
1.4.7