void startConversion() { setNextMuxAddress(); g_adcInputName = order_analogInputs_on[current_input_].ai_name_; g_adcBurstCount = 0; g_adcSum = 0; uint8_t adc_pin = order_analogInputs_on[current_input_].adc_pin_; setADC(adc_pin); if(adc_pin > 64) { ADC_CONFIG_CH7(ADC, (adc_pin >> 6) << ADC_ADCHER_PRESEL_Pos); } else {
void main() { byte writeIndex = 0; byte i; long l; TRISB = 0xFFFF; /* All inputs */ LAT_BATT1_CTL = BATT_ENABLE; LAT_BATT2_CTL = BATT_ENABLE; LAT_BATT3_CTL = BATT_ENABLE; LAT_BATT4_CTL = BATT_ENABLE; #ifdef BBR2 LAT_BATT5_CTL = ~BATT_ENABLE; #else LAT_BATT5_CTL = BATT_ENABLE; #endif LAT_BATT6_CTL = BATT_ENABLE; TRIS_BATT1_CTL = TRIS_OUT; TRIS_BATT2_CTL = TRIS_OUT; TRIS_BATT3_CTL = TRIS_OUT; TRIS_BATT4_CTL = TRIS_OUT; #ifdef BBR2 TRIS_BATT5_CTL = TRIS_IN; #else TRIS_BATT5_CTL = TRIS_OUT; #endif TRIS_BATT6_CTL = TRIS_OUT; TRIS_BATT1 = TRIS_IN; TRIS_BATT2 = TRIS_IN; TRIS_BATT3 = TRIS_IN; TRIS_BATT4 = TRIS_IN; TRIS_BATT5 = TRIS_IN; TRIS_BATT6 = TRIS_IN; TRIS_WTRSEN = TRIS_IN; LAT_PWRKILL = ~PWRKILL_ON; TRIS_PWRKILL = TRIS_OUT; TRIS_LED_STA = TRIS_OUT; TRIS_LED_BATTLOW = TRIS_OUT; LAT_LED_STA = LED_ON; LAT_LED_BATTLOW = LED_ON; initBus(); LAT_LED_STA = LED_ON; LAT_LED_BATTLOW = ~LED_ON; // while(1); initADC(); initI2C(); initBattlowLight(); #ifdef HAS_UART initInterruptUarts(); #endif for(l=0; l<50000; l++); LAT_LED_STA = LED_ON; LAT_LED_BATTLOW = ~LED_ON; for(l=0; l<50000; l++); // LAT_PWRKILL = PWRKILL_ON; LAT_LED_STA = ~LED_ON; for(i=0; i<16; i++) cfgRegs[i] = 65; byte i2cErrCount = 0; while(1) { // checkBus(); /* Give it a second */ // for(l=0; l<10000; l++); byte rx = readTemp(0x9E); /* Read error */ if(rx == 255) { if(i2cErrCount < 10) i2cErrCount++; else myTemperature = 255; initI2C(); } else { i2cErrCount = 0; myTemperature = rx; } static const byte vADCs[]={ADC_B1V, ADC_B2V, ADC_B3V, ADC_B4V, ADC_B5V, ADC_B6V, ADC_26V}; /* Measure battery voltages */ for(i=0; i < 7; i++) { #ifdef BBR2 /* There is no fifth battery in BBR2, so skip it */ if(i == 4) { vBatt[4]= 0; continue; } #endif setADC(vADCs[i]); vBatt[i] = applyCalibration(readADC(), CAL_V_A, CAL_V_B); } /* Maintain running averages of the I sensors */ for(i=0; i < BATT_COUNT; i++) { #ifdef BBR2 /* There is no fifth battery in BBR2, so skip it */ if(i == 4) { iADCVal[4][writeIndex] = 0; continue; } #endif setADC(iADCs[i]); iADCVal[i][writeIndex] = readADC(); } writeIndex++; if(writeIndex >= IHISTORY_SIZE) writeIndex = 0; /* Calculate running averages of the battery currents */ for(i=0; i < BATT_COUNT; i++) { #ifdef BBR2 /* There is no fifth battery in BBR2, so skip it. */ if(i == 4) { iBatt[4] = 0; continue; } #endif iBatt[i] = applyCalibration(avgRow(i), CAL_I12V_A, CAL_I12V_B); } } }