找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3913|回復(fù): 31
收起左側(cè)

STC08G單片機(jī)在ADC過(guò)程電壓異常

  [復(fù)制鏈接]
ID:466997 發(fā)表于 2022-8-25 14:26 | 顯示全部樓層 |閱讀模式
最近小弟采用I/O復(fù)用方式進(jìn)行ADC,結(jié)果出現(xiàn)ADC過(guò)程電壓躍落情況,急需求解。謝謝!

電壓異常波型

電壓異常波型
ADC原理圖.png
回復(fù)

使用道具 舉報(bào)

ID:688692 發(fā)表于 2022-8-25 15:08 | 顯示全部樓層
剛好遇到了,STC技術(shù)告知的解決辦法:在ADC腳對(duì)地接一顆103電容。
http://www.torrancerestoration.com/bbs/forum.p ... p;page=1#pid1105080
回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2022-8-25 15:39 | 顯示全部樓層
說(shuō)明一下,P55與P54的電壓由誰(shuí)提供。
這個(gè)圖在P55、P54做AD時(shí),無(wú)外界提供電壓,AD采樣接近0。
P55、P54做IO時(shí),則是示波器的圖形。
而且又不批出,黃線是誰(shuí)的波形,藍(lán)線是誰(shuí)的波形。在什么情況下的波形。
全靠別人猜。
溝通表達(dá)能力差。
回復(fù)

使用道具 舉報(bào)

ID:41656 發(fā)表于 2022-8-25 16:03 | 顯示全部樓層
沒(méi)明白你是怎么復(fù)用的不說(shuō)明清除不好說(shuō)
回復(fù)

使用道具 舉報(bào)

ID:1034262 發(fā)表于 2022-8-25 16:19 | 顯示全部樓層
沒(méi)看明白,你說(shuō)下你的操作過(guò)程。
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2022-8-25 16:29 | 顯示全部樓層
ADC端口復(fù)用受外部硬件條件限制,也就是在ADC采樣時(shí)段其他外部硬件呈高阻,不影響ADC采樣電壓。從你的圖看不出你要怎么復(fù)用。
回復(fù)

使用道具 舉報(bào)

ID:1034948 發(fā)表于 2022-8-25 19:14 | 顯示全部樓層
你這個(gè)怎么要I/O口呀,上面I/O的電壓要固定一個(gè)值才行。
回復(fù)

使用道具 舉報(bào)

ID:59202 發(fā)表于 2022-8-25 23:06 | 顯示全部樓層
你這個(gè)問(wèn)題描述的也太簡(jiǎn)單了吧,哪個(gè)口是adc輸入,哪個(gè)口是IO口,實(shí)現(xiàn)的功能和出現(xiàn)的現(xiàn)象等都應(yīng)該描述清楚才好解決啊
回復(fù)

使用道具 舉報(bào)

ID:466997 發(fā)表于 2022-8-26 14:14 | 顯示全部樓層
上圖中在ADC過(guò)程,P5.5是穩(wěn)定輸出高電平,P5.4進(jìn)行AD轉(zhuǎn)換(輸入口)。通過(guò)AD轉(zhuǎn)化實(shí)現(xiàn)溫度檢測(cè)。
回復(fù)

使用道具 舉報(bào)

ID:624769 發(fā)表于 2022-8-26 15:29 | 顯示全部樓層
STC8G  那么多產(chǎn)品中, 我還真沒(méi)找到 可以用 P5.4 測(cè)AD的型號(hào), 所以,連示波器都用上了, 不能先看看 產(chǎn)品規(guī)格書么?
回復(fù)

使用道具 舉報(bào)

ID:624769 發(fā)表于 2022-8-26 16:26 | 顯示全部樓層
j1ason 發(fā)表于 2022-8-26 14:14
上圖中在ADC過(guò)程,P5.5是穩(wěn)定輸出高電平,P5.4進(jìn)行AD轉(zhuǎn)換(輸入口)。通過(guò)AD轉(zhuǎn)化實(shí)現(xiàn)溫度檢測(cè)。

P5.5 是不可能穩(wěn)定輸出高電平的,你要穩(wěn)定的話,只能 10K電阻的另一頭接VCC,把P5.5 開(kāi)漏模式 輸出穩(wěn)定的低電平 才有可能實(shí)現(xiàn)“穩(wěn)定”
回復(fù)

使用道具 舉報(bào)

ID:1034262 發(fā)表于 2022-8-26 16:28 | 顯示全部樓層
一般建議NTC接地,這樣用什么問(wèn)題嗎?P5.5要設(shè)置為推挽輸出。
回復(fù)

使用道具 舉報(bào)

ID:401564 發(fā)表于 2022-8-26 17:18 | 顯示全部樓層
1,為什么要這么操作?
2,代碼上傳
回復(fù)

使用道具 舉報(bào)

ID:401564 發(fā)表于 2022-8-27 00:21 | 顯示全部樓層
188610329 發(fā)表于 2022-8-26 15:29
STC8G  那么多產(chǎn)品中, 我還真沒(méi)找到 可以用 P5.4 測(cè)AD的型號(hào), 所以,連示波器都用上了, 不能先看看 產(chǎn)品 ...

STC8G1K08A
每個(gè)IO都有ADC功能,一塊二一片,性價(jià)比還是蠻可以的
就是抗干擾不怎么好,我DIY一個(gè)太陽(yáng)能路燈,只是LED燈的線架在220V上而已,有時(shí)候開(kāi)日光燈,這板子就復(fù)位了,我還打了20個(gè)板子,準(zhǔn)備回家用呢......有點(diǎn)后悔了,當(dāng)初應(yīng)該用PIC12F615的
回復(fù)

使用道具 舉報(bào)

ID:59202 發(fā)表于 2022-8-28 19:38 | 顯示全部樓層
P5.5接穩(wěn)定高電平,那為啥不直接接到電源呢,不知咋想的。IO口輸出是經(jīng)過(guò)了內(nèi)部的輸出電路的,不管輸出高、低電平都會(huì)受到輸出電路內(nèi)阻的影響,拿來(lái)作為AD的參考電壓很不合適啊
回復(fù)

使用道具 舉報(bào)

ID:491577 發(fā)表于 2022-8-28 22:08 | 顯示全部樓層
Y_G_G 發(fā)表于 2022-8-27 00:21
STC8G1K08A
每個(gè)IO都有ADC功能,一塊二一片,性價(jià)比還是蠻可以的
就是抗干擾不怎么好,我DIY一個(gè)太陽(yáng)能路 ...

抗干擾與你的電路設(shè)計(jì)有關(guān),你的STC單片機(jī)用了幾個(gè)電容?多大容量的?
回復(fù)

使用道具 舉報(bào)

ID:688692 發(fā)表于 2022-8-29 09:58 | 顯示全部樓層
Y_G_G 發(fā)表于 2022-8-27 00:21
STC8G1K08A
每個(gè)IO都有ADC功能,一塊二一片,性價(jià)比還是蠻可以的
就是抗干擾不怎么好,我DIY一個(gè)太陽(yáng)能路 ...

不至于這么慘吧,同樣用STC8G1K08A-QFN 做了一個(gè)24V電源的監(jiān)控處理板,沒(méi)聽(tīng)用戶反饋什么問(wèn)題,帶的是無(wú)刷電機(jī)。
回復(fù)

使用道具 舉報(bào)

ID:466997 發(fā)表于 2022-8-29 10:13 | 顯示全部樓層
188610329 發(fā)表于 2022-8-26 15:29
STC8G  那么多產(chǎn)品中, 我還真沒(méi)找到 可以用 P5.4 測(cè)AD的型號(hào), 所以,連示波器都用上了, 不能先看看 產(chǎn)品 ...

STC8G1K08A是有這口的,并說(shuō)明可以進(jìn)行ADC的

stc8g.jpg
回復(fù)

使用道具 舉報(bào)

ID:466997 發(fā)表于 2022-8-29 10:23 | 顯示全部樓層
coody_sz 發(fā)表于 2022-8-26 16:28
一般建議NTC接地,這樣用什么問(wèn)題嗎?P5.5要設(shè)置為推挽輸出。

收到,另外,目前波形中P5.5已經(jīng)是推挽輸出模式的了
回復(fù)

使用道具 舉報(bào)

ID:879348 發(fā)表于 2022-8-29 10:29 | 顯示全部樓層
程序問(wèn)題,還得慢慢自己研究,那么多人用基本不會(huì)出現(xiàn)如此簡(jiǎn)單的錯(cuò)誤
回復(fù)

使用道具 舉報(bào)

ID:466997 發(fā)表于 2022-8-29 10:33 | 顯示全部樓層
xxxevery 發(fā)表于 2022-8-28 19:38
P5.5接穩(wěn)定高電平,那為啥不直接接到電源呢,不知咋想的。IO口輸出是經(jīng)過(guò)了內(nèi)部的輸出電路的,不管輸出高、 ...

理論上還是可以的
回復(fù)

使用道具 舉報(bào)

ID:466997 發(fā)表于 2022-8-29 10:38 | 顯示全部樓層
Y_G_G 發(fā)表于 2022-8-26 17:18
1,為什么要這么操作?
2,代碼上傳

unsigned char ADC_NTC(void)
{
unsigned char b;

P5M0 = 0X00;  
P5M1 = 0X20;
P_SW2 |= 0x80;  
ADCTIM = 0x3f;
P_SW2 &= 0x7f;
ADCCFG = 0x0f;   
ADC_CONTR = 0x85;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
ADC_CONTR |= 0x40;  
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();

while (!(ADC_CONTR & 0x20));  
ADC_CONTR &= ~0x20;
b = ADC_RES
由于電路設(shè)計(jì)需要
回復(fù)

使用道具 舉報(bào)

ID:401564 發(fā)表于 2022-8-29 11:29 | 顯示全部樓層
cnos 發(fā)表于 2022-8-29 09:58
不至于這么慘吧,同樣用STC8G1K08A-QFN 做了一個(gè)24V電源的監(jiān)控處理板,沒(méi)聽(tīng)用戶反饋什么問(wèn)題,帶的是無(wú)刷 ...

跟硬件肯定是沒(méi)有關(guān)系的了,估計(jì)是日光的鎮(zhèn)流器,只有在開(kāi)燈的時(shí)候有復(fù)位現(xiàn)象,連續(xù)開(kāi)燈十幾二十次就會(huì)有一次復(fù)位
同一塊PCB板子,直接換上PIC12F615,搭線測(cè)試,開(kāi)了半個(gè)小時(shí),沒(méi)有一次復(fù)位的
用于測(cè)試的程序很簡(jiǎn)單,首先排除程序的問(wèn)題
就是什么功能都沒(méi)有,就是開(kāi)機(jī)之后,控制IO先低電平并延時(shí)0.5秒,然后,就是一直開(kāi)燈,幾行代碼而已,ADC什么的都沒(méi)有用
只要開(kāi)機(jī)之后出現(xiàn)滅燈的,就是復(fù)位了
回復(fù)

使用道具 舉報(bào)

ID:47286 發(fā)表于 2022-8-29 13:53 | 顯示全部樓層
Y_G_G 發(fā)表于 2022-8-29 11:29
跟硬件肯定是沒(méi)有關(guān)系的了,估計(jì)是日光的鎮(zhèn)流器,只有在開(kāi)燈的時(shí)候有復(fù)位現(xiàn)象,連續(xù)開(kāi)燈十幾二十次就會(huì)有一 ...

8G1K穩(wěn)定性好象是不好 我搞了個(gè)GPS時(shí)鐘服務(wù) 因?yàn)?G1K 20PIN的有雙串口就用這片子 超過(guò)2秒收不到GPS數(shù)據(jù)會(huì)報(bào)一下警告 大概穩(wěn)定工作了半年 開(kāi)始間隔報(bào)警 然后越來(lái)越頻繁 我以為是GPS模塊的問(wèn)題 連模塊帶天線都換了一套也沒(méi)什么用 換了8G1K片子正常工作了 然后過(guò)半年 又不行了 但重新刷一下程序 一點(diǎn)沒(méi)動(dòng)的程序 就又能穩(wěn)定工作半年 應(yīng)該不是電源的問(wèn)題 這個(gè)模塊12VDC和12v電池雙供電 電源為主和電池為主都試過(guò) 一樣
回復(fù)

使用道具 舉報(bào)

ID:1034262 發(fā)表于 2022-8-29 14:32 | 顯示全部樓層
Y_G_G 發(fā)表于 2022-8-27 00:21
STC8G1K08A
每個(gè)IO都有ADC功能,一塊二一片,性價(jià)比還是蠻可以的
就是抗干擾不怎么好,我DIY一個(gè)太陽(yáng)能路 ...

你這種情況,屬于電源問(wèn)題,電源做好,不要有跌落,就不會(huì)復(fù)位,我用這個(gè)MCU做燈控也比較多,沒(méi)發(fā)現(xiàn)你說(shuō)的問(wèn)題。
回復(fù)

使用道具 舉報(bào)

ID:1043216 發(fā)表于 2022-8-29 14:46 | 顯示全部樓層
P5.5是穩(wěn)定輸出高電平,P5.4進(jìn)行AD轉(zhuǎn)換(輸入口)。通過(guò)AD轉(zhuǎn)化實(shí)現(xiàn)溫度檢測(cè)。
回復(fù)

使用道具 舉報(bào)

ID:59202 發(fā)表于 2022-8-29 15:36 | 顯示全部樓層
樓主,理論上可行但如果不可控因素更多的話還是建議慎用,從你給的程序看完全就是測(cè)的P5.5的電壓,這跟你前面描述的情況完全不符啊
http://www.torrancerestoration.com/bbs/forum.php?mod=redirect&goto=findpost&ptid=223192&pid=1105390

回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2022-8-29 15:53 | 顯示全部樓層
j1ason 發(fā)表于 2022-8-29 10:38
unsigned char ADC_NTC(void)
{
unsigned char b;

樓主用STC8G1K08A的P5.5輸出高電平,分壓后供P5.4 ADC取樣,這樣用沒(méi)有什么問(wèn)題,但與 “I/O復(fù)用方式” 沒(méi)有干系。所謂復(fù)用是指同一個(gè)I/O口同時(shí)或分時(shí)執(zhí)行兩個(gè)以上功能。出現(xiàn)異常波形當(dāng)然是代碼問(wèn)題。
回復(fù)

使用道具 舉報(bào)

ID:401564 發(fā)表于 2022-8-29 21:12 | 顯示全部樓層
coody_sz 發(fā)表于 2022-8-29 14:32
你這種情況,屬于電源問(wèn)題,電源做好,不要有跌落,就不會(huì)復(fù)位,我用這個(gè)MCU做燈控也比較多,沒(méi)發(fā)現(xiàn)你說(shuō) ...

我覺(jué)得你可能沒(méi)有認(rèn)真看我的回復(fù)
回復(fù)

使用道具 舉報(bào)

ID:16671 發(fā)表于 2022-8-29 22:07 | 顯示全部樓層
這么用2個(gè)IO??P5.5接VCC,試一下
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2022-8-30 07:50 | 顯示全部樓層
weqeq23 發(fā)表于 2022-8-29 14:46
P5.5是穩(wěn)定輸出高電平,P5.4進(jìn)行AD轉(zhuǎn)換(輸入口)。通過(guò)AD轉(zhuǎn)化實(shí)現(xiàn)溫度檢測(cè)。

這是基本條件和應(yīng)用代碼
  1. #define ADCTIM  (*(unsigned char volatile xdata *)0xfea8)
  2. #define ADC_POWER   0x80                        //ADC power control dit (ADC電源控制位)1000 0000
  3. #define ADC_START   0x40                        //ADC start control dit (ADC啟動(dòng)控制位)0100 0000
  4. #define ADC_FLAG    0x20                        //ADC complete flag (ADC完成標(biāo)志位)    0010 0000
  5. #define ADC_EPWMT   0x10                        //使能 PWM  實(shí)時(shí)觸發(fā) ADC               0001 0000


  6. P3M1 = 0x00;                                         //設(shè)置P3準(zhǔn)雙向
  7. P3M0 = 0x00;                                         //設(shè)置P3準(zhǔn)雙向
  8. P5M1 = 0x10;                                         //設(shè)置P5.4高阻0001 0000
  9. P5M0 = 0x20;                                         //設(shè)置P5.5推挽0010 0000

  10. /*------------------------
  11.   InitADC 初始化ADC
  12. -------------------------*/
  13. void Init_ADC()
  14. {        //ADC 控制器  電源  啟動(dòng)  完成  --   15通道模擬選擇位
  15.         //ADC_CONTR    B7    B6    B5   B4   B3   B2   B1   B0
  16.         P_SW2 |= 0x80;                                        //打開(kāi)設(shè)置開(kāi)關(guān)
  17.         ADCTIM = 0x3f;                                        //設(shè)置 ADC 內(nèi)部時(shí)序
  18.         P_SW2 &= 0x7f;                                        //關(guān)閉設(shè)置開(kāi)關(guān)
  19.         ADCCFG = 0x27;                                        //設(shè)置ADC結(jié)果右對(duì)齊,速度為512系統(tǒng)時(shí)鐘
  20.         ADC_RES=0;                                                //清除ADC_RES存儲(chǔ)器以前的結(jié)果
  21.         ADC_RESL=0;
  22.         ADC_CONTR=ADC_POWER;                 //開(kāi)啟ADC電源
  23.         _nop_();_nop_();                                //上電延時(shí)
  24.         _nop_();_nop_();
  25. }
  26. /*----------------------------
  27.         讀取ADC結(jié)果
  28. ----------------------------*/
  29. unsigned int GetADCResult(unsigned char CH)//ADC通道CH=4 (P5.4)
  30. {
  31.         ADC_CONTR=ADC_POWER|ADC_START|CH;//啟動(dòng)轉(zhuǎn)換1100 1100
  32.         _nop_();_nop_();                                                //小延時(shí)
  33.         while (!(ADC_CONTR & ADC_FLAG));//等待ADC轉(zhuǎn)換完成標(biāo)志置位 1010 0000
  34.         ADC_CONTR &=~ADC_FLAG;                        //清完成標(biāo)志
  35.         return ADC_RES<<8|ADC_RESL;                //返回十位ADC結(jié)果
  36. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

ID:466997 發(fā)表于 2022-8-31 15:10 | 顯示全部樓層
感謝各位大神的幫忙,我認(rèn)真思考,再調(diào)試
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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