학습/ATmega128

타이머/카운터 + 버저

juhyeon 2021. 11. 29. 14:55

# Timer/Counter0 

 1. 비트 수 : 8비트

 2. 카운터 입력 : TOSC1

 3. 관련 Resister : TCCR0, TCNT0, OCR0, ASSR, SFIOR, TIMSK, TIFR

 4. 동작모드 : Normal, PC PWM, CTC, Fast PWM

 5. 입력신호 : T0

 6. 출력신호 : OC0

 7. 인터럽트 : overflow interrupt, output compare match interrupt

 

# Waveform Generator

 1. WGMn1:0 : 4가지 모드 선택

 2. COMn1:0 : 파형출력모양 선택

 

# 타이머/카운터의 4가지 모드

 1. 일반모드

   - overflow interrupt사용

   - up 카운터

 2. PC PWM

   - output compare match interrupt사용

   - up / down 카운터

 3. CTC

   - overflow / output compare match interrupt 모두 사용 가능

   - 카운팅 최대값 변경 가능(주기 조절 가능)

   - up 카운터

 4. Fast PWM

   - overflow / output compare match interrupt 모두 사용 가능

   - up 카운터

   - PC PWM에 비해 신호변화 2배, 신호주기 2배

 

# 음계에 따른 TCNT0 초기화 값 설정

 음계에 따른 버저 출력을 하기 위해서 TCNT0의 초기화 값을 직접주어서 조절해야함

 32분주, overflow interrupt일 경우

 TCNT0 = 256 - ( ( ( 1 / 주파수 ) * 1,000,000 ) / 2 ) / 2

 

 1 / 주파수 : 주기

 1,000,000 : us의 단위 맞춤

 / 2 : 32분주 했을 때 새로운 클럭의 주기는 2us이므로

 / 2 : ON,OFF조절 (듀티비 50)

 

 

'학습 > ATmega128' 카테고리의 다른 글

타이머/카운터 기초  (0) 2021.11.19
시리얼 통신 - 양방향#2  (0) 2021.11.05
시리얼 통신 - 양방향 #1  (0) 2021.10.14
시리얼통신 - 단방향 통신  (0) 2021.10.05
외부 인터럽트 #3  (0) 2021.09.30