안녕하세요...
이번에 삼성 s3c44b0x 를 쓸 일이 있어서, 보드를 구매한뒤 테스트 하는데...
1ms 간격으로 타이머 인터럽트를 발생시킬려고 합니다.
그래서 설정을 하는데..
타이머가 동작을 안하는군요....
이솝하고는 거리가 좀 멀지만...
__irq void Timer5Done(void)
{
rI_ISPC |= BIT_TIMER5;
gb_test++;
}
void init_Timer(void)
{
//rINTCON=0x1; // Vectored Int. IRQ enable,FIQ disable
rINTCON=0x5; // Non-vectored,IRQ enable,FIQ disable
rINTMOD=0x0; // All=IRQ mode
//rINTMSK=BIT_GLOBAL; // All interrupt is masked.
rINTMSK=~0; // All interrupt is masked.
pISR_TIMER5=(unsigned)Timer5Done;
rTCON |= (1<<26 | 1<<25); //auto relaod | Manual Update
rTCFG0=0x00ff0000; //dead zone=0,pre2=0xf0,pre1=0xf,pre0=0xf
rTCFG1=0x00300000; //all interrupt,mux5=1/2,mux2=1/2,mux3=1/2,mux2=1/2,mux1=1/2,mux0=1/2
rTCNTB5=0x2000; //(1/(66MHz/256/16 ))*0x2000
rINTMSK &=~(BIT_GLOBAL|BIT_TIMER5);
rTCON &= ~(1<<25);
rTCON |= (1<<24); //T5 start
}
컴파일러는 IAR 을 씁니다.
ARM 은 처음 써보는거라 생소하군요...
삼성 샘플을 보고 설정하는데 샘플은 PWM 으로 되어 있어서....
gb_test 변수값을 시리얼로 찍어보는데...
변하지 않더라고요...
보시고 조언 부탁드립니다.
datasheet 한글화가 미흡한 관계료 ^^
그림만 보고 이리저리 굴려보다가...
되는군요....
rTCON &= ~(1<<25);
rTCON |= (1<<24); //T5 start
이부분에서...
rTCON |= (1<<25); //update T5 en
rTCON &= ~(1<<25); //update T5 ds
rTCON |= (1<<26 | 1<<24); //T5 auto reload
업데이트 한다음 다시 원위치 해야 되는군요.