일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- up-casting
- setvbuf
- 다운캐스팅
- 아두이노
- Dekker
- AVR
- 임베디드
- 임계 영역
- 임베디드 개발자
- 리눅스 setvbuf
- 임베디드 초급
- 임베디드 입문
- 데커 알고리듬
- 2019년 회고
- 임베디드 시스템 프로그래밍
- 대구소프트웨어고등학교
- AVR기초
- 리눅스 기초
- 코딩
- 외부인터럽트
- down-casting
- c언어 setvbuf
- peterson 알고리즘
- 업캐스팅
- 피터슨 알고리즘
- 데커 알고리즘
- 워치독 타이머
- 데커
- 임베디드시스템프로그래밍
- 무래함의 비용
- Today
- Total
인성 좋은 인성이
AVR-타이머 본문
본 글은 ATmega128을 기준으로 작성되었으며, 8bit 기준으로 설명되었음을 알립니다.
ATmega128은 타이머가 4개(0~3)가 존재한다. 타이머는 인터럽트를 사용하고 PWM 파형을 만들고자 할 때 주로 사용된다. 이 중 타이머 0, 2는 8bit이고 1, 3은 16bit이다.
인터럽트는 카운트의 값이 오버플로우 되었을 때 발생하는 OVF, 카운트 값과 비교 레지스터 값이 일치할 때 발생하는 인터럽트 등이 존재한고, 입력 캡처 인터럽트도 존재한다.
사실 타이머를 사용하는 목적은 인터럽트 사용도 있지만, 내가 원하는 파형을 만들기 위해서(적어도 글쓴이는 그렇다) 많이 사용한다. 원하는 파형을 만들기 위해서는 ATmega128에서 제공하는 register를 적절하게 사용하면 된다. 그렇다면 ATmega128에는 어떤 register가 존재하는지 알아보자.
TCCR0 - Timer/Counter Control Register n

FOCn - Force Output Compare n : PWM 모드가 아닌 경우에만 유효하며 출력 비교가 OCn과 일치할 때 출력하게 되는 값과 동일한 출력을 한다. 보통 0으로 세트 한다.
WGM - Waveform Generation Mode : 타이머의 동작 모드를 설정하는 부분이다.

COM - Compare Match Output Mode : OC핀의 동작을 설정하는 부분이다.



CS - Clock Select : 분주비를 설정하는 곳이다.

TIMSK - Timer Interrupt Mask

bit 1 - Timer/Counter Output Compare Match Inaterrupt Enable
bit 2 - Timer/Counter Overflow Interrupt Enable
TIFR -Timer/Counter Interrupt Flag Register

bit 1 - Output Compare Flag : COMP가 걸리면 1로 세트 되고 인터럽트를 요청한다. 인터럽트가 실행되면 클리어 된다.
bit 0 - Timer/Counter Overflow Flag : OVF가 걸리면 1로 세트 되고 인터럽트를 요청하며 실행되면 클리어 된다.
TCNT - 카운터이다. 2^bit만큼 카운트를 한다.
OCR - COMP 할 때 비교하는 친구이다. 카운터와 비교하여 같을 때 인터럽트를 발생시킨다.
'IT공부 > AVR' 카테고리의 다른 글
AVR-와치독 타이머 (0) | 2019.08.07 |
---|---|
AVR-외부인터럽트 (0) | 2019.08.03 |