Page 234 - 완) I MDP 프로젝트 작품 보고서(전체과 1학년)1.6
P. 234
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 출력
}
void end()
{
SREG = 0x00;
PORTA = 0;
}
- 227 -