标题: [求助]新手AVR ADC通道切换求助 [打印本页]

作者: czxiaotou    时间: 2012-11-17 19:23
标题: [求助]新手AVR ADC通道切换求助

搞了几天,AVR-16单片机的ADC通道切换一直存在问题,每次切换到通道1,但是单片机采集到的还是通道0的数据。很郁闷。不知道是不是哪里寄存器设置错误了,求大神帮助。非常感谢

[upload=c,main1.c]viewFile.asp?ID=1393[/upload]

作者: czxiaotou    时间: 2012-11-18 11:17
// External Interrupt 0 service routine interrupt [EXT_INT0] void ext_int0_isr(void) { TCCR0=0x0D; } // Read the AD conversion result unsigned int read_adc(unsigned char adc_input) { if(SampleCount==0) { delay_us(50); //ADMUX=adc_input | (ADC_VREF_TYPE & 0xff) ; ADCSRA|=40; delay_us(10); while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; } else { //ADMUX=adc_input | (ADC_VREF_TYPE & 0xff) ; ADCSRA|=40; while ((ADCSRA & 0x10)==0); delay_us(10); ADCSRA|=0x10; } return ADCW; } interrupt [TIM0_COMP] void timer0_comp_isr(void) { Get_AD_Data(); } void Get_AD_Data(void) { float temp=0; char i=0; switch (input_adc) { //两路ADC通道切换,0x00:表示第一路ADC,0x01:表示第二路ADC case 0x00: //读入ADC数据,并取平均处理,然后进行电压与压力的转换计算,最终数码管显示出来 Channel_1[SampleCount] = read_adc(input_adc); SampleCount++; if(SampleCount==50) { SampleCount=0; temp=0; for(i=1;i<50;i++) { temp="temp+Channel_1; " } temp="temp/49.0;" dat1="temp;" input_adc="0x01; " admux="0x01;" } break; case 0x01: //读入ADC数据,并取平均处理,然后进行电压与压力的转换计算,最终数码管显示出来 Channel_2[SampleCount] = read_adc(input_adc); SampleCount++; if(SampleCount==50) { samplecount="0; " temp="0; " for(i=1;i<50;i++) { temp="temp+Channel_2; " } temp="temp/49.0; " dat2="temp; " input_adc="0x00; " admux="0x00; " dat_ok="1; " tccr0="0x00; " } break; } } void AD_init(void) { // ADC initialization // ADC Clock frequency: 921.600 kHz // ADC Voltage Reference: AREF pin // ADC Auto Trigger Source: Timer0 Compare Match ADMUX= 0x00; ADCSRA=0xA6; //ADEN置1:使能ADC,ADATE置1:ADC自动触发使能,ADC输入时钟为CPU时钟8分频 SFIOR&=0x1F; SFIOR|=0x60; //Timer0比较匹配 } void timer0_config(void) { // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: 7.200 kHz // Mode: CTC top="OCR0 //" OC0 output: Disconnected TCCR0=0x0D; TCNT0=0x00; OCR0=0x80; //TIMSK|=0x02; } 跪求大神指点




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1