//ADC完成中断
#pragma interrupt_handler adc_isr:iv_ADC
void adc_isr(void)
{
ADMUX =0x46;//选择内部AVCC为基准
temp_single=ADC&0x3ff;
temp_single=temp_single*Vref/0x3ff;
temp_sum =(unsigned int)( temp_sum + temp_single*temp_single);
if(flag==64)
{
adc_rel=(unsigned int)sqrt(temp_sum/64);
flag = 0;
temp_sum = 0;
}
//ADCSRA|=(1<<ADSC);//启动AD转换
}
#pragma interrupt_handler timer0_ovf:17
void timer0_ovf(void)
{
TCNT0 = 0xB2; //重装计数初值
ADCSRA|=(1<<ADSC);//启动AD转换
flag++; //625微妙,标志位加1
}
程序代码如上,主芯片为mega88。 当我不接V1(220V交流电)时,电源由下载器提供时,数码管显示2.4V, 万用表测得的IO口(Vin)电压为2.109V。
当我接入V1为市电时,数码管还是显示2.4V,我用万用表测Vin的直流电压为2.4V,交流电为0.3V。 实在是搞不懂出错在哪里了,求各位大神指导下可以吗?
|