Page 240 - 완) I MDP 프로젝트 작품 보고서(전체과 1학년)1.6
P. 240
2) Source Program
DDRD = 0xF0; // PA 포트 출력
tim0_cnt = 0; // 타이머/카운터0 오버플로우 횟수 리셋
mot_pos = 0; // 모터 위치 0도
// 타이머/카운터 0 인터럽트 주기
// 이론치 (256-238) x 8분주 x 1/16us = 9us, 실측치 약 10us
TIMSK0 = 0x01; // TOIE0 = '1';
TCCR0B = 0x02; // 일반모드, 프리스케일 = CK/8
TCNT0 = 238; // 타이머/카운터0 레지스터 초기값
SREG |= 0x80; // 전역 인터럽트 인에이블 비트 I 셋.
tim0_cnt = 0;
PORTD = 0b11000000; // 모터 High 출력
for(i=0;i<1000;i++){
if(tim0_cnt >= 2000){ // 10us x 2000 = 20ms 주기 체크
tim0_cnt = 0;
PORTD = 0b11000000; // 모터 High 출력
} // 20ms x 100 = 2sec 각도 변화 주기 체크
/* tim0_cnt가 1이면 10uS이다 54이면 540uS, mot_pos가 0이면
rc_time[mot_pos]가 54 즉
0.54mS(540uS)가 된다. */
if(tim0_cnt >= 100) PORTD = 0x00; // 모터 Low 출력
}
}
- 233 -