找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4950|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

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

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:46519 發(fā)表于 2012-11-17 19:23 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

搞了幾天,AVR-16單片機(jī)的ADC通道切換一直存在問題,每次切換到通道1,但是單片機(jī)采集到的還是通道0的數(shù)據(jù)。很郁悶。不知道是不是哪里寄存器設(shè)置錯(cuò)誤了,求大神幫助。非常感謝

[upload=c,main1.c]viewFile.asp?ID=1393[/upload]
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:46519 發(fā)表于 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數(shù)據(jù),并取平均處理,然后進(jìn)行電壓與壓力的轉(zhuǎn)換計(jì)算,最終數(shù)碼管顯示出來 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數(shù)據(jù),并取平均處理,然后進(jìn)行電壓與壓力的轉(zhuǎn)換計(jì)算,最終數(shù)碼管顯示出來 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自動(dòng)觸發(fā)使能,ADC輸入時(shí)鐘為CPU時(shí)鐘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; } 跪求大神指點(diǎn)
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表