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  -
   199   200   201   202   203   204   205   206   207   208   209