임베디드/Arm2567SAM
5월 15일 타이머1.(정리예정)
송시혁
2013. 5. 15. 20:40
이코드는 타이머 카운트를 비활성화 시켜서 초기화 시키는 부분이다.
(참고로 헤더파일에 정의(define)한다.)
1.TC0_SR; = Status Register 상태레지스터를 초기화한다. 그냥 읽기만 하면 되기
때문에 ';'만 붙이면 된다.
2. TC0_CMR = 채널 모드 레지스터
이 레지스터에서 클럭이 발생했을 때, 비교방식을 사용하겠다고
설정하는 부분이다.
TC0_CMR = (TIMER_CLOCK4<<TCCLKS)|(1<<CPCTRG);
CPCTRG = 같아질 때 까지 비교한다. =>이부분 보류
TC0_RC= 375;
위의 엑셀 파일 캡쳐를 잘보면 mck인 48Mhz를 분주비로 나눈다.
그러면 해당 주파수가 나온다. 1주기를 구하기 위해서 공식은
1/주파수 이다. 그래서 1/375000이며, 이것을 1000을 곱하여
m/s단위로 변환한다. 1m/s로 나오기 위하여 배수를
AIC_IDCR = (1<<TC0);
AIC의 레지스터에 AIC_IDCR은 타이머 카운트를
비활성화 하는 레지스터이다.(데이터 시트 참고)
TC0를 사용하기 위해서 TC0를 비활성화 하여 초기화한다.
인터럽트 핸들러 등록
AIC_SVR[TC0]= (unsigned int)Timer_Handler;
AIC_SVR[TC0]는