標(biāo)題: 關(guān)于STC8G1K08單片機(jī)的ADC使用問題 [打印本頁]

作者: zt997354616    時(shí)間: 2024-4-18 11:31
標(biāo)題: 關(guān)于STC8G1K08單片機(jī)的ADC使用問題
我想請教一下各位大佬,STC8G1K08的ADC可以用定時(shí)器中斷定時(shí)觸發(fā)一路ADC,同時(shí)在大循環(huán)內(nèi)輪詢其他幾路ADC嗎?我這樣使用發(fā)現(xiàn)會存在以下情況,中斷里面的ADC和大循環(huán)里面的ADC會互相影響,我認(rèn)為的原因是,在大循環(huán)里的ADC采樣轉(zhuǎn)換之后但是還沒有進(jìn)行賦值的時(shí)候,就進(jìn)入了中斷,然后中斷里面的ADC值就變成了大循環(huán)的值,然后就這樣互相影響。我想請教一下有什么解決辦法嗎

作者: a185980800    時(shí)間: 2024-4-18 13:16
要不就中段讓路就是在大循環(huán)里讀a dc的時(shí)候暫時(shí)關(guān)一下中斷,要不就大循環(huán)避讓在近中段的時(shí)候用全局變量做一個(gè)中段標(biāo)記大循環(huán)里讀a dc的值到變量里然后使使用這個(gè)變量的值時(shí)判斷一下中斷標(biāo)記是否為真如果為真的話就拋棄上一次采集的a dc值
作者: a185980800    時(shí)間: 2024-4-18 14:12
忘記說了,在大循環(huán)里讀ADC前把進(jìn)中斷標(biāo)記清零,讀完后查看一下中斷標(biāo)記為1就是進(jìn)過中斷了拋棄讀到的ADC值。
作者: xiaobendan001    時(shí)間: 2024-4-18 14:21
為何要這樣做呢?都放大循環(huán)或者都放中斷不行?又或者在ADC中斷里面讀完了以后立刻啟動下個(gè)通道?
作者: zt997354616    時(shí)間: 2024-4-18 14:41
xiaobendan001 發(fā)表于 2024-4-18 14:21
為何要這樣做呢?都放大循環(huán)或者都放中斷不行?又或者在ADC中斷里面讀完了以后立刻啟動下個(gè)通道?

定時(shí)器中斷的那一路是用來做PI穩(wěn)住反激副邊的電壓,如果把所有的ADC都放一起的話PI那一路進(jìn)入的時(shí)間就不確定了
作者: zt997354616    時(shí)間: 2024-4-18 14:42
a185980800 發(fā)表于 2024-4-18 13:16
要不就中段讓路就是在大循環(huán)里讀a dc的時(shí)候暫時(shí)關(guān)一下中斷,要不就大循環(huán)避讓在近中段的時(shí)候用全局變量做一 ...

好的,我試一下
作者: xiaobendan001    時(shí)間: 2024-4-18 15:35
zt997354616 發(fā)表于 2024-4-18 14:41
定時(shí)器中斷的那一路是用來做PI穩(wěn)住反激副邊的電壓,如果把所有的ADC都放一起的話PI那一路進(jìn)入的時(shí)間就不 ...

所有的都放主循環(huán),定時(shí)器只是到時(shí)間把主循環(huán)獲得的值拿過來用一下這樣不行?
作者: zt997354616    時(shí)間: 2024-4-18 16:18
xiaobendan001 發(fā)表于 2024-4-18 15:35
所有的都放主循環(huán),定時(shí)器只是到時(shí)間把主循環(huán)獲得的值拿過來用一下這樣不行?

好的我試一下
作者: zt997354616    時(shí)間: 2024-4-18 16:25
xiaobendan001 發(fā)表于 2024-4-18 15:35
所有的都放主循環(huán),定時(shí)器只是到時(shí)間把主循環(huán)獲得的值拿過來用一下這樣不行?

應(yīng)該不太行呢,如果我把PI這一路的值采了之后放進(jìn)一個(gè)變量,定時(shí)器時(shí)間到了就去處理這個(gè)值,然后又回到大循環(huán)采其他值,然后又第二次中斷來臨,但是這個(gè)時(shí)候我第一次的大循環(huán)還沒有結(jié)束,也就是我的PI那一路的值并沒有更新
作者: xiaobendan001    時(shí)間: 2024-4-18 16:52
zt997354616 發(fā)表于 2024-4-18 16:25
應(yīng)該不太行呢,如果我把PI這一路的值采了之后放進(jìn)一個(gè)變量,定時(shí)器時(shí)間到了就去處理這個(gè)值,然后又回到大 ...

大循環(huán)這么慢嗎?不是定時(shí)器每次到達(dá)之前大循環(huán)其實(shí)都很多次了?哦,這看工程大小了。
要不就直接在ADC中斷服務(wù)結(jié)束時(shí)再次開啟,所有通道的值都在ADC中斷里面處理
作者: wulin    時(shí)間: 2024-4-18 17:33
zt997354616 發(fā)表于 2024-4-18 14:41
定時(shí)器中斷的那一路是用來做PI穩(wěn)住反激副邊的電壓,如果把所有的ADC都放一起的話PI那一路進(jìn)入的時(shí)間就不 ...

如果定時(shí)器中斷周期有足夠時(shí)間,可以把其它幾路ADC都放在中斷中,每次中斷運(yùn)行一次PI那一路,根據(jù)需求附帶運(yùn)行一路或幾路其它ADC,避免干擾。
作者: zt997354616    時(shí)間: 2024-4-18 20:18
xiaobendan001 發(fā)表于 2024-4-18 16:52
大循環(huán)這么慢嗎?不是定時(shí)器每次到達(dá)之前大循環(huán)其實(shí)都很多次了?哦,這看工程大小了。
要不就直接在ADC ...

定時(shí)器是20us觸發(fā)中斷,大循環(huán)大概是40-50,adc中斷服務(wù)結(jié)束時(shí)再次開啟是什么意思,開啟轉(zhuǎn)換其他的ADC嗎

作者: zt997354616    時(shí)間: 2024-4-18 20:19
wulin 發(fā)表于 2024-4-18 17:33
如果定時(shí)器中斷周期有足夠時(shí)間,可以把其它幾路ADC都放在中斷中,每次中斷運(yùn)行一次PI那一路,根據(jù)需求附 ...

沒太懂您的意思,可以詳細(xì)一點(diǎn)嗎
作者: xiaobendan001    時(shí)間: 2024-4-18 20:36
zt997354616 發(fā)表于 2024-4-18 20:18
定時(shí)器是20us觸發(fā)中斷,大循環(huán)大概是40-50,adc中斷服務(wù)結(jié)束時(shí)再次開啟是什么意思,開啟轉(zhuǎn)換其他的ADC嗎
...

定時(shí)器20us?這么短?這,20us的話AD轉(zhuǎn)換完成了嗎?
作者: wulin    時(shí)間: 2024-4-18 21:03
zt997354616 發(fā)表于 2024-4-18 20:18
定時(shí)器是20us觸發(fā)中斷,大循環(huán)大概是40-50,adc中斷服務(wù)結(jié)束時(shí)再次開啟是什么意思,開啟轉(zhuǎn)換其他的ADC嗎
...

單片機(jī)內(nèi)部ADC轉(zhuǎn)換電路只有一套,通過分時(shí)切換通道完成多通道轉(zhuǎn)換任務(wù),當(dāng)定時(shí)器20us中斷觸發(fā)ADC轉(zhuǎn)換時(shí)恰巧主循環(huán)正在其它通道轉(zhuǎn)換中,必然會出錯(cuò)。20us中斷周期太短,無法用上述的方案處理。建議用硬件反饋電路處理反激副邊電壓。
作者: zt997354616    時(shí)間: 2024-4-18 21:13
xiaobendan001 發(fā)表于 2024-4-18 20:36
定時(shí)器20us?這么短?這,20us的話AD轉(zhuǎn)換完成了嗎?

完成了的,stc8g1k08的ADC最快速度為500k
作者: zt997354616    時(shí)間: 2024-4-18 21:16
wulin 發(fā)表于 2024-4-18 21:03
單片機(jī)內(nèi)部ADC轉(zhuǎn)換電路只有一套,通過分時(shí)切換通道完成多通道轉(zhuǎn)換任務(wù),當(dāng)定時(shí)器20us中斷觸發(fā)ADC轉(zhuǎn)換時(shí)恰 ...

好的感謝您的意見
作者: a185980800    時(shí)間: 2024-4-19 01:55
wulin 發(fā)表于 2024-4-18 17:33
如果定時(shí)器中斷周期有足夠時(shí)間,可以把其它幾路ADC都放在中斷中,每次中斷運(yùn)行一次PI那一路,根據(jù)需求附 ...

哪有給中斷里多放東西的,中斷服務(wù)應(yīng)該,處理越少越好,盡快退出來。
作者: xiaobendan001    時(shí)間: 2024-4-19 07:29
a185980800 發(fā)表于 2024-4-19 01:55
哪有給中斷里多放東西的,中斷服務(wù)應(yīng)該,處理越少越好,盡快退出來。

每次中斷獲得結(jié)果后重新啟動下一個(gè)通道也花不了多少時(shí)間的。即使有500K,你這20us也太快了,你還要好幾個(gè)通道。況且500K可能是理論值,實(shí)際上可能根本不行或者效果很差。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1