Пример #1
0
/*---------------------------------------------------------------------------------------------------------*/
void ADC03_IRQHandler(void)
{
    if(EADC_GET_INT_FLAG(EADC, (0x1 << 4)))
    {
        g_u32AdcCmp0IntFlag = 1;
        EADC_CLR_INT_FLAG(EADC, (0x1 << 4));/* Clear the A/D compare flag 0 */
    }

    if(EADC_GET_INT_FLAG(EADC, (0x1 << 5)))
    {
        g_u32AdcCmp1IntFlag = 1;
        EADC_CLR_INT_FLAG(EADC, (0x1 << 5));/* Clear the A/D compare flag 1 */
    }
}
Пример #2
0
// ----------------------------------------------------------------------------------------
//  Start ADC conversion
// ----------------------------------------------------------------------------------------
void GetBattery(void)
{
	// Clear the ADC INT0 interrupt flag
	EADC_CLR_INT_FLAG(EADC, 0x2);
	//Trigger sample module 0 to start A/D conversion
	EADC_START_CONV(EADC, 0x2);
	//Wait ADC interrupt (g_u32AdcIntFlag will be set at IRQ_Handler function)
	while(EADC_GET_INT_FLAG(EADC, 0x2) == 0);
	//Trigger sample module 0 to start A/D conversion
	BatteryData = ((EADC_GET_CONV_DATA(EADC, 1))*100/4096);

	/* Update TID value */
	BatDev.Input.data1.value = BatteryData;
	if(BatDev.Input.data1.value < BatDev.Feature.data2.value)
	{
		BatDev.Input.data2.value = 1;
		BatOverTimeCounter = getTickCount()+ BatDev.Feature.data3.value*1000;
	}
	/* reset alerm flag after 10s */
	if(BatDev.Input.data2.value == 1)
	{
		if(getTickCount() > BatOverTimeCounter)
			BatDev.Input.data2.value = 0;
		if(BatDev.Output.data1.value == 1)
			BatDev.Input.data2.value = 0;
	}
}
Пример #3
0
void GetID()
{
    static uint16_t u16Range[][2] = {
        { 125,  310},
        { 373,  558},
        { 621,  806},
        { 869, 1055},
        {1118, 1303},
        {1366, 1551},
        {1616, 1799},
        {1861, 2048},
        {2111, 2296},
        {2359, 2544},
        {2607, 2792},
        {2855, 3040},
        {3103, 3289},
        {3351, 3537},
        {3600, 3785}
    };      
	uint16_t adcData;
    uint32_t i;
    
	// Clear the ADC INT0 interrupt flag
	EADC_CLR_INT_FLAG(EADC, 0x1);
	// Clear the ADC INT0 interrupt flag
	EADC_START_CONV(EADC, 0x1);
	//Trigger sample module 0 to start A/D conversion
	while(EADC_GET_INT_FLAG(EADC, 0x1) == 0);
	//Wait ADC interrupt (g_u32AdcIntFlag will be set at IRQ_Handler function)
	adcData = EADC_GET_CONV_DATA(EADC, 0);

	//check module ID
    
    for(i=0; i<(sizeof(u16Range)/sizeof(uint16_t)/2); i++)
    {
        if (adcData > u16Range[i][0] && adcData < u16Range[i][1])
        {
            devNum = i;
            break;
        }
    }
    
    if (i >= (sizeof(u16Range)/sizeof(uint16_t)/2))
        devNum = 100;
    
}