使用2線仿真進行調試。 發(fā)現代碼卡死在了 ADC讀取中。
在論壇里面翻了翻帖子。 發(fā)現有人回復過,
http://m.findthetime.net/bbs/thread-81569-1.html
原因是在中斷里面使用ADC會與其他正在使用ADC的代碼進行沖突。
我現在項目需要在中斷里面采集adc。 有什么辦法可以解決這個問題嗎。
以前的項目也有在中斷里面采集adc,沒有使用藍牙功能 , 沒有出現過死機的情況,藍牙會有影響的嗎?
使用2線仿真進行調試。 發(fā)現代碼卡死在了 ADC讀取中。
在論壇里面翻了翻帖子。 發(fā)現有人回復過,
http://m.findthetime.net/bbs/thread-81569-1.html
原因是在中斷里面使用ADC會與其他正在使用ADC的代碼進行沖突。
我現在項目需要在中斷里面采集adc。 有什么辦法可以解決這個問題嗎。
以前的項目也有在中斷里面采集adc,沒有使用藍牙功能 , 沒有出現過死機的情況,藍牙會有影響的嗎?
既然使用藍牙功能,可以嘗試寫一個TMOS任務來管理ADC數據采集,驗證是否可行。
我的應用場景是?
100us的中斷,每200次中斷,需要采集一次adc數據進行計算。
沒法將adc采集放到tmos任務里面。
如果我一定需要在中斷里面進行adc采集, 該如何避免死機呢?
溫度校準那里是多久調用一次呢? 一次需要多久呢? 使用原子操作對中斷的精度影響大嗎。
1、在中斷里置標志,達到一定的條件則開始執(zhí)行該TMOS任務;
2、執(zhí)行開始前關閉全局中斷,結束后開全局中斷;
3、溫度校準是TMOS管理的,兩分鐘執(zhí)行一次校準。
溫度校準:
斷點1:
? ? R8_ADC_CONVERT |= RB_ADC_START;
斷點2:
? ? while(R8_ADC_CONVERT & RB_ADC_START);
中斷中adc采集:
? ? R8_ADC_CONVERT = RB_ADC_START;
? ? while(R8_ADC_CONVERT & RB_ADC_START);
斷點1時進入中斷,不影響.
如果在斷點2進入了中斷,中斷里面進行adc采集.?
RB_ADC_START 會在為1的狀態(tài)下,再次設置為1.? 應該沒影響.
中斷里面獲取到的adc數據應該是溫度校準的adc數據吧.
中斷退出后,回到斷點2,應該會再拿一次溫度校準的adc數據.
這個過程,應該不會出現 卡死在 while中的情況呀.
我現在跑的項目 卻是會卡死在while里面.?
請幫忙更詳細分析一下??
"中斷中使用ADC? 與tmos中正進行的ADC采集產生沖突 導致死機"
是在哪一步出現了異常,導致 while無法結束.
順便問下 .? ?32k 是使用的是內部RC
這2個校準的 如果不啟用,對整個系統(tǒng)的穩(wěn)定性和精度影響大嗎