Page 204 - 완) I MDP 프로젝트 작품 보고서(전체과 1학년)1.6
P. 204
interrupt [EXT_INT1] void mag_interrupt(void) //탱크의 자석이 떨어졌을 때의 인터럽트 서비스 루틴
{
mag = 1; //자기센서의 변화가 발생시
}
interrupt [USART0_RXC] void RX_interrupt(void)
//블루투스 조정 어플에서 수신된 값이 있을 때 인터럽트 서비스 루틴
{
rx = UDR0; //블루수트를 통해 APP에서 수신된 값을 rx에 저장
PORTG = ~PORTG;
}
interrupt [TIM0_OVF] void timer_int0(void)
{
tim0_cnt++; // 서보모터의 주기 생성을 위한 변수 증가
TCNT0 = 238; // 타이머/카운터0 초기값 재설정
if(tim0_cnt >= 2000){ // 10us x 2000 = 20ms 주기 체크
tim0_cnt = 0;
PORTC = 0xFF; // 모터 High 출력
change++;
// 20ms x 100 = 2sec 각도 변화 주기 체크
if(change == 100) {
mot_pos = (mot_pos + 1) % 3;
change = 0;
}
}
/* tim0_cnt가 1이면 10uS이다 54이면 540uS, mot_pos가 0이면 rc_time[mot_pos]가 54 즉
0.54mS(540uS)가 된다. */
if(tim0_cnt >= rc_time[mot_pos]) PORTC = 0x0; // 모터 Low 출력
}
- 197 -