embeded/AVR (ATmega,ATtiny)2011. 10. 28. 17:35
Timer0 (8bit)짜리로 1mesc 만들기를 숙제로 받았다
그러고 보니 회사에서 처음 받는 숙제인듯?

아래의 코드를 참고하고, 도표를 참고하자면,
TCCR0 = 0x05;     // Prescaler 1/128
TCNT0 = 0x82;     // 125 clock tick = 1msec
TIMSK = 0x01;     // 오버플로우 인터럽트 허용
sei();                   // 인터럽트 허용

CPU가 16Mhz 일 경우,
프리스케일러를 설정함에 따라, timer 1번 발생시 시간은 TICK/msec를 참조하면 된다.
아무튼, cpu 클럭과 프리스케일러에 따라서 딱 떨어지는 시간이 있을수도 있고 없을수도 있는데
목표로 한 값이 1msec 이므로 곱해서 정수로 떨어지는 125 / 250 / 500 / 2000 회가 있지만
타이머가 8bit이므로 255를 초과할수 없고, 그로 인해 적당한 값은 1/128 프리스케일러를 설정하는 것이다.
그리고 타이머가 125번 오면 overflow 가 발생해야 하므로
TCNT0 = 255 - 125; 로 설정을 해주면 125 번의 tick 이후에 FF가 되어 타이머 인터럽트가 발생하게 된다.


2010/01/07 - [embeded/ATmega/ATtiny (AVR)] - atmega128 Timer 사용하기

'embeded > AVR (ATmega,ATtiny)' 카테고리의 다른 글

AVR Studio 5  (4) 2011.11.12
nop  (2) 2011.10.31
AVR Studio 에서 ELF 생성시 에러발생  (0) 2011.07.27
IAR compiler 컴파일시 이미지 크기 보기  (3) 2011.07.25
PINA_Bit0 누구냐 넌! (IAR)  (0) 2011.03.31
Posted by 구차니