Moderadores: 51, guest2003, Renie, gpenga
#define ADC_FIM_ESCALA (3300) // mV
#define ADC_RESOL_MAX (1U<<9) // 9 bits
#define ADC_RESOL_MIN (ADC_FIM_ESCALA/ADC_RESOL_MAX) // ~6,44mV
#define ADC_QTD_MED_MAX (1U<<23) // 23 bits, 2^32 / 2^9 = 2^32 / ADC_RESOL_MAX
static void p_adc_isr (void) __irq
{
if ( ADSTAT & (1U<<4) )
{
u32_adc_1 += ((ADDR4>>7) & 0x1FF);
if ( u32_count_med_adc_1 == ADC_QTD_MED_MAX )
u32_adc_1 -= (ADC_RESOL_MAX>>1);
else
++u32_count_med_adc_1;
}
//Dummy
VICVectAddr = 0x00000000;
}
U32 p_adc_read_adc (U8 u8_adc)
{
U32 u32_adc;
if ( u8_adc == 1 )
{
// Efetue o calculo da média
u32_adc = (u32_adc_1 / u32_count_med_adc_1);
// Prepare para nova serie de medidas
u32_adc_1 = u32_count_med_adc_1 = 0;
}
return u32_adc;
}
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante