[답변] timer0 셋팅 문의 - 설정 > Q&A

본문 바로가기

사이트 내 전체검색


커뮤니티
누구나 참여할 수 있는 캔위성 체험·경연대회 홈페이지 입니다.



Q&A

Home   >  커뮤니티  >  Q&A

[답변] timer0 셋팅 문의 - 설정

페이지 정보

profile_image
작성자 name
댓글 0건 조회 1,716회 작성일 18-07-31 21:47

본문

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 로 하면 되나요? > >  

댓글목록

등록된 댓글이 없습니다.


캔위성체험경연대회 주소 : 34141 대전광역시 유성구 대학로 291 KAIST 인공위성연구소
E-mail : cansat@kaist.ac.kr
COPYRIGHT SATREC CANSAT COMPETITION 2023. ALL RIGHTS RESERVED.