/******************************************************************************* * Function Name: ADC_DelSig_Sleep ******************************************************************************** * * Summary: * Stops the operation of the block and saves the user configuration. * * Parameters: * void * * Return: * void * * Global variables: * ADC_DelSig_backup: The structure field 'enableState' is modified * depending on the enable state of the block before entering to sleep mode. * * Reentrance: * No * *******************************************************************************/ void ADC_DelSig_Sleep(void) { /* Save ADC enable state */ if((ADC_DelSig_ACT_PWR_DEC_EN == (ADC_DelSig_PWRMGR_DEC_REG & ADC_DelSig_ACT_PWR_DEC_EN)) && (ADC_DelSig_ACT_PWR_DSM_EN == (ADC_DelSig_PWRMGR_DSM_REG & ADC_DelSig_ACT_PWR_DSM_EN))) { /* Component is enabled */ ADC_DelSig_backup.enableState = ADC_DelSig_ENABLED; } else { /* Component is disabled */ ADC_DelSig_backup.enableState = ADC_DelSig_DISABLED; } /* Stop the configuration */ ADC_DelSig_Stop(); /* Save the user configuration */ ADC_DelSig_SaveConfig(); }
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; }