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

QQ登錄

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

帖子
查看: 5654|回復(fù): 17
打印 上一主題 下一主題
收起左側(cè)

STC8H單片機(jī)ADC采樣時(shí)被其它中斷打斷 會(huì)導(dǎo)致結(jié)果不正確嗎?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:612392 發(fā)表于 2021-10-18 14:44 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
各位大神,我用STC8H3K64S2單片機(jī)做太陽(yáng)能MPPT產(chǎn)品,需要同時(shí)用到PWM和ADC采樣。
PWM直接采用硬件16位高級(jí)PWM,生成帶死區(qū)互補(bǔ)的PWM波形,使用到PWM中斷。頻率約56kHz,中斷周期約18us
ADC直接采用查詢方式進(jìn)行,在每次PWM中斷后進(jìn)行一次計(jì)數(shù),采輸入電壓、輸入電流、輸出電壓。采樣時(shí)間約12us。
但現(xiàn)在ADC返回的三個(gè)數(shù)值都是0(0~3之間波動(dòng),實(shí)際數(shù)值應(yīng)該在300~1000之間,12位ADC),ADC采樣程序是其它項(xiàng)目上正常移植過(guò)來(lái)的,應(yīng)該沒(méi)啥問(wèn)題;輸入電壓、電流、輸出電壓用萬(wàn)用表測(cè)量,數(shù)值都正常;IO口上直接測(cè)量輸入數(shù)值也都正確

現(xiàn)在懷疑PWM中斷有可能會(huì)打斷ADC,但這個(gè)會(huì)導(dǎo)致ADC讀出來(lái)的數(shù)值全部是0嗎?
是否一定要用ADC中斷方式才可以呢?
謝謝!
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:401564 發(fā)表于 2021-10-18 18:38 | 只看該作者
18uS就進(jìn)入中斷一次,如果ADC是查詢方式的話,剛剛退出中斷沒(méi)多久又要進(jìn)入中斷了,程序能不能正常運(yùn)行都是個(gè)問(wèn)題
至于PWM,它是不會(huì)影響ADC結(jié)果的
回復(fù)

使用道具 舉報(bào)

板凳
ID:612392 發(fā)表于 2021-10-18 18:45 | 只看該作者
Y_G_G 發(fā)表于 2021-10-18 18:38
18uS就進(jìn)入中斷一次,如果ADC是查詢方式的話,剛剛退出中斷沒(méi)多久又要進(jìn)入中斷了,程序能不能正常運(yùn)行都是個(gè)問(wèn) ...

程序的PWM是正常的,互補(bǔ)波形也正�!,F(xiàn)在就是ADC采集的數(shù)據(jù)不正常,所以懷疑會(huì)不會(huì)是因?yàn)檫@個(gè)查詢方式被PWM中斷打斷了,導(dǎo)致采到的數(shù)值是0,有這個(gè)可能嗎?
明天我把ADC采集改成中斷方式試試看,但也可能有中斷沖突的可能。
回復(fù)

使用道具 舉報(bào)

地板
ID:160500 發(fā)表于 2021-10-18 18:50 | 只看該作者
你算一下中斷處理程序是多少時(shí)間,看看給主程序留了多少時(shí)間
回復(fù)

使用道具 舉報(bào)

5#
ID:612392 發(fā)表于 2021-10-18 18:57 | 只看該作者
liuzx66 發(fā)表于 2021-10-18 18:50
你算一下中斷處理程序是多少時(shí)間,看看給主程序留了多少時(shí)間

進(jìn)PWM中斷,就三行程序
1.軟件清中斷標(biāo)志位
2.一個(gè)變量++1
3.一個(gè)IO口取反
應(yīng)該應(yīng)該非�?�,不到1us應(yīng)該可以出中斷了。
回復(fù)

使用道具 舉報(bào)

6#
ID:401564 發(fā)表于 2021-10-18 19:38 | 只看該作者
cjjdemon 發(fā)表于 2021-10-18 18:57
進(jìn)PWM中斷,就三行程序
1.軟件清中斷標(biāo)志位
2.一個(gè)變量++1

這不是中斷用時(shí)的問(wèn)題,是你只給主程序18uS的時(shí)間,每18uS就要進(jìn)入中斷一次,主程序很有可能是一直不斷的被打斷
不知道你用這么高頻率的PWM來(lái)干嘛,如果是驅(qū)動(dòng)LED,建議用超過(guò)1KHz就可以了
如果ADC再使用中斷,估計(jì)主程序都沒(méi)有時(shí)間干活了,不斷的在ADC和PWM之間來(lái)回的跑........
回復(fù)

使用道具 舉報(bào)

7#
ID:612392 發(fā)表于 2021-10-18 22:08 | 只看該作者
Y_G_G 發(fā)表于 2021-10-18 19:38
這不是中斷用時(shí)的問(wèn)題,是你只給主程序18uS的時(shí)間,每18uS就要進(jìn)入中斷一次,主程序很有可能是一直不斷的被 ...

高頻PWM是用來(lái)做BOOST升壓的,同步整流升壓。
主程序就是不斷地采集太陽(yáng)能板的電壓和電流,以便讓太陽(yáng)能板一直處于最大功率點(diǎn)工作。BOOST升壓后給電池充電,或者給逆變器供電。
希望能夠做到逐周期檢測(cè)太陽(yáng)能板的功率,以便快速調(diào)整占空比,讓太陽(yáng)能板最大功率運(yùn)行。
回復(fù)

使用道具 舉報(bào)

8#
ID:161164 發(fā)表于 2021-10-18 22:52 | 只看該作者
有沒(méi)有用過(guò)示波器觀察輸入電壓、輸入電流、輸出電壓的波型?
有沒(méi)有機(jī)會(huì)是每次ADC開(kāi)始測(cè)量時(shí)都剛好到了死區(qū)時(shí)間?
在ADC開(kāi)始時(shí)罝高某腳,如P37 = 1;
在ADC結(jié)束時(shí)罝低某腳,如P37 = 0;
對(duì)比P37和輸入電壓、輸入電流、輸出電壓的波型
看看ADC在測(cè)量什么
回復(fù)

使用道具 舉報(bào)

9#
ID:960157 發(fā)表于 2021-10-19 09:35 | 只看該作者
AD轉(zhuǎn)換的速度夠不夠???
回復(fù)

使用道具 舉報(bào)

10#
ID:401564 發(fā)表于 2021-10-19 11:41 | 只看該作者
cjjdemon 發(fā)表于 2021-10-18 22:08
高頻PWM是用來(lái)做BOOST升壓的,同步整流升壓。
主程序就是不斷地采集太陽(yáng)能板的電壓和電流,以便讓太陽(yáng)能 ...

MPPT也不用每個(gè)PWM時(shí)鐘都進(jìn)行調(diào)節(jié)的吧?
這18uS陽(yáng)光能有多大變化呢?
回復(fù)

使用道具 舉報(bào)

11#
ID:612392 發(fā)表于 2021-10-19 21:39 | 只看該作者
lkc8210 發(fā)表于 2021-10-18 22:52
有沒(méi)有用過(guò)示波器觀察輸入電壓、輸入電流、輸出電壓的波型?
有沒(méi)有機(jī)會(huì)是每次ADC開(kāi)始測(cè)量時(shí)都剛好到了死 ...

感謝老哥,今天又調(diào)試了一下,發(fā)現(xiàn)有個(gè)bug,現(xiàn)在已經(jīng)搞定了。
回復(fù)

使用道具 舉報(bào)

12#
ID:612392 發(fā)表于 2021-10-19 21:42 | 只看該作者
Y_G_G 發(fā)表于 2021-10-19 11:41
MPPT也不用每個(gè)PWM時(shí)鐘都進(jìn)行調(diào)節(jié)的吧?
這18uS陽(yáng)光能有多大變化呢?

恩,現(xiàn)在改成5ms了,實(shí)際采樣加計(jì)算,最快能到2.7Khz左右。不需要每周期檢測(cè)也是可以的,只是波動(dòng)會(huì)更大。
今天找到bug了,現(xiàn)在已經(jīng)正常運(yùn)行啦,我不是電子相關(guān)專業(yè)的,我是化學(xué)專業(yè)的,對(duì)于很多類似的原理不太了解,所以當(dāng)程序不能正常運(yùn)行的時(shí)候,才會(huì)有這些疑問(wèn),非常感謝各位的回答。
回復(fù)

使用道具 舉報(bào)

13#
ID:420836 發(fā)表于 2021-10-20 09:11 | 只看該作者
如果結(jié)果始終為零,則可能是由于快速中斷調(diào)用而不是來(lái)自 PWM 輸出的干擾。
回復(fù)

使用道具 舉報(bào)

14#
ID:161164 發(fā)表于 2021-10-20 10:26 | 只看該作者
cjjdemon 發(fā)表于 2021-10-19 21:39
感謝老哥,今天又調(diào)試了一下,發(fā)現(xiàn)有個(gè)bug,現(xiàn)在已經(jīng)搞定了。

贈(zèng)人玫瑰 手留余香
說(shuō)一下是什么Bug
讓后人參考一下
回復(fù)

使用道具 舉報(bào)

15#
ID:213173 發(fā)表于 2021-10-20 21:23 | 只看該作者
經(jīng)實(shí)物測(cè)試,10us中斷對(duì)ADC沒(méi)有明顯影響,測(cè)量電壓偏高十幾mV。
回復(fù)

使用道具 舉報(bào)

16#
ID:612392 發(fā)表于 2021-10-21 09:01 | 只看該作者
lkc8210 發(fā)表于 2021-10-20 10:26
贈(zèng)人玫瑰 手留余香
說(shuō)一下是什么Bug
讓后人參考一下

很低級(jí)的錯(cuò)誤,我每次進(jìn)中斷要用P1.0/1.1/1.2采集數(shù)據(jù),但采集完成后,通道沒(méi)有復(fù)位為0x00,一直是0x02,寫(xiě)通道的操作又是|,導(dǎo)致除了第一次采集的數(shù)據(jù)是正確的,第二次以后全部采的是最后02通道的數(shù)據(jù),正好最后一個(gè)通道采的是電流,系統(tǒng)沒(méi)正常工作是沒(méi)電流的,所以后面的數(shù)據(jù)一直是0,我上位機(jī)讀數(shù)據(jù)又是每500ms讀一下,第一組數(shù)據(jù)被漏了。
后來(lái)我改了一下程序,降低了頻率,每次都上傳數(shù)據(jù),就發(fā)現(xiàn)這個(gè)問(wèn)題啦。
回復(fù)

使用道具 舉報(bào)

17#
ID:612392 發(fā)表于 2021-10-21 09:01 | 只看該作者
wulin 發(fā)表于 2021-10-20 21:23
經(jīng)實(shí)物測(cè)試,10us中斷對(duì)ADC沒(méi)有明顯影響,測(cè)量電壓偏高十幾mV。

感謝!以后就不會(huì)再懷疑中斷會(huì)影響ADC啦。
回復(fù)

使用道具 舉報(bào)

18#
ID:981034 發(fā)表于 2022-1-5 09:54 | 只看該作者
你學(xué)化學(xué),沒(méi)電類基礎(chǔ)也會(huì)玩這個(gè),真服你了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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