부저 음계주파수 계산
2019. 6. 11. 01:57ㆍ임베디드/ATmega128
수동 부저는 일정 DC 펄스에 반응한다
따라서 DC 펄스 주파수에 맞춰서 소리를 낼 수 있어 사용자는 원하는 주파수를 마음대로 설정해서 출력으로 낼 수 있다. 보통 이미 정해져있는 음계주파수를 사용하며, 예시를 6옥타브 기준으로 계산해보려고 한다
개발환경: ATmega128 16MHz 8비트 타이머 0, 32분주, 오버플로우 인터럽트, 1:1 on/off 방식
6옥타브 도는 1046Hz다. 우리는 1:1 on/off 방식을 사용할 것이기 때문에 1046Hz의 2배인 2092Hz에서 상태 변환을 해야할 것이다. 따라서 TCNT 값을 계산해보면,
TCNT = 256 - ((1/2092) / (1/16000000) * 32)) = 17
https://github.com/surinoel/avr/blob/master/timer/pwm/pwm/src/timer/timer.c
'임베디드 > ATmega128' 카테고리의 다른 글
16비트 타이머카운터 정리 (0) | 2019.06.14 |
---|---|
8비트 타이머카운터 정리 (0) | 2019.06.14 |
위상교정 PWM에서 0.5%단위의 듀티를 주는 방법 (0) | 2019.06.07 |
fast PWM과 위상교정 PWM의 해상도 차이 (0) | 2019.06.07 |
AVR 스터디 [2019.06.02] (0) | 2019.06.02 |