도와주세요!!
글 수 15,339
2006.03.31 04:25:51 (*.118.75.138)
6753
void TimerInit(void)
{
// 타이머 카운터값을 초기화 한다.
OSCR = 0;
// 타이머에 의해서 발생하는 모든 인터럽트를 금지한다.
OIER = 0;
// 타이머 카운터값이 0이 될때까지 기다린다.
while(OSCR == 0); // WatchDoc() ;
// 매치 레지스터0를 0으로 설정하여 매치값을 0으로 한다.
OSMR0 = 0;
// 매치 레지스터를 매치 상태값을 초기화 한다.
OSSR = OSSR_M0;
// 타이머 오버 플로어 감시 변수를 초기화 한다.
numOverflows = 0;
}
Timer 설정 루틴이 위와 같습니다. 이 OS Timer 같은건 Linux 의 Tick 같은 interrupt 를 발생하기 위해서 하는게 맞지요?
그런데, 위에서보면, 매치 레지스터를 보면 0으로 설정하는데, 이건 OS timer 를 사용안한다는겁니까?
OSCR 와 매치레지스터가 같아지면 인터럽트가 발생되는데, 매치레지스터 값을 0으로 초기화 하는게 좀 의아합니다.
Kernel 에서 다시 설정하는 루틴이 따로 있는지???
{
// 타이머 카운터값을 초기화 한다.
OSCR = 0;
// 타이머에 의해서 발생하는 모든 인터럽트를 금지한다.
OIER = 0;
// 타이머 카운터값이 0이 될때까지 기다린다.
while(OSCR == 0); // WatchDoc() ;
// 매치 레지스터0를 0으로 설정하여 매치값을 0으로 한다.
OSMR0 = 0;
// 매치 레지스터를 매치 상태값을 초기화 한다.
OSSR = OSSR_M0;
// 타이머 오버 플로어 감시 변수를 초기화 한다.
numOverflows = 0;
}
Timer 설정 루틴이 위와 같습니다. 이 OS Timer 같은건 Linux 의 Tick 같은 interrupt 를 발생하기 위해서 하는게 맞지요?
그런데, 위에서보면, 매치 레지스터를 보면 0으로 설정하는데, 이건 OS timer 를 사용안한다는겁니까?
OSCR 와 매치레지스터가 같아지면 인터럽트가 발생되는데, 매치레지스터 값을 0으로 초기화 하는게 좀 의아합니다.
Kernel 에서 다시 설정하는 루틴이 따로 있는지???