久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 單片機讀取兩個通道ADC電壓出現問題 [打印本頁]

作者: LAW1100    時間: 2024-11-19 19:40
標題: 單片機讀取兩個通道ADC電壓出現問題
大家有沒有遇到使用AI8G1J08A這款芯片在使用查詢方式讀取兩個通道ADC電壓時,只能正確讀取一個通道電壓值,另一個通道讀取的不是輸入電壓值,甚至如:通道2輸入5V,數值沒有變化,如將5V接入通道3那么通道2顯示(1020)數值,通道2輸入接地,在通道3輸入接5V通道2也會顯示正確讀數,使用一個ADC通道就沒問題,如使用兩個通道則會出現前面的問題。奇怪了!

unsigned int Tvuer=0;
unsigned int sum=0,Set_Sum=0;
void Delay(unsigned  int z)
{
unsigned  int y,x;
for(y=0;y<z;y++)
   for(x=0;x<1140;x++);
   }


void Uart1_Init(void)        //9600bps@11.0592MHz
{
      SCON = 0x50;                //8位數據,可變波特率
        AUXR |= 0x40;                //定時器時鐘1T模式  
        AUXR &= 0xFE;                //串口1選擇定時器1為波特率發生器
        TMOD &= 0x0F;                //設置定時器模式
        TL1 = 0xE0;                        //設置定時初始值
        TH1 = 0xFE;                        //設置定時初始值
        ET1 = 0;                        //禁止定時器中斷
        TI=1;
        TR1 = 1;                        //定時器1開始計時
        EA=1;
}

/****************Io設置**************/
void IO_init(void)
{
        P3M0=0X03;
        P3M1=0XfC;
        P5M0=0XDF;
        P5M1=0X20;
}

/*************ADC初始化************/
void  ADC_Init(void)
{
        //  P3M0=0x03;
         // P3M1=0xfc;

   ADC_RES=0;
    ADC_RESL=0;           
    P_SW2|=0x80;
    ADCTIM=0x3f;  //??????
   P_SW2&=0x7f;
    ADCCFG=0x0f;   //????????2/16
    ADC_CONTR=0x80;
    Delay(1);
}

/**************ADC處理*************/
unsigned  int Get_adc_tep(unsigned char channel)
{

         ADC_CONTR|=0x40|channel;
              
                _nop_();
         _nop_();
                 
       while(!(ADC_CONTR&0x20));         //????                                       
         ADC_CONTR&=~0x20;                     //??     
     return  (ADC_RES<<2)|ADC_RESL;//??+??????
}

void fighting_1(void)
{
        u8 f;
        u16 volue=0;
        for(f=0;f<20;f++)
        {
                volue+=Get_adc_tep(3);
        }
        Tvuer=volue/20;        
        ZKB=(unsigned  char)Tvuer;
        volue=0;
}
void fighting_2()
{
        u8 t;
        u16 Imst=0;
        for(t=0;t<10;t++)
        {
                Imst+=Get_adc_tep(2);
        }
        sum=Imst/10;
        Imst=0;

}

/***************主程序*****************/
void main(void)
{
        IO_init();        
        ADC_Init();
        Uart1_Init();
        while(1)
        {
        fighting_1();  
          fighting_2();        
                printf("讀取ADC5的值=%x\n",sum);
                Delay(1000);
        }   
}




作者: lkc8210    時間: 2024-11-20 09:12
  1. /**************ADC處理*************/
  2. unsigned  int Get_adc_tep(unsigned char channel)
  3. {

  4.          [color=Red]ADC_CONTR=0xC0|channel;[/color]
  5.               
  6.                 _nop_();
  7.          _nop_();
  8.                  
  9.        while(!(ADC_CONTR&0x20));         //????                                       
  10.          ADC_CONTR&=~0x20;                     //??     
  11.      return  (ADC_RES<<2)|ADC_RESL;//??+??????
  12. }
復制代碼

作者: LAW1100    時間: 2024-11-20 11:56
lkc8210 發表于 2024-11-20 09:12

問題還是一樣,就相當于第2通道和第3通道并在一起,以第3通道為主,當第3通道有電壓輸入它就有變化,通道2輸入電壓卻沒顯示變化.
作者: LAW1100    時間: 2024-11-20 15:51
廠家芯片都做出來了正常不會有這問題吧?其它系列型號以這代碼不會出現這問題
作者: wufa1986    時間: 2024-11-20 16:01
大部分單片機ADC切換通道過快的時候,就會有通道相互影響的問題,因為本質是電容充電,解決辦法是加長采樣時間(內部電容充電時間)
作者: LAW1100    時間: 2024-11-21 16:37
wufa1986 發表于 2024-11-20 16:01
大部分單片機ADC切換通道過快的時候,就會有通道相互影響的問題,因為本質是電容充電,解決辦法是加長采樣 ...

加長采樣時間也沒用,一樣會影響別的通道
作者: LAW1100    時間: 2024-11-22 08:28
概然解決不了還是換別的芯片來得快
作者: sssIsmail    時間: 2024-11-23 17:38
加長采樣時間也沒用,一樣會影響別的通道

作者: aldnoahz    時間: 2024-11-24 16:01
沒找到這個芯片的資料,想看看其是否同時支持多路adc,如果按你所說的,要么是芯片壞了,要么就是干擾問題
作者: wohaiainine    時間: 2024-11-25 09:55
可能的原因:
1、通道間干擾:
當兩個ADC通道同時工作時,可能會存在通道間的電磁干擾或信號串擾,導致一個通道的讀取結果受到另一個通道的影響。
2、多路復用器配置問題:
AI8G1J08A芯片可能使用多路復用器來選擇不同的ADC通道。如果多路復用器配置不正確或存在故障,可能會導致通道選擇錯誤,從而影響讀取結果。
3、內部寄存器或電路故障:
芯片內部的寄存器或電路可能發生故障,導致無法正確讀取或處理兩個通道的ADC電壓值。
作者: coody_sz    時間: 2024-11-25 11:38
如果兩路采樣ADC值一樣,則可能是硬件短路、軟件通道選擇沒改變。
作者: LAW1100    時間: 2024-11-25 16:11
wohaiainine 發表于 2024-11-25 09:55
可能的原因:
1、通道間干擾:
當兩個ADC通道同時工作時,可能會存在通道間的電磁干擾或信號串擾,導致一 ...

芯片也換過了,還是一樣
作者: LAW1100    時間: 2024-11-25 16:12
aldnoahz 發表于 2024-11-24 16:01
沒找到這個芯片的資料,想看看其是否同時支持多路adc,如果按你所說的,要么是芯片壞了,要么就是干擾問題

看了官網的資料可以支持多路ADC,也換過芯片,故障還是一樣
作者: LAW1100    時間: 2024-11-25 16:15
coody_sz 發表于 2024-11-25 11:38
如果兩路采樣ADC值一樣,則可能是硬件短路、軟件通道選擇沒改變。

兩路采樣ADC值不一樣,明明設置選通道2的,數值讀出來相差很大,如通道3輸入電壓,則通道2讀出來很穩定




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 欧美色图综合网 | 精品国产免费一区二区三区演员表 | 日韩在线观看中文字幕 | www.99热.com| 懂色av一区二区三区在线播放 | 中文字幕在线一区 | 伊色综合久久之综合久久 | 亚洲网站免费看 | 国产丝袜一区二区三区免费视频 | 91精品国产91久久久久久最新 | 人人艹人人 | av看看| 一级特黄视频 | 艹逼网| 91欧美激情一区二区三区成人 | 亚洲欧美日韩国产综合 | 日韩欧美三区 | 成人福利在线观看 | 亚洲欧美中文日韩在线 | 一区二区三区视频 | 国产精品美女久久久久久久网站 | 国产欧美在线观看 | 日韩精品一区二区三区老鸭窝 | 日本网站免费观看 | 2019天天干夜夜操 | 日韩在线视频播放 | 欧美精品一区久久 | 国产一区二区三区日韩 | 欧美国产免费 | 欧美毛片免费观看 | 色吧色综合 | av中文在线| www.一区二区三区.com | 久久国产婷婷国产香蕉 | 国产三级精品三级在线观看四季网 | 免费观看日韩精品 | 观看av| 日韩免费网站 | 久久国产综合 | 日韩伦理一区二区 | 精品国产黄a∨片高清在线 成人区精品一区二区婷婷 日本一区二区视频 |