20140514 (타이머/카운터 Reg)

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을 붙여주는 것으로 본다.



설정

트랙백

댓글