[답변] timer0 셋팅 문의 - 설정
페이지 정보
본문
ATMEGA128 의 경우 문서상 다음과 같네요.
TCCR0 : 2면 8분주, 3이면 32분주, 4이면 64분주, 5이면 128분주, 6이면 256분주, 7이면 1024분주 입니다.
TCNT0(Timer/Counter Register 0) : 8 비트, 자동 값 갱신으로
일반적으로 다음과 같이 설정합니다.
원하는 Count 값 (Wcv) = 255 - TCNT0 + 1 = 256 - TCNT0
==> TCNT0 = 255 - Wcv + 1 = 256 - Wcv
( 다시 정리하면 TCNT0 부터 255 까지 몇 개의 숫자가 있는가? )
( 예를 들어 0 ~ 255 라면 256개의 숫자가 있음. )
ATMEGA128 의 경우 1024로 나누려면 TCCR0 가 7이어야 할 것으로 보입니다.
즉 10ms 마다 인터럽트를 발생하려면,
1초/10ms = 1초 /0.01 초 ==> 100번에 해당
원하는 Count 값(Wcv) = 11059200/1024/100 = 108 번
( Wcv = CPU_CLOCK/분주수/초당발생횟수 )
TCNT0 = 255 - 108 + 1 = 148
* 참고적으로 ATMEGA8 의 경우
TCCR0 : 2이면 8분주, 3이면 64분주, 4이면 256분주, 5이면 1024 분주입니다.
* 추가로 최종적인 출력이 제대로 나오는지 확인할 경우
가능한 오실로스코프를 이용하여 확인해 보세요.
> > > 안녕하세요 > time0의 10ms 인터럽트를 발생시키는 값을 알고 싶습니다. > > TCNT0 , TCCR0 에 어떤 값을 넣어야 하나요? > 현재 클럭이 11059200 Hz이구 > TCCR0를 5로 셋팅할경우 > 11059200/1024 ==> 10800 Hz 마다 TCNT0가 증가되고 > TCNT0가 108Hz 마다 overflow 인터럽트를 발생시키면 되니 > TCNT0 = 255-108 로 하면 되나요? > >
- 이전글timer0 셋팅 문의 18.06.20
- 다음글대회 평가 기준에 대한 질문 18.06.20
댓글목록
등록된 댓글이 없습니다.