2012-06-27 61 views
-2

任何人都可以幫助我CodeVisionAVR?我想寫一個 ATMega16L微控制器的程序,使用CodeVisionAVR中的定時器功能 生成正弦波形,但是我不知道如何使用帶有正弦波的OCR。使用計時器在CodeVisionAVR中生成正弦波形

+0

CodeVision的使用在很大程度上是不相關的;你用C編程的事實更加相關。計時器是CodeVision硬件的一項功能。 – Clifford

回答

1

Ouptut比較(OC)定時器輸出只能產生方波。然而,它們可以用於脈寬可以變化的脈寬調製(PWM);如果PWM波形輸出經過低通濾波,則輸出電壓將與PWM波形的標記空間比例成正比。通過正弦波修改脈衝寬度並使用適當的濾波,您可以生成正弦波輸出。

因此,在每個定時器重新加載中斷,您需要修改脈衝寬度。我建議您將脈衝寬度預先計算爲一個值數組,並在每次重新加載中斷時循環將它們送入定時器。然而,在PWM頻率,脈寬分辨率,模擬濾波和波形頻率之間會有許多折衷,這會影響波形的準確性。您需要平衡這些變量以適應頻率和帶寬方面的要求。

+0

Thanks.Very useful! – Vanessa

0

您也可以使用定時器觸發中斷,將波形數據寫出其他GPIO引腳(使用電阻器梯形圖作爲DAC或類似器件),您可以將波形數據放入查找表中並逐步進行每次中斷時觸發表。另外,如果你有一個合適的PWM輸出引腳,你可以使用定時器中斷去/增加佔空比值來給出一個正弦或任何其他形狀的波形輸出。這確實要求PWM計時器比所需的正弦波要快得多,所以你可以對其進行過濾,但這取決於你需要的準確度。