부산IT학원/스마트컨트롤러
20140514 (타이머/카운터 Reg)
EHOzlO
2014. 5. 14. 11:45
60일차
-----------------------------
ATMega128 Timer, Counter
-----------------------------
--- Timer 관련 Reg
- 축차비교법 처럼 값이 채워지는데
이 곳에 0 ~ 255 값이 채워짐
- 비교할 때 사용함.
인터럽트 호출 방식 설정
- 7 ~ 2번 비트
Timer 2 ~ 1번 관련 비트
지금은 timer0번만 사용 중
- 1번 비트
비교 방식
비교 Reg(OCR0)와 TCNT0 의 값과 비교하여
값이 일치할 때 INT 발생
- 0번 비트
오버플로우 방식
TCNT0 의 값이
255를 넘었을 때 256(0)이 되었을 때
INT 발생
--- 오버플로우, 비교 방식
소스 비교
- 오버플로우
- 비교
...
...
TIMSK Reg에
값을 비교 방식으로 바꾸고
비교해야할 Reg OCR0 의 값을 설정해준다.
--- 실행이 되지 않은 이유
- Tc.c
- main.c
- Tc.c
volatile 을 붙이지 않아서 실행이 안됐다.
Delay_Ms(unsigned int uiDelay) 함수에
while(uiMs < uiDelay);
이 반복문이 아무 기능이 없으니 cpu 최적화로
그냥 뛰어 넘어버리는 것으로 예상된다.
그래서 최적화 방지로 volatile을 붙여주는 것으로 본다.