2012-06-27 4 views
-2

아무도 도와 줄 수 있습니까 CodeVisionAVR? 나는 ATMega16L 마이크로 컨트롤러를 사용하여 CodeVisionAVR에서 타이머 기능 을 사용하여 사인 파형을 생성하고 싶지만 사인파와 함께 OCR을 사용하는 방법을 모르겠다.CodeVisionAVR에서 사인 파형을 생성하는 타이머 사용

+0

CodeVision의 사용은 대부분 부적절합니다. C로 프로그래밍한다는 사실이 더 적절합니다. 타이머는 CodeVision이 아닌 하드웨어의 기능입니다. – Clifford

답변

1

Ouptut Compare (OC) 타이머 출력은 구형파 만 생성 할 수 있습니다. 그러나 펄스 폭을 가변 할 수있는 펄스 폭 변조 (PWM)에 사용할 수 있습니다. PWM 파형 출력이 로우 패스 필터링되면 출력은 PWM 파형의 마크 공간 비에 비례하는 전압이됩니다. 정현파로 펄스 폭을 수정하고 적절한 필터링을 통해 사인파 출력을 생성 할 수 있습니다.

따라서 각 타이머 다시로드 인터럽트에서 펄스 폭을 수정해야합니다. 펄스 폭을 미리 값의 배열에 미리 계산하여 각 다시로드 인터럽트마다 타이머에 주기적으로 공급하는 것이 좋습니다. PWM 주파수, 펄스 폭 해상도, 아날로그 필터링 및 웨이브 폼 주파수 사이에는 파형의 정확성에 영향을 미칠 여러 가지 절충 사항이 있습니다. 주파수 및 대역폭과 관련하여 요구 사항에 맞게 이러한 변수의 균형을 조정해야합니다.

+0

감사합니다. 매우 유용합니다! – Vanessa

0

타이머를 사용하여 다른 GPIO 핀에서 파형 데이터를 쓰는 곳에서 인터럽트를 트리거 할 수도 있습니다 (저항 사다리를 DAC 등으로 사용). 파형 데이터를 찾아보기 테이블에 넣고 단계별로 실행할 수 있습니다 인터럽트가 발생할 때마다 테이블.

또는 적절한 PWM 출력 핀이있는 경우 타이머 인터럽트를 사용하여 듀티 사이클 값을 증가/증가시켜 사인파 또는 기타 모양 웨이브 출력을 제공 할 수 있습니다. 이렇게하면 PWM 타이머가 필요한 사인파보다 훨씬 빠르게 진행될 수 있으므로 필터링 할 수 있지만 정확성에 따라 약간 달라집니다.