printf("ho_tari\n");

9일차 본문

2025.03.14

 

Piezo Buzzer

 

- 전기 신호를 소리로 변환시켜 주는 장치

- 전자석으로 진동판을 빠른 속도로 움직여 진동판의 진동에 의해 소리 발생

- 수정진동자를 이용하여 소리를 낸다.

- 수정 진동자에 단속적(일정한 주기에 따라)으로 전류를 보내어 수정진동자의 늘어짐과 수축을 발생 시키므로써 공기를 진동시켜 소리를 내는 장치

- PWM 신호에 의한 스피커 제어

- 50% 듀티 사이클의 PWM 신호로 스피커 제어

- 재생하고자 하는 음의 주파수에 맞는 구형파로 제어

 

구형파 생성 방법 (1번 / 3번 타이머 / 카운터 사용)

- 4번 CTC 모드 사용

- OCR1A 레지스터의 비교일치 값 조절을 통해 주파수 제어 가능(Toggle: 비교일치가 되면 1번은 high 1번은 Low)

- 8번 위상 및 주파수 교정 PWM 모드 사용

- TOP 값을 ICR1 레지스터에 설정하여 주파수 제어 가능

- 50% 듀티 사이클을 위해 OCR1B 레지스터 값은 ICR1 레지스터의 절반으로 설정

 

음과 주파수

- 16MHz 클록, 분주비 8

- 1/3번 타이머/카운터

 

 CTC (cLEAR tIMER ON cOMPARE MATCH) 모드

 

- Normal 모드에서는 TCNT0가 오버플로우가 되었을때 인터럽트가 발생하는 반면, CTC(Clear Timer on Compare Match) 모드는 OCRnA의 레지스터에 원하는 값을 넣게되면 TCNT0가 OCRnA의 값만큼 증가된 뒤 인터럽트(Compare Match Interrupt)가 발생하게 된다.

- 즉 사용자가 원하는 값으로 인터럽트를 일으킬 수 있는 장점이 있다.

- CTC 에서는 TCNT0 == OCRnA 가 되었을 때 TCNT0 = 0으로 되므로, ISR에서 초기화 필요 없이 compare match interrrupt를 이용하여 구현을 하게 된다

- CTC mode : 비교일치가 되면 카운터는 reset되면서 PWM 파형 출력 핀의 출력이 반전 됨.

- 위상교정 PWM mode4 CTC 분주비 8 16000000/8 ==> 2,000,000HZ(2000KHZ)

- up-dounting: 비교일치시 LOW, down-counting시 HIGH출력

- 1/2000000 ==> 0.0000005sec (0.5us)

- Ocn핀으로 출력할 구형파 주파수 = OSC(16M) / ( 2(up.down)x N(분주율)x(1+TOP)

- TOP = (OSC(16M) / ( 2(up.down)x N(분주율)x 원하는주파수)) -1

- BOTTOM : 카운터가 0x00/0x0000 일때를 가리킨다.

- MAX : 카운터가 0xFF/0xFFFF 일 때를 가리킨다.

- TOP : 카운터가 가질 수 있는 최대값을 가리킨다. 오버플로우 인터럽트의 경우 TOP는 0xFF/0xFFF이지만 비교일치 인터럽트의 경우 사용자가 설정한 값이 된다.

 

 

'(Telechips) AI 시스템 반도체 SW 개발자 교육 > ATmega128A 마이크로컨트롤러 프로그래밍' 카테고리의 다른 글

12일차  (0) 2025.03.19
11일차  (0) 2025.03.18
8일차  (0) 2025.03.13
7일차  (0) 2025.03.12
6일차  (0) 2025.03.11