-2

CodeVisionAVRについて誰か助けてくれませんか? CodeVisionAVRのタイマー機能を使ってATMega16Lマイコンで正弦波を生成するプログラムを書きたいのですが、正弦波でOCRを使う方法がわかりません。

4

2 に答える 2

1

出力コンペア (OC) タイマー出力は、方形波のみを生成できます。ただし、パルス幅を変更できるパルス幅変調 (PWM) に使用できます。PWM 波形出力がローパス フィルター処理されている場合、出力は PWM 波形のマークスペース比に比例する電圧になります。パルス幅を正弦的に変更し、適切なフィルタリングを行うことで、正弦波出力を生成できます。

そのため、タイマーのリロード割り込みごとに、パルス幅を変更する必要があります。パルス幅を値の配列に事前計算し、再ロード割り込みごとに周期的にタイマーに供給することをお勧めします。ただし、PWM 周波数、パルス幅分解能、アナログ フィルタリング、および波形周波数の間には、波形の精度に影響を与える多くのトレードオフがあります。周波数と帯域幅に関する要件に合わせて、これらの変数のバランスを取る必要があります。

于 2012-06-28T04:28:38.340 に答える
0

また、タイマーを使用して、他の GPIO ピンから波形データを書き込む割り込みをトリガーすることもできます (抵抗ラダーを DAC などとして使用)。波形データをルックアップ テーブルに入れ、毎回テーブルをステップ実行できます。割り込みが発生します。

または、適切な PWM 出力ピンがある場合は、タイマー割り込みを使用してデューティ サイクル値をデクリメント/インクリメントして、正弦波またはその他の波形出力を与えることができます。これには、PWMタイマーが必要な正弦波よりもはるかに高速である必要があるため、フィルターをかけることができますが、それは必要な精度に少し依存します.

于 2012-06-28T15:30:26.833 に答える