회원가입 ID/PW 찾기
AA

이제 막 공부 시작했습니다.
시작부터 막히네요..
ㅜㅜ
아래는 서보를 움직이는 소스입니다.
근데 언제 인터럽트가 발생하는지
그리고 인터럽트가 발생하면
함수 - interrupt[TIM0_OVF] void timer_int0(void) 여기에서 처리하는것 같은데
여기에서 TIM0_OVF 은 무엇인가요?
찾아보니깐 17번이던데
아주초보이니깐 자세히 알려주면 정말 감사하겠습니다.
부탁 드립니다.



#include <mega128.h>

unsigned int tim0_cnt, mos_pos, change;
unsigned int rc_time[6] = {54,150,130,150,210,150};  //0도 , 90도 , 180도     &   54  , 132 , 210
#define SERVO_PORT1  PORTD

 

void port_init()
{
   PORTA = 0x00;  //segment를 위하여
   DDRA  = 0xFF;


   PORTC=0x00;  //segmemt를 위한 출력
   DDRC=0xFF;


   PORTD = 0xFF; //서보 모토
   DDRD  = 0xFF;

}


//타이머 /카운터0 인터럽트 주기
//이론치 (256-238)*8분주 *1/16us = 9us, 실측치 약 10us마다 오버플로우가 발생!!
interrupt[TIM0_OVF] void timer_int0(void)  //TIM_OVF 는 17  0x11
{
            tim0_cnt++;
            TCNT0=238;                 //타이머/카운터0 초기값 재설정
}


void init_device()
{
  //타이머/카운터0 인터럽트 주기
  //이론치(256-238)*8분주*1/16us = 9us: 실측치 10us
 TIMSK = 0x01;  //타이머/카운터 인터럽트 마스크 레지스터   TOIEO  = 1 설정 TOV0을 해서 인터럽트 서비스 루틴 가능케 함
 TCCR0 = 0x02;  //정이머 카운터 제어 레지스터 : 분주비 결정 3으로 결정  (256-238)/8 하면 2.25 그래서 3으로 결정
 TCNT0 = 238;   //타이머 카운트 레지스터  oxff - 238(oxEE) = 0x11;
 SREG = 0x80;
}

void main(void)
{  

 int mydebug;

 port_init();
 init_device();

 tim0_cnt = 0;   //타이머/카운터0 오버플로우 횟수 리셋
 mos_pos = 0;  //모터 위치 = 0도
 change = 0;  //각도 변화 주기 리셋

 
 

 tim0_cnt=0;


  
 while(1)
 {


//rc_time[6] = {54,150,130,150,210,150};
  if(tim0_cnt >= 2000)          //10us * 2000 = 20ms출력
  {      
   tim0_cnt = 0;
   SERVO_PORT1  = 0xFF;
   change++;           
                                   
   //20ms * 100 = 2sec 각도 변화 주기 체크
   if(change == 100)
   {
    mos_pos = (mos_pos+1)%6;
    change = 0;
   }
  }
  if(tim0_cnt >= rc_time[mos_pos])             //모터 LOW 출력
  {             
     SERVO_PORT1 = 0x00;
  }
 
 }

}

댓글 3
  • No Profile
    timer_counter 는 사용자가 임의로 설정한 조건에 따라서 그 조건이 만족될시 자동적으로

    수행되는 함수라고 생각하시면 될것 같습니다.

     타이머가 계수를 하다가(숫자를 세다가)   Tcnt 레지스터  값이 over flow가 되면 인터럽트 함수를 수행하는 계념이지요..^^

    그리고 님이 질문하신  interrupt[TIM0_OVF] void timer_int0(void)  는 코드비전 tool에서 사용하는 문법으로써

    timer_counter 0,1,2,3 번중 0번 카운터가  over_flow 됬을때  핸들러(서비스루틴)을 수행하라는 일종에 함수 선언부 입니다.

  • No Profile
    글쓴이 이슬비00 10.09.16 21:26 댓글 좋아요 0 싫어요 0

    감사합니다.
    많은 도움이 되었습니다..
    너무 친철하게 설명해 주셔서 몸둘바를 모르겠네요.
    풍요로운 한가위 되세요 

  • No Profile
    와 다음강의가 서보인데 많은 참고되었습니다.

하드웨어 설계 및 개발에 대하여 개발자들이 자유롭게 토론하는 공간입니다.
- Q&A, 자유주재 토론, 관련 정보 공유
- 분야 : 마이크로프로세서 응용, 전기/전자(아날로그/디지털) 회로 설계, C/C++ 프로그래밍, 펌웨어,
         PCB Artwork, 트러블슈팅 등 하드웨어 설계에 관한 전반인 내용
※ 게시글에 맞는 분류를 선택하여 글을 작성해 주시면 쾌적한 사이트 운영에 많은 도움이 됩니다.
※ 하드웨어 인사이트는 회원들간의 거래정보를 게재할 뿐이지, 그 어떤 책임과 의무도 가지지 않습니다.

search
번호 분류 제목 글쓴이 조회 수 날짜
75 중고장터 HOTAVR JTAGICE MK2 에뮬레이터 팝니다. bluewing 5043 2010.10.06
74 중고장터 HOTARM 개발보드 마이크로비젼 MV2440-LCD 팝니다. bluewing 4215 2010.10.06
73 중고장터 HOT뉴코란도 구합니다.11 설록맨 3177 2010.10.05
72 중고장터 HOTUSB HUB IC판매 Newface 3483 2010.09.24
71 중고장터 HOT삼성 3.5인치 TFT-LCD (Touch 포함) 싸게 드려요. 삼성 3.5인치 TFT-LCD (Touch 포함) 싸게 드려요. 삼성 3.5인치 TFT-LCD (Touch 포함) 싸게 드려요.1 띵요루슛 4350 2010.09.17
70 중고장터 HOT오실로스코프 싸게 사고 싶어요~7 야웅이 3263 2010.09.13
69 중고장터 HOTSTR-6253 판매합니다.2 행국강기 3918 2010.09.07
68 중고장터 HOTnewtc꺼 AVR MEGA 128pro 개발키트(풀셋) 구합니다. 어쩌다 3237 2010.08.21
67 중고장터 HOTD&J DC모터 3개 판매 로봇용적합 IGM30 12V 엔코더 타입1 아크마 6589 2009.01.11
66 중고장터 HOTCMOS 카메라 OV9650 판매1 아크마 3757 2010.07.28
65 중고장터 HOT삼성 3.5인치 TFT-LCD (Touch 포함) 싸게 드려요.2 용가리3 3289 2010.07.17
64 중고장터 HOTmicrochip 사 ac motror controller demo board 이단장 3377 2010.06.17
63 중고장터 HOT각종 부품 팝니다. 캐리안 3652 2010.06.10
62 중고장터 HOT기울기센서 (TILT SA1) 팝니다 폴라리스 4196 2010.06.05
61 중고장터 HOT중고 서적구해요..^^13 로이lee 4169 2010.05.26
60 중고장터 HOT컴퓨터 사요2 제갈공ㅇㅇ 3862 2010.05.24
59 중고장터 HOT소리인식센서 구합니다!1 재럴 3665 2010.05.22
58 중고장터 HOTHELICOMM 사의 IP-LINK 2134- 2264 모듈 구매합니다. 아크마 4120 2010.05.20
57 중고장터 HOT터치 lcd안쓰시는거 구입합니다1 duziny 3887 2010.05.13
56 중고장터 HOT어셈블리어 교재 구합니다~1 배개 3710 2010.04.28
  • 지식보다는 상상력이 더욱 중요하다.
    - 알베르트 아인슈타인
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.