초음파를 이용해서 거리를 알아봅시다.

1번 LCD_Init()

LCD에다가 거리를 찍을꺼니까요.


2-1 USonic_init();

초음파 설정하는 곳으로 들어가보면

USonic_init_pin();

안으로들어갑니다.

0011: TRI_DDR은 DDRA이죠? DDRA를 출력으로 바꿔줍시다.

0012: TRI_PORT는 PORTA이죠? 아직 PORTA는 잠궈둡니다.

0013:                    DDRE 의 에코핀만 입력으로 바꿔줍시다.


0017: 분주비8로 세팅 했습니다. 

0018: 118클럭직후

0019: 타이머 인터럽트를 요청합니다.


왜 118클럭이후인가요? 


타이머 인터럽를 요청하면 함수 벡터 15가 발동됩니다.

전역변수 volatile unsigned int uiDist; 를 선언한 상태입니다.

uiDist의 값이 계속 올라가겠죠?

마지막으로 USonic_act를 실행해봅시다.

Usonic_init_int();

인터럽트로 가봅시다.

0024: 인터럽트6번에 하강 엣지가 발생하면

0025: 인터럽트가 발생합니다. 

0044: 이제 트리거(PORTA)를 꺼둔상태에서

0046: 트리거가 펄스를 보냅니다.

트리거가 펄스를 받아 H(High)가 되면 

에코발생( 초음파 : 8싸이클 소닉 버스트)


0058: 에코가 발동됐다는게 감지가되면

0059: uiDist를 0으로 만들고 여기서 부터 다시 셉니다. (아까 uiDist는 먼저 타이머인터럽러트에서 값이 상승하고 있었습니다.)

0056: 에서 하강엣지시 인터럽트 발생조건을 걸어두었으니

벡터7이 발생이됩니다.


LCD에 켜지겠죠?





'디지털회로' 카테고리의 다른 글

20140610 TWI  (0) 2014.06.10
20140522 LCD제어  (0) 2014.05.22
20140515 초음파센서  (0) 2014.05.15
20140509 인터럽트 활성화  (0) 2014.05.09
20140508 인터럽트  (0) 2014.05.08
by 날라차숑 2014. 5. 16. 17:57