|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
MC9S12D32AD轉(zhuǎn)換疑問 |
| 作者:busdriver 欄目:單片機(jī) |
1。程序有一個(gè)1ms的定時(shí)中斷,設(shè)計(jì)思想:中斷和主程序中都用AD轉(zhuǎn)換,但在調(diào)試中發(fā)現(xiàn),一旦在主程序中用AD轉(zhuǎn)換,程序不能正常運(yùn)行,總停在AD轉(zhuǎn)換子程序處,而不能執(zhí)行其它的程序如通訊程序??而把AD轉(zhuǎn)換都放在定時(shí)中斷中,程序乃正常運(yùn)行!十分困惑。請(qǐng)問原因? |
| 2樓: | >>參與討論 |
| 作者: 張明峰 于 2007/1/26 18:31:00 發(fā)布:
你不會(huì)追蹤調(diào)試嗎? 基本上, 中斷和主程序中都用AD轉(zhuǎn)換的設(shè)計(jì)思想就是錯(cuò)誤的。 就是鐵了心要這么做,BDM是干嗎的?趕緊追蹤調(diào)試啊。程序死哪兒啦?那里是些什么代碼?干嗎在那里死循環(huán)啦? busdriver should drive for something, not wait for something. Am I right to say that? |
|
| 3樓: | >>參與討論 |
| 作者: busdriver 于 2007/1/27 11:33:00 發(fā)布:
多謝張工! 我現(xiàn)在把AD轉(zhuǎn)換都放在定時(shí)中斷里面。為節(jié)約中斷時(shí)間,把轉(zhuǎn)換結(jié)果的相關(guān)運(yùn)算都放在主程序中。不明白的是“基本上, 中斷和主程序中都用AD轉(zhuǎn)換的設(shè)計(jì)思想就是錯(cuò)誤的!保琧ould you tell me why? 我當(dāng)然做過調(diào)試?yán)篈D轉(zhuǎn)換用的查詢等待,程序就死在哪里,查詢不到轉(zhuǎn)換完成標(biāo)志。 另外:在子程序中定義了局部變量,程序邏輯就亂了,把變量都做成全局變量,程序正常,,是不是由于堆棧不夠了?但是把棧空間增加也不能解決問題。謝謝。。?臻g由原來的256bytes增加到512bytes,total RAM is 1k bytes,RAM足夠) * - 本貼最后修改時(shí)間:2007-1-27 11:39:50 修改者:busdriver |
|
| 4樓: | >>參與討論 |
| 作者: gsnet 于 2007/1/27 11:49:00 發(fā)布:
在主程序和定時(shí)中斷中對(duì)A/D的讀取,屬于對(duì)共享資源的存取 對(duì)共享資源的存取若很好的安排(參考操作系統(tǒng)的相關(guān)知識(shí)),是可以井水不犯河水的,但管理共享資源的代碼可能會(huì)占用單片機(jī)不少計(jì)算能力。 架構(gòu)越簡(jiǎn)單的程序,越不容易出問題。所以還是統(tǒng)一在定時(shí)中斷中只做A/D采集,在主程序中對(duì)采集回來的數(shù)(已經(jīng)放進(jìn)自定義的變量或緩沖區(qū)中)做復(fù)雜的處理(如排序,平均等)。 僅供參考。 |
|
| 5樓: | >>參與討論 |
| 作者: 張明峰 于 2007/1/27 12:13:00 發(fā)布:
why “中斷和主程序中都用AD轉(zhuǎn)換的設(shè)計(jì)思想就是錯(cuò)誤的”是指在主程序中和中斷里都進(jìn)行AD轉(zhuǎn)換,如果處理不好,很容易產(chǎn)生資源沖突。就一個(gè)AD模塊,兩家同時(shí)用肯定是不可能的。當(dāng)然你現(xiàn)在是在中斷里進(jìn)行AD轉(zhuǎn)換,而主程序里對(duì)AD數(shù)據(jù)進(jìn)行處理,這當(dāng)然是正確的,也應(yīng)該這么做。 AD轉(zhuǎn)換結(jié)束標(biāo)志應(yīng)該查詢“COCO”位。局部變量肯定不是你程序邏輯混亂的原因,不然C就可以扔了。 |
|
| 6樓: | >>參與討論 |
| 作者: busdriver 于 2007/1/27 13:18:00 發(fā)布:
非常感謝 謝謝張工和gsnet詳細(xì)及時(shí)的解答,,看來我!還缺乏對(duì)mcu的深刻理解,需要不斷學(xué)習(xí),謝謝你們的無私而寶貴解答。謝謝 |
|
|
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |