Vaisala take_Temp_RH_reading(){ uint32 output; Vaisala reading2; reading2.valid = 0; AMux_Select(7); ADC_DelSig_SelectConfiguration(ADC_DelSig_CFG2,1); ADC_DelSig_StartConvert(); CyDelay(100u); uint8 i; for(i = 0; i < 100; i++) { if(ADC_DelSig_IsEndConversion(ADC_DelSig_WAIT_FOR_RESULT)) { output = ADC_DelSig_CountsTo_mVolts(ADC_DelSig_GetResult32()); reading2.RH = ((float)output)/50; reading2.valid = 1; break; } CyDelay(5u); } ADC_DelSig_StopConvert(); AMux_Select(6); ADC_DelSig_StartConvert(); CyDelay(100u); for(i = 0; i < 100; i++) { if(ADC_DelSig_IsEndConversion(ADC_DelSig_WAIT_FOR_RESULT)) { output = ADC_DelSig_CountsTo_mVolts(ADC_DelSig_GetResult32()); reading2.Temp = ((float)output)*120/5000-40; reading2.valid = 1 & reading2.valid; break; } CyDelay(5u); } return reading2; }
/******************************************************************************* * Function Name: ADC_DelSig_Wakeup ******************************************************************************** * * Summary: * Restores the user configuration and enables the power to the block. * * Parameters: * void * * Return: * void * * Global variables: * ADC_DelSig_backup: The structure field 'enableState' is used to * restore the enable state of block after wakeup from sleep mode. * * Reentrance: * No * *******************************************************************************/ void ADC_DelSig_Wakeup(void) { /* Restore the configuration */ ADC_DelSig_RestoreConfig(); /* Enable's the component operation */ if(ADC_DelSig_backup.enableState == ADC_DelSig_ENABLED) { ADC_DelSig_Enable(); /* Start the conversion only if conversion is not triggered by the hardware */ if(!(ADC_DelSig_DEC_CR_REG & ADC_DelSig_DEC_XSTART_EN)) { ADC_DelSig_StartConvert(); } } /* Do nothing if component was disable before */ }
/******************************************************************************* * Function Name: main ******************************************************************************** * * Summary: * Main function performs following functions: * 1: Enables global interrupts * 2: Start all components on the schematic * 3: Calls a function to configure DMA * Parameters: * None. * * Return: * None. * *******************************************************************************/ int main() { /* Start all components used on schematic */ ADC_DelSig_IRQ_Start(); //isr_StartEx(filterVDAC); ADC_DelSig_Start(); ADC_DelSig_StartConvert(); VDAC8_Start(); //Opamp_Start(); Filter_Start(); /* User-implemented function to set-up DMA */ DMA_Config(); /* Enable Global Interrupts */ CYGlobalIntEnable; for(;;) { } } /* End of main */
Radiation take_radiation_reading(){ int32 output; uint8 i; Radiation reading; Thermo RTD; AMux_Select(4); ADC_DelSig_SelectConfiguration(ADC_DelSig_CFG2,1); ADC_DelSig_StartConvert(); //ADC_DelSig_SelectConfiguration(ADC_DelSig_CFG2,1); CyDelay(100u); for(i = 0; i < 100; i++) { if(ADC_DelSig_IsEndConversion(ADC_DelSig_WAIT_FOR_RESULT)) { output = ADC_DelSig_CountsTo_mVolts(ADC_DelSig_GetResult32()); RTD.sensor = (float)output; RTD.sensor_valid = 1; break; } CyDelay(5u); } ADC_DelSig_StopConvert(); AMux_Select(5); ADC_DelSig_SelectConfiguration(ADC_DelSig_CFG2,1); ADC_DelSig_StartConvert(); //ADC_DelSig_SelectConfiguration(ADC_DelSig_CFG2,1); CyDelay(100u); for(i = 0; i < 100; i++) { if(ADC_DelSig_IsEndConversion(ADC_DelSig_WAIT_FOR_RESULT)) { output = ADC_DelSig_CountsTo_mVolts(ADC_DelSig_GetResult32()); RTD.ref = (float)output; RTD.ref_valid = 1; break; } CyDelay(5u); } r = 98*RTD.sensor/RTD.ref; reading.temp = GetPt100Temperature(r) + 273.15;//2.5584*r - 255.7 + 273.15; //linear equation from wikipedia table plus 273 to convert to kelvin ADC_DelSig_Stop(); AMux_Select(0); ADC_DelSig_Start(); ADC_DelSig_SelectConfiguration(ADC_DelSig_CFG1,1); ADC_DelSig_StartConvert(); CyDelay(100u); for(i = 0; i < 100; i++) { if(ADC_DelSig_IsEndConversion(ADC_DelSig_WAIT_FOR_RESULT)) { output = ADC_DelSig_CountsTo_uVolts(ADC_DelSig_GetResult32()); reading.SW_In = (float)output/17.53; reading.SW_In_valid = 1; break; } CyDelay(5u); } ADC_DelSig_StopConvert(); AMux_Select(1); ADC_DelSig_StartConvert(); CyDelay(100u); for(i = 0; i < 100; i++) { if(ADC_DelSig_IsEndConversion(ADC_DelSig_WAIT_FOR_RESULT)) { output = ADC_DelSig_CountsTo_uVolts(ADC_DelSig_GetResult32()); reading.SW_Out = (float)output/20.69; reading.SW_Out_valid = 1; break; } CyDelay(5u); } ADC_DelSig_StopConvert(); AMux_Select(2); ADC_DelSig_StartConvert(); CyDelay(100u); for(i = 0; i < 100; i++) { if(ADC_DelSig_IsEndConversion(ADC_DelSig_WAIT_FOR_RESULT)) { output = ADC_DelSig_CountsTo_uVolts(ADC_DelSig_GetResult32()); reading.LW_In = (float)output/12.95 + .0000000567*reading.temp*reading.temp*reading.temp*reading.temp; reading.LW_In_valid = 1; break; } CyDelay(5u); } ADC_DelSig_StopConvert(); AMux_Select(3); ADC_DelSig_StartConvert(); CyDelay(100u); for(i = 0; i < 100; i++) { if(ADC_DelSig_IsEndConversion(ADC_DelSig_WAIT_FOR_RESULT)) { output = ADC_DelSig_CountsTo_uVolts(ADC_DelSig_GetResult32()); reading.LW_Out = (float)output/11.21 + .0000000567*reading.temp*reading.temp*reading.temp*reading.temp; reading.LW_Out_valid = 1; break; } CyDelay(5u); } ADC_DelSig_StopConvert(); return reading; }