2014-12-03 187 views
0

我的主板上有一個adc模塊。我在信號發生器上創建了一個正弦波,並且我將這個發生器的輸出提供給一個adc引腳。最後,我定期讀取這個引腳的值。我嘗試在我的軟件上創建一個正弦波。使用ADC生成正弦波

x = t, 
y = Asin(wt), 
A : amptitute value of the generator, 
w : 2πf, f : I set its value on my software.(difference time between two read operation) 
t : time 

而且我不使用adc pin的值。創造浪潮不是這個重要的價值嗎?

+0

是你的問題:「如何在軟件中計算正弦波?」 – jeb 2014-12-03 13:48:35

+0

是的,我沒有使用adc pin的值。我不知道我在哪裏計算。 – zumma 2014-12-03 13:50:58

+0

您不需要外部輸入來生成正弦波 - 只有正弦函數以及您在問題中已經注意到的值和時間變量。有關更多信息,請參見http://en.wikipedia.org/wiki/Sine_wave。 – sonicwave 2014-12-03 14:53:35

回答

1

我會盡量根據您的帖子瞭解的內容爲您提供一些提示。

ADC應該對定義的頻率產生的模擬信號進行採樣,以產生數字信號。在你的情況,你需要兩個信息來跟蹤你的曲線:

  1. 數據:

數據要跟蹤(抽樣),表示信號的幅度一直採樣時間(在每個採樣時刻)。

  • 時間:
  • 你需要知道在時間在該ADC的採樣信號然後將每個數據與時間的相應時刻相關聯的時間段。可以從ADC採樣信號T = 1/f的頻率推斷週期。

    ADC將每個採樣數據存儲在一個寄存器中,併產生一箇中斷以通知處理器新的數據。您的中斷服務程序(如果您正在進行中斷)必須能夠提取該數據,然後才能被下一個樣本替換。作爲一個建議,你可以在你的應用程序中創建一箇中斷例程可以存儲數據的緩衝區。然後,您的應用程序可以從緩衝區中提取數據,並在您的系統顯示輸出時將其用於繪製曲線,或者將其發送給將完成此工作的桌面應用程序。

    你不需要在你的文章中堅持等式;它是模擬的。相反,您可以將數字化曲線視爲f(t)= Data(t)。

    在使用linux時,如果您不想處理中斷,則可以使用/ sysfs接口繼續讀取數據。請注意,根據您的應用程序要求,打開文件以讀取每個單個樣本的數據可能會很慢。