2009년 3월 17일 화요일

Timer 이해하기

Timer.start() 에서는 최소 1ms까지 밖에 설정이 되질 않는다.
좀 더 세밀한 Timer를 원한다면 tos/system/TimerM.nc 파일과 tos/interface/ClockC.nc 파일을 참조하여 변경하면 된다.

TimerM.nc
command result_t StdControl.init() {
mState=0;
setIntervalFlag = 0;
queue_head = queue_tail = -1;
queue_size = 0;
mScale = 3;
mInterval = maxTimerInterval;
return call Clock.setRate(mInterval, mScale) ;
}

위의 Clock.setRate()부분이 원래 nesC에서는 mScale=3 이기 때문에 개발자가 Timer.Start의 두번째 인자값인 interval을 양수의 최소값인 1을 넣으면 1/1024(tos/interface/ClockC.nc를 참고)초에 한번 Timer가 발생한다.
따라서 mScale=1 로 설정하면 1/32768초에 한번 Timer를 발생시킬 수 있다.

댓글 없음:

댓글 쓰기