초음파를 이용해서 거리를 알아봅시다.
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에 켜지겠죠?
RECENT COMMENT