找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4919|回复: 1
打印 上一主题 下一主题
收起左侧

[求助]新手AVR ADC通道切换求助

[复制链接]
跳转到指定楼层
楼主
ID:46519 发表于 2012-11-17 19:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

[upload=c,main1.c]viewFile.asp?ID=1393[/upload]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:46519 发表于 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; } 跪求大神指点
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表