회원가입 ID/PW 찾기
AA

안녕하세요__)

아트마님께서 업로드해주신 코드를 봤습니당.. 혹시 컴파일러가 ICC이신지요 +_+?;;

타이머1오버플로우 핸드러부분입니다.

CLRBIT(PORTG,SV_OUTPUT);

SETBIT(PORTG,SV_OUTPUT);

이부분인데요 CLRBIT, SETBIT가 뭔지를 모르겠습니당 -_-;;


함수 init_servo부분입니다.
 TCCR1B = 0x00; //stop 
Q :초기화단계에서 타이머를 정지시키는건 모든 초기화가 완료되기 전에 인터럽트가 발생하는것을 방지하기 위해서 인가요?
 
 TCNT1H = 0xF4; //setup
 TCNT1L = 0x48;
Q :인터럽트가 발생하는 시간을 설정하는데 있어서 사람들마다 각각 차이가 많이나더군요. 다수의 모터의 제어에 있어서 타이머1이 발생하는 시간은 아무렇게 줘도 상관이 없는건가요?
 
 OCR1AH = 0x0B;
 OCR1AL = 0xB8;
 OCR1BH = 0x0B;
 OCR1BL = 0xB8;
 OCR1CH = 0x0B;
 OCR1CL = 0xB8;
 ICR1H  = 0x0B;
 ICR1L  = 0xB8;
 TCCR1A = 0x00;
Q : 가장 궁금한 부분입니다. 모드형태가 노멀모드인데 왜 OCR과 ICR값을 설정을 해주는지 모르겠습니다;;; 그리고 0BB8이라고 설정하신 부분도 궁금합니다..;;; 

TCCR1B = 0x02; //start Timer

SVMove함수가 하는 일이 무엇인지 모르겠습니다 __);;;;

마지막으로!!!;;;

업로드 해주신 코드를 눈으로 컴파일을 해보았습니다.

1.
void SetSVAngle(1400, 10)
{
    sv_speed = speed;   // 10=10
     sv_target = ang;      //  1400=1400
    
  
   if(speed == SPEED_MAX) 참이 아니므로 점프;;
  {
      sv_angle = ang;
  }
}

2.오버플로발생->오버플로루틴으로 점프!

3.
#pragma interrupt_handler timer1_ovf_isr:15
void timer1_ovf_isr(void)
{
 //TIMER1 has overflowed
 
  TCCR1B = 0x00; //stop
 
// Place your code      

   
  if( (sv_angle + sv_speed) < sv_target)  // 1번. 1400+10 < 1400 이므로 거짓입니다.
      sv_angle += sv_speed;
     else if( (sv_angle - sv_speed) > sv_target)  //2번. 1400-10 > 1400 이므로 역시 거짓입니다.
      sv_angle -= sv_speed;
     else
      sv_angle = sv_target; // 3번. 1400=1400
          
 
  if(sv_flag == 1) // 4번. sv_flag가 0으로 초기화되었기 때문에 점프
     {
      sv_flag = 0;
         CLRBIT(PORTG, SV_OUTPUT);  
  sv_rate = PULS_OFF - sv_angle; // low level time
   
  }
     else            // 5번. sv_flag가 0에서 1로 바뀌고 SETBIT???을 실행합니다.
{
   
  sv_flag = 1;
     SETBIT(PORTG, SV_OUTPUT); 
  sv_rate = sv_angle;   //  1400=1400
  
 }

  
   //TIMER1 has overflowed             // 6번, 비주얼 C로 계산을 해봤습니다. TCNT1의 값 : 64000
  TCNT1H =(BYTE)(((65535 - sv_rate + 1)& 0xff00) >> 8);
  TCNT1L =  (BYTE)(((65535 - sv_rate + 1) & 0x00ff));
  
  TCCR1B = 0x02; //start Timer
 
}

6번과정에서 TCNT1이 카운트를 해서 주기를 만들어내면 그값으로 모터가 움직이게 되는건가요?

제대로 해석한건지 자신이 없네요 ^_^;;;

댓글 2
  • No Profile

    님원하시는대로 iccavr로 올려드렸습니다. ㅋㅋ

    CLRBIT(PORTG,SV_OUTPUT);

    SETBIT(PORTG,SV_OUTPUT);

    이것은 매크로인데

    clrbit는 해당 비트를 0으로 만드는 매크로이며

    setbit는 해당 비트를 1로 만드는 매크로입니다.

    인터넷 검색해보시면 많이 나올듯합니다..

    아마 common.h 헤더파일에 정의해서 에러나지 않나싶습니다.

    직접 정의해서 사용해주세요.
     

  • No Profile
    SVMove

    원하는 각을 원하는 속도로 서보모터를 이동하게 하는 함수입니다.

    요 함수를 불러내주시면 원하는 각도로 이동하게하는데 이때 지정된 속도로 이동합니다.

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

search
번호 분류 제목 글쓴이 조회 수 날짜
88 마이크로프로세서 HOT밑에 온도습도 센서 질문에 대한 소스에요2 이재형 812 2007.09.07
87 마이크로프로세서 HOT모터돌릴때 파워서플라이에 cc가 뜨는데..12 sinpk 1864 2007.09.07
86 마이크로프로세서 HOT모터부에 때문에 조언을 구합니다.3 sinpk 681 2007.09.07
85 마이크로프로세서 HOT128에서 코딩중에...3 화언 567 2007.09.06
84 마이크로프로세서 HOT적외선을 이용한 물체회피 -0-;2 챠리스만 699 2007.09.05
83 마이크로프로세서 HOT모터부에 문제가 생긴것 같아요1 sinpk 600 2007.09.03
82 마이크로프로세서 HOT[질문]온도측정기 및 PC전송 프로그램에 관해3 푸르미 960 2007.09.02
81 마이크로프로세서 HOT레귤레이터에 관해서1 챠리스만 689 2007.09.01
마이크로프로세서 HOT코드 분석중에 의문점이 있어서 ^_^;2 챠리스만 845 2007.08.31
79 마이크로프로세서 HOT모터에 대해서 질문잇어요4 sinpk 741 2007.08.30
78 마이크로프로세서 HOT아래 질문에 관한 파일 첨부합니다.2 챠리스만 702 2007.08.30
77 마이크로프로세서 HOT타이머 우선순위에 관해서1 챠리스만 679 2007.08.29
76 마이크로프로세서 HOT라인트레이서를 제작하려고하는데20 따라쟁이 1477 2007.08.26
75 마이크로프로세서 HOT제가 맞게 하고 있는지 궁금해서요...3 아우슈비츠 729 2007.08.25
74 마이크로프로세서 HOT센서부 adc 소스.. 질문 드립니다..2 아우슈비츠 1632 2007.08.19
73 마이크로프로세서 HOTADC 에서 ADMUX 와 ADCSR 질문있습니다!1 아우슈비츠 2599 2007.08.17
72 마이크로프로세서 HOT테스트21 화언 649 2007.08.14
71 마이크로프로세서 HOT테스트1 화언 570 2007.08.14
70 마이크로프로세서 HOT신호가바뀔때마다 펄스를 만들기2 빛나는 영혼 909 2007.08.14
69 마이크로프로세서 HOTatmega128 ADC 질문있습니다...1 아우슈비츠 1130 2007.08.13
  • 분노는 바보들의 가슴 속에서만 살아간다.
    - 아인슈타인
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.