본문 바로가기
코스웨어/15년 스마트컨트롤러

20150909-7번-김재홍-초음파센서(ARM7)

by 알 수 없는 사용자 2015. 9. 10.
728x90
반응형

초음파센서


타이머에서 썼던 Timer_Init함수를 그대로 복사해와서

U_Timer_Init으로 함수의 이름을 바꿔줍니다.

타이머 카운터는 0번을 쓰기로 하였습니다.

먼저 PMC를 활성화해서 전원을 공급해 줍니다.

세팅하는 중간에 동작하면 안되기 때문에 클럭을 끊습니다.

읽기만하면 지워지기 때문에, 읽어서 클리어 합니다.

DIV4_CLOCK --> 분주비로 128을 합니다.

AT91C_TC_CPCTRG   register c와 비교합니다.


클럭을 세는 것을 카운터레지스터라 합니다.

pdf473페이지 Timer Counter Counter Value(TC_CV)


클럭을 발생시키는데는 분주비가 역할을 하는데

분주비를 128로 주면 클럭의 속도가 줄어듭니다.

원래 기존의 하나의 클럭을 1이라하면 이 클럭이 128배로 늘어나면서 

클럭의 속도가 줄어든 것입니다.


※ 타이머에는 

컴페어 방식(레지스터 2개사용)과 

오버플로우방식(레지스터 한개사용)이

있는데 여기서 컴페어 방식을 씁니다.


※ 이 타이머는 ARM코어와 별개로 독자적으로 움직입니다.



함수를 등록합니다.

AT91C_AIC_SVR    왼쪽은 고정,

[AT91C_ID_TC0]    오른쪽은 함수의 주소를 넣는 곳입니다.

타이머에서 컴페어 인터럽트가 여기에 있는 숫자(함수의 주소)로 점프합니다.

인터럽트가 발생하면 그 주소(AT91C_ID_TC0)로 가서 함수를 실행합니다.

그 주소가 12번이면 인터럽트가 발생하면 12번지로 가서 함수를 실행합니다.





소스 첨부합니다.

Ultra.c


Ultra.h


정리하는데 도움주신 박태인님, 안향진님께 감사드립니다. ㅜㅜ




728x90