블로그 이미지
송시혁

calendar

1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

Notice

Tag

Recent Post

Recent Comment

Recent Trackback

Archive

2013. 5. 23. 22:53 임베디드/Arm2567SAM

1. 트리거 펄스 함수.

    실제로 타이밍도를 보면 펄스를 보내주는 부분.

즉, 우리가 손댈수 있는 부분은 펄스(신호를 보내는 부분)

은 펄스밖에 없다. 그러나 과정은 복잡하다!!!!

서론은 끝내고 본론으로 들어가겠다.



트리거 init함수에서

1. 핀 출력 레지스터 활성화

2.핀 활성화

3.핀 출력 데이터를 클리어(GND, 혹은 레지스터에 혹시 모를 쓰레기값 지움)



트리거 pulse 함수(상승엣지 부분)

처음에 low상태 (AT91C_BASE_PIOA->PIO_SODR =1<<TRG_PIN)였다가

 set output data register를 사용한다.

AT91C_BASE_PIOA->PIO_CODR=1<<TRG_PIN;


밑에 for문은 low상태에 신호가 지연됨으로서 상승되는 클럭을

의미한다. 정확히는 클럭의 길이라고 보면 된다. 보통 2~4클럭.


그리고 일정시간이 흐르면 다시 핀14번을 꺼서 유지상태로 만듬.

AT91C_BASE_PIOA->PIO_CODR =1<<TRG_PIN;(핀을 0v상태로 만든다,

즉, 더 이상 상승하지 않는다는 의미로 상승 종료)







ECHO_INIT()함수- 외부 인터럽터(AIC), 거리측정

그대로 끌고와서 이름만 변형한 것.





단, 주의점은 풀업저항 부분은 주석처리 한다. 




핸들러 함수. 인터럽트를 발생시키는 부분이다. 인터럽트를 발생시켜서

하강하는 엣지를 찾기위하여 인터럽트를 사용한다.






AT91C_BASE_PIOA->PIO_ISR;= 인터럽트 상태레지스터를 읽는다.






++uIctic;= 타이머가 거리를 측정하는 부분이다. 1클럭당 1cm씩 세고

계속해서 증가시킨다. 결국, 증가하면서 거리를 측정하고있다.











  









'임베디드 > Arm2567SAM' 카테고리의 다른 글

5월 27일 LCD에 한글이름 찍기  (0) 2013.05.27
5월 23일 ULTRA 2.  (0) 2013.05.24
5월 22일 소스 define방법  (0) 2013.05.22
5월 21일 ultra(수정중)  (0) 2013.05.21
5월 21일 AIc 2.(수정중)  (0) 2013.05.21
posted by 송시혁