void XShamber::ReadTemperature() { float fcode; if(ReadAd(temp1ReadCh,fcode)){ m_CurrTemp1 = fcode*10/4096; temp1Code = fcode; } if(ReadAd(temp2ReadCh,fcode)){ m_CurrTemp2 = fcode*10/4096; temp2Code = fcode; } }
void XRayTube::ReadPower12Vol(){ float fcode; if(ReadAd(Power12vCh,fcode)){ Power12Vol = fcode*12/10; if(Power12Vol<0) Power12Vol=0; V12ReadCode = fcode; } }
void XRayTube::ReadPower5Vol(){ float fcode; if(ReadAd(Power5vCh,fcode)){ Power5Vol = fcode*5/10; if(Power5Vol<0) Power5Vol=0; V5ReadCode = fcode; } }
void XRayTube::ReadPower24Vol(){ float fcode; if(ReadAd(Power24vCh,fcode)){ Power24Vol = fcode*24/10; if(Power24Vol<0) Power24Vol=0; V24ReadCode = fcode; } }
void XShamber::ReadAngle() { float fcode; if(ReadAd(angleReadCh,fcode)){ CurrAngle = fcode*10/4096; angleCode = fcode; } }
void XRayTube::ReadMA(){ float fcode; if(ReadAd(MaReadAdCh,fcode)) { // fcode: 0~10v m_CurrMA=fcode*1000/10; //1000ma if(m_CurrMA<0) m_CurrMA=0; MaReadCode = fcode; } }
void XRayTube::ReadHV(){ float fcode; if(ReadAd(HvReadAdCh,fcode)) { // fcode: 0~10v m_CurrHV = fcode*50/10; //50KV if(m_CurrHV<0) m_CurrHV=0; HvReadCode = fcode; } }
void XRayTube::ReadStdHV(){ float fcode; if(ReadAd(StdReadCh,fcode)){ // fcode: 0~10v m_StdCurrHV = fcode*10/10; if(m_StdCurrHV<0) m_StdCurrHV=0; StdReadCode = fcode; } }
void XRayTube::ReadH2500HV(){ float fcode; if(ReadAd(H2500ReadCh,fcode)){ // fcode: 0~10v m_H2500CurrentHV = fcode*2500/10; if(m_H2500CurrentHV<0) m_H2500CurrentHV=0; H2500ReadCode = fcode; } }
void _ISRFAST _T1Interrupt(void) { // read ambient light and switch on leds in a first phase // wait 350 us to let the phototransistor react // read reflected light and switch off the leds in a second phase // wait 3 ms before stating again // repeat these two steps for the four couples of prox sensors static int ir_phase=0; // phase can be 0 (ambient) or 1 (reflected) static int ir_number=0; // number goes from 0 to 3 (4 couples of sensors) IFS0bits.T1IF = 0; // clear interrupt flag switch (ir_number) { case 0: // ir sensors 0 and 4 { if (ir_phase == 0) { PR1 = (350.0*MICROSEC)/8.0; // next interrupt in 350 us ambient_ir[0] = ReadAd(IR0); ambient_ir[4] = ReadAd(IR4); pulse_IR0 = 1; // led on for next measurement ir_phase = 1; // next phase } else { PR1 = (2100.0*MICROSEC)/8.0; // next interrupt in 3 ms ambient_and_reflected_ir[0] = ReadAd(IR0); ambient_and_reflected_ir[4] = ReadAd(IR4); reflected_ir[0] = ambient_ir[0] - ambient_and_reflected_ir[0]; reflected_ir[4] = ambient_ir[4] - ambient_and_reflected_ir[4]; pulse_IR0 = 0; // led off ir_phase = 0; // reset phase ir_number = 1; // next two sensors } break; } case 1: // ir sensors 1 and 5 { if (ir_phase == 0) { PR1 = (350.0*MICROSEC)/8.0; // next interrupt in 350 us ambient_ir[1] = ReadAd(IR1); ambient_ir[5] = ReadAd(IR5); pulse_IR1 = 1; // led on for next measurement ir_phase = 1; // next phase } else { PR1 = (2100.0*MICROSEC)/8.0; // next interrupt in 3 ms ambient_and_reflected_ir[1] = ReadAd(IR1); ambient_and_reflected_ir[5] = ReadAd(IR5); reflected_ir[1] = ambient_ir[1] - ambient_and_reflected_ir[1]; reflected_ir[5] = ambient_ir[5] - ambient_and_reflected_ir[5]; pulse_IR1 = 0; // led off ir_phase = 0; // reset phase ir_number = 2; // next two sensors } break; } case 2: // ir sensors 2 and 6 { if (ir_phase == 0) { PR1 = (350.0*MICROSEC)/8.0; // next interrupt in 350 us ambient_ir[2] = ReadAd(IR2); ambient_ir[6] = ReadAd(IR6); pulse_IR2 = 1; // led on for next measurement ir_phase = 1; // next phase } else { PR1 = (2100.0*MICROSEC)/8.0; // next interrupt in 3 ms ambient_and_reflected_ir[2] = ReadAd(IR2); ambient_and_reflected_ir[6] = ReadAd(IR6); reflected_ir[2] = ambient_ir[2] - ambient_and_reflected_ir[2]; reflected_ir[6] = ambient_ir[6] - ambient_and_reflected_ir[6]; pulse_IR2 = 0; // led off ir_phase = 0; // reset phase ir_number = 3; // next sensor } break; } case 3: // ir sensors 3 and 7 { if (ir_phase == 0) { PR1 = (350.0*MICROSEC)/8.0; // next interrupt in 350 us ambient_ir[3] = ReadAd(IR3); ambient_ir[7] = ReadAd(IR7); pulse_IR3 = 1; // led on for next measurement ir_phase = 1; // next phase } else { PR1 = (2100.0*MICROSEC)/8.0; // next interrupt in 3 ms ambient_and_reflected_ir[3] = ReadAd(IR3); ambient_and_reflected_ir[7] = ReadAd(IR7); reflected_ir[3] = ambient_ir[3] - ambient_and_reflected_ir[3]; reflected_ir[7] = ambient_ir[7] - ambient_and_reflected_ir[7]; pulse_IR3 = 0; // led off ir_phase = 0; // reset phase ir_number = 0; // next sensor (back to beginning) } break; } } }