Пример #1
0
/******************************************************************************* 
* 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();
}
Пример #2
0
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;
}