#include <stdio.h>#include <stdlib.h>#include <string.h>#include "mscbemb.h"Defines | |
| #define | FIRST_DAQ 18 |
| #define | LAST_DAQ FIRST_DAQ + 8 |
| #define | N_CHANNEL 4 |
| #define | VREF 2.4986f |
| #define | CONVER_FAC1 65536.0f |
| #define | CONVER_FAC2 131072.0f |
| #define | CLEAR 0 |
| #define | PCA_OUT 0x00 |
| #define | PCA_INDEX 1 |
| #define | SST_LINE 1 |
| #define | P1_DATA P1 |
Functions | |
| void | user_write (unsigned char index) reentrant |
| void | user_init (unsigned char init) |
| unsigned char | user_read (unsigned char index) |
| unsigned char | user_func (unsigned char *data_in, unsigned char *data_out) |
| void | user_loop (void) |
Variables | |
| char code | node_name [] = "GENERIC310_REV1" |
| char idata | svn_rev_code [] = "$Rev: 57 $" |
| unsigned char idata | _n_sub_addr = 1 |
| SYS_INFO | sys_info |
| unsigned char xdata | ADT7486A_addrArray [] = {0x48, 0x4A} |
| unsigned char xdata | ADDR_LTC2489 [] = {0x24, 0x17} |
| unsigned char xdata | DAQ_ADDRESS = 0x42 |
| unsigned char xdata | PCA9536_ADD = 0x41 |
| unsigned char xdata | FCS_Mismatch |
| unsigned char xdata | BiasIndex |
| unsigned char bdata | bChange |
| sbit | LTC2605_Flag = bChange ^ 0 |
| sbit | PCA9536_Flag = bChange ^ 1 |
| unsigned char bdata | rErr |
| sbit | adc = rErr ^ 0 |
| sbit | INTtemp = rErr ^ 1 |
| sbit | EXTtemp = rErr ^ 2 |
| struct { | |
| unsigned char error | |
| unsigned char pca9536 | |
| float volt [8] | |
| signed long adc [8] | |
| unsigned int daq [8] | |
| float intemp [2] | |
| float temp [4] | |
| } | user_data |
| MSCB_INFO_VAR code | vars [] |
| MSCB_INFO_VAR * | variables = vars |
| char xdata | flag = 0 |
| sbit | LED_GREEN = LED_1 |
| sbit | LED_RED = LED_0 |
| sbit | SST = MSCB_SST1 |
| sbit | P1_0 = P1 ^ 0 |
| sbit | P1_1 = P1 ^ 1 |
| sbit | P1_2 = P1 ^ 2 |
| sbit | P1_3 = P1 ^ 3 |
| sbit | P1_4 = P1 ^ 4 |
| sbit | P1_5 = P1 ^ 5 |
| sbit | P1_6 = P1 ^ 6 |
| sbit | P1_7 = P1 ^ 7 |
| sbit | P2_0 = P2 ^ 0 |
| sbit | P2_1 = P2 ^ 1 |
| sbit | P2_2 = P2 ^ 2 |
| sbit | P2_3 = P2 ^ 3 |
| sbit | P2_4 = P2 ^ 4 |
| sbit | P2_5 = P2 ^ 5 |
| sbit | P0_1 = P0 ^ 1 |
| sbit | P0_2 = P0 ^ 2 |
| #define CLEAR 0 |
| #define CONVER_FAC1 65536.0f |
| #define CONVER_FAC2 131072.0f |
| #define FIRST_DAQ 18 |
| #define LAST_DAQ FIRST_DAQ + 8 |
| #define N_CHANNEL 4 |
| #define P1_DATA P1 |
| #define PCA_INDEX 1 |
| #define PCA_OUT 0x00 |
| #define SST_LINE 1 |
| #define VREF 2.4986f |
| unsigned char user_func | ( | unsigned char * | data_in, | |
| unsigned char * | data_out | |||
| ) |
| void user_init | ( | unsigned char | init | ) |
00168 { 00169 idata char i; 00170 00171 /* Format the SVN and store this code SVN revision into the system */ 00172 for (i=0;i<4;i++) { 00173 if (svn_rev_code[6+i] < 48) { 00174 svn_rev_code[6+i] = '0'; 00175 } 00176 } 00177 00178 sys_info.svn_revision = (svn_rev_code[6]-'0')*1000+ 00179 (svn_rev_code[7]-'0')*100+ 00180 (svn_rev_code[8]-'0')*10+ 00181 (svn_rev_code[9]-'0'); 00182 00183 // Reference Voltage on P0.0 Enable 00184 REF0CN = 0x00; // Int Bias off, Int Temp off, VREF input on 00185 00186 //BS I am not sure 00187 // 0:analog 1:digital 00188 P0MDIN = 0xFF; // P0 all digital pins 00189 P1MDIN = 0xFF; // P1 all digital pins 00190 P2MDIN = 0x3F; // P2 all digital pins ( Ain: .6.7 for SST) 00191 P3MDIN = 0xFF; // P3 all digital pins 00192 00193 //BS I am not sure 00194 // 0: open-drain, 1: push-pull 00195 P0MDOUT = 0x10; // P0 .4/Tx 00196 P1MDOUT = 0xFF; // P1 Push-Pull 00197 P2MDOUT = 0x3F; // P2 Push-Pull (OC:.6.7 for SST_IO, SST_REF) 00198 P3MDOUT = 0x10; // P3.4 (SST_DRV) 00199 00200 // Setting the cross bar 00201 XBR0 |=0x04; // Enable SMBus pins 00202 XBR1 |=0x40; // Enable XBAR 00203 P0SKIP = 0x0f; //Skipping P0.0 (VREF), P0.1 P0.2, P0.3 (TX_EN) 00204 00205 // Comparator 1 Settings as P2.6, P2.7 are using in this case 00206 CPT1CN = 0x80; //Enable Comparator1 (functional, the one above is only for CrossBar) 00207 CPT1MX = 0x33; //Comparator1 MUX selection 00208 00209 00210 // Negative input is set to P2 ^ 7, and Positive input is set to P2 ^ 6 00211 // (P2 ^ 6 is the SST1_IO, so we want to compare SST1 with the threshold voltage 00212 // of !~0.8V on SST_REF (P2 ^ 7) 00213 CPT1MD = 0x02; //Comparator1 Mode Selection 00214 //Use default, adequate TYP (CP1 Response Time, no edge triggered interrupt) 00215 00216 // Set SST_REF & SST_IO P2 ^ 6/7 to Open-Drain and Analog Input 00217 // so that it accepts the ~650mV set by voltage divider. 00218 P2MDOUT &= 0x3F; 00219 P2MDIN &= 0x3F; 00220 00221 /* set-up / initialize circuit components (order is important) */ 00222 //NW modified SST to support more than one line 00223 ADT7486A_Init(SST_LINE); //Temperature measurements related initialization 00224 00225 #ifdef _LTC2489_ 00226 LTC2489_Init(); 00227 #endif 00228 00229 #ifdef _LTC2605_ 00230 LTC2605_Init(); 00231 #endif 00232 00233 #ifdef _PCA9536_ 00234 PCA9536_Init(); 00235 PCA9536_WriteByte (PCA9536_ADD,CMD_CONFIG_REG,PCA_OUT); 00236 #endif 00237 00238 00239 if (init) { 00240 } 00241 00242 for (i=0;i<8;i++) 00243 user_data.adc [i] = 0.0; 00244 rErr = 0x00; 00245 user_data.error = rErr; 00246 user_data.pca9536 = 0; 00247 // Temperature initialization 00248 user_data.intemp[0] = 0; 00249 user_data.intemp[1] = 0; 00250 memset (&user_data.temp[0], 0, sizeof(user_data.temp)); 00251 }
| void user_loop | ( | void | ) |
00297 { 00298 unsigned char xdata i,channel; 00299 float xdata volt1, volt2; 00300 signed long xdata result1, result2; 00301 static unsigned char xdata adcChannel = N_CHANNEL; 00302 00303 if(adcChannel == N_CHANNEL) { 00304 adcChannel = CLEAR; 00305 LTC2489_StartConversion(ADDR_LTC2489[0], adcChannel); 00306 LTC2489_StartConversion(ADDR_LTC2489[1], adcChannel); 00307 } else { 00308 adcChannel++; 00309 adcChannel %= N_CHANNEL; 00310 if (!LTC2489_ReadConversion(ADDR_LTC2489[0], adcChannel, &result1)){ 00311 result1 = -CONVER_FAC1; 00312 adc = 1; 00313 } 00314 if (!LTC2489_ReadConversion(ADDR_LTC2489[1], adcChannel, &result2)){ 00315 result2 = -CONVER_FAC1; 00316 adc = 1; 00317 } 00318 volt1 = ((float)(result1 + CONVER_FAC1) * (float)(VREF /CONVER_FAC2)); 00319 volt2 = ((float)(result2 + CONVER_FAC1) * (float)(VREF /CONVER_FAC2)); 00320 channel = (adcChannel + (N_CHANNEL-1)) % N_CHANNEL; 00321 DISABLE_INTERRUPTS; 00322 user_data.volt[channel] = volt1; 00323 user_data.volt[channel+4]= volt2; 00324 user_data.adc[channel] = result1; 00325 user_data.adc[channel+4] = result2; 00326 ENABLE_INTERRUPTS; 00327 } 00328 00329 for (i=0;i<2;i++) { 00330 if (ADT7486A_Cmd(ADT7486A_addrArray[i], GetIntTemp, SST_LINE, &user_data.intemp[i])!= SUCCESS) //NW 00331 INTtemp = 1; 00332 } 00333 if (ADT7486A_Cmd(ADT7486A_addrArray[0], GetExt1Temp, SST_LINE, &user_data.temp[0])!= SUCCESS) //NW 00334 EXTtemp = 1; 00335 if(ADT7486A_Cmd(ADT7486A_addrArray[0], GetExt2Temp, SST_LINE, &user_data.temp[1])!= SUCCESS) //NW 00336 EXTtemp = 1; 00337 if(ADT7486A_Cmd(ADT7486A_addrArray[1], GetExt1Temp, SST_LINE, &user_data.temp[2])!= SUCCESS) //NW 00338 EXTtemp = 1; 00339 if(ADT7486A_Cmd(ADT7486A_addrArray[1], GetExt2Temp, SST_LINE, &user_data.temp[3]) != SUCCESS) //NW 00340 EXTtemp = 1; 00341 00342 #ifdef _LTC2605_ 00343 if (LTC2605_Flag){ 00344 LTC2605_WriteByte(DAQ_ADDRESS,((WREG_n_UPDATE_n << 4) | BiasIndex),user_data.daq[BiasIndex]); 00345 LTC2605_Flag = 0; 00346 } 00347 #endif 00348 00349 #ifdef _PCA9536_ 00350 if (PCA9536_Flag){ 00351 PCA9536_WriteByte (PCA9536_ADD,CMD_OUTPUT_REG,user_data.pca9536); 00352 PCA9536_Flag = 0; 00353 } 00354 #endif 00355 00356 led_blink(1, 1, 250); 00357 00358 }
| unsigned char user_read | ( | unsigned char | index | ) |
| 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 }
| unsigned char idata _n_sub_addr = 1 |
| unsigned char xdata ADDR_LTC2489[] = {0x24, 0x17} |
| unsigned char xdata ADT7486A_addrArray[] = {0x48, 0x4A} |
| unsigned char bdata bChange |
| unsigned char xdata BiasIndex |
| unsigned int daq[8] |
| unsigned char xdata DAQ_ADDRESS = 0x42 |
| unsigned char error |
| unsigned char xdata FCS_Mismatch |
| char xdata flag = 0 |
| float intemp[2] |
| sbit LED_GREEN = LED_1 |
| sbit LED_RED = LED_0 |
| sbit LTC2605_Flag = bChange ^ 0 |
| char code node_name[] = "GENERIC310_REV1" |
| unsigned char pca9536 |
| unsigned char xdata PCA9536_ADD = 0x41 |
| sbit PCA9536_Flag = bChange ^ 1 |
| unsigned char bdata rErr |
| sbit SST = MSCB_SST1 |
| char idata svn_rev_code[] = "$Rev: 57 $" |
| float temp[4] |
| struct { ... } user_data |
| MSCB_INFO_VAR code vars[] |
| float volt[8] |
1.4.7