我在麪包板上製作了一個帶有Arduino Uno和電阻器梯形圖的基本波形發生器。我使用loop
函數和micros()
根據需要更改電壓電平以在每個電壓變化之間延遲。這不是完美的,但它與壓電效果很好。analogRead需要太多時間
我的問題是我在我的代碼中設置信號頻率,我希望能夠使用一個鍋例如更改它。但只要我在我的代碼中放置analogRead
(所有代碼都在loop()
函數中),輸出信號就會改變。我發現了analogRead
功能可能需要長達100μs的運行,這是比每個電壓變化,因此實際信號週期之間的延遲時,不正確的是:
unsigned long now, next;
int freq;
void loop(){
//if I put analogRead() here it takes to much time
now = micros();
if(now >= next){
//Here I change the output analog value using a R-2R ladder
//then I change the value of next
}
}
我嘗試了一些解決方案,包括使用開關代替的一壺,但digitalRead
加上if語句似乎並不更有效。我也嘗試過帶有中斷的開關,但結果與digitalRead
相同。
有人知道另一種解決方案嗎?
謝謝!
請您提供您的*基於中斷的嘗試的描述*?在我看來,將輸出處理從* loop()*轉換爲*中斷服務程序*應該是一種可行的方法..這應該允許您在不改變信號的情況下使用'analogRead()',優先感謝處理*中斷* ..或者我錯了嗎? –