글
초음파를 이용해서 거리를 알아봅시다.
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 |
RECENT COMMENT