회원가입 ID/PW 찾기
AA

전에 아크마님께서 조언해 주신건데요.

 

코드의 전체적인 문맥은 잡았습니다..

 

unsigned int data;

int a=0;

#pragma interrupt_handler int4_isr:6
void int4_isr(void)
{
a=1; 

unsigned int duty;
 _CLI();
 data=duty;
 _SEI();
}

 

void main(void)

{

while(1){

                if(a==0){

                                     모터각도함수(duty); // 90도

                                     delay();

                                     모터각도함수(duty); // 100도

                                     delay();

                                     모터각도함수(duty); // 110도

                                     delay();

                                     .......

                                     모터각도함수(duty); // 180도

                                     delay();

                                     모터각도함수(duty); // 170도

                                     delay();

                                     모터각도함수(duty); // 160도

                                     delay();

                                     ......

                                     모터각도함수(duty); // 90도

                                     delay();

                                    }

             else if(a==1){

                                         모터각도함수(data); X도

                                         ..................

                                         ..............

                                         실행할내용..

                                         .......

                                         ...

                                        }

 

위에 처럼 코드를 생각해봤습니다.

 

문제는 data변수에 duty값을 저장하는건데요... 보시면, 외부인터럽트가 발생되야 저장이 됩니다..

인터럽트금지, 허용을 저렇게 하면 멈췄을 때의 듀비값이 저장될지가 의문이네요 -_-;;;

외부인터럽트 플래그레지스터를 if문의 조건으로 달아놨는데 저게 가능한지 -_-;

아.. 요즘 너무 어수선하네요.. 미치겠습니다 집중이 너무 안되네요..

너무 무기력해있으니...

댓글 2
  • No Profile

    인터럽트금지, 허용을 저렇게 하면 멈췄을 때의 듀비값이 저장될지가 의문이네요 -_-;;;
    -> 저장됩니다.  다른 인터럽트로 진입을 멈춘것으로 상관없습니다. 단지 저러케 하게 되면 타이머 인터럽트도 정지되버릴거에요 그래서  타이머가 죽으면 서보가 동작 안하겠지요..

    님문장에서는 딱히 인터럽트를 껏다켰다할 필요가 없습니다. 언제나 인터럽트 enable로 해주시면 됩니다.

    그리고 a=1이라고 인터럽트 걸릴때 해주셧는데요.

    그럼 main문에서 인터럽트에 따른 처리후에 a=0이라고 넣어주시면 되요.

    또 채터링 방지를 위해서는 인터럽트 문에서도 a=1이라고해서 무조건 실행하지 마시고요

    if(a==0)일때만 하위 명령문을 실행하면 됩니다. (채터링에 의해 2번연속이상 인터럽트 호출루틴이 실행되지 못하게요)

  • No Profile
    글쓴이 챠리스만 07.10.10 00:36 댓글 좋아요 0 싫어요 0

    int data[20]; //duty값을 저장하는 변수

    int  z , x;
    int b = 0;

     

    #pragma interrupt_handler int4_isr:6
    void int4_isr(void)
    {
    b=1;

    data[ x ] = z;
    }

     

    void main(void)

     int b=0;
     int i,j;
        
     while(1){
                    if(b==0) {
                                    while(1){
                for(z=1500,x=0; z<2200; z++,x++)
                   {
                    z=z+(101-1);
                    Servo24SetDuty1(0,7,z);//all Center Value
                    delay();
                 delay();
                 delay();
                }
               
                for(z=2100,x=0; z>1500; z++,x++)
                   {
                 z=z-(101-1);
                 Servo24SetDuty1(0,7,z);
                 delay();
                 delay();
                 delay();
                }
                }
                //}
                
         else if(b==1)          {  
                       while(1)
              {
              Servo24SetDuty1(0,7,data[x]);
              delay(10);
              Servo24SetDuty1(0,7,2300);
              delay(10); 
              }     
           
            }
       }
    } // end main

     

     

    b==1 부분이 죽어라 실행이 안되네요... 스위치를 눌리면 b변수에 1이 할당되면서 되야 하는거 아닌가요 ㅠㅠ?;;

     

    스위치는 핀 2개중에 한개는 GND, 다른쪽은 10k짜리 저항을 물리고 포트E4에 물렀습니다..

     

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

search
번호 분류 제목 글쓴이 조회 수 날짜
347 자유주제 HOT음...점점 좋아지는 홈페이지 멋있습니다...4 엘랑 7092 2007.10.09
마이크로프로세서 HOT음..코드좀 봐주세용 -0-;;2 챠리스만 1231 2007.10.09
345 자유주제 HOT안녕하세요들~2 하루 7211 2007.10.09
344 중고장터 HOT[판매] RC서보모터 RC-31112 아크마 5452 2007.10.09
343 중고장터 HOT[판매] SRF 04 초음파센서3 아크마 5586 2007.10.09
342 마이크로프로세서 HOT키보드 스캔...어렵네요..ㅠㅠ6 머스트비 1996 2007.10.09
341 자유주제 HOT태권v , 철인28호, 썬가드 누가 젤로 싸움을 잘할까요..11 뺘쑝 1864 2007.10.09
340 중고장터 HOT[판매] 5V DC어댑터 아크마 5320 2007.10.08
339 중고장터 HOT[전공서적] 회로이론 ALEXANDER , SADIKU4 아크마 6784 2007.10.08
338 마이크로프로세서 HOT뭐가 좋지요???2 서가래 1216 2007.10.08
337 자유주제 HOT오늘 하루 개떡같네 ....10 뺘쑝 7814 2007.10.08
336 마이크로프로세서 HOT좀 도와주세요!!;;1 아무거나 1069 2007.10.08
335 중고장터 HOT라인트레이서 구합니다13 곰팅이 5418 2007.10.08
334 자유주제 HOT이러다...4 빛나는 영혼 7247 2007.10.08
333 자유주제 HOT부부싸움16 빛나는 영혼 1633 2007.10.08
332 자유주제 HOT하드백업...5 아크마 10891 2007.10.08
331 자유주제 HOT안녕하세요 ^^4 조재진 6599 2007.10.07
330 마이크로프로세서 HOT인터럽트에 관한것 질문있습니다.13 레드리네 1313 2007.10.07
329 자유주제 HOT포인트....ㅜㅜ2 이엠피쇼 12714 2007.10.05
328 마이크로프로세서 HOT영상처리를 위한 자료 있으신분 있을까용 ....5 뺘쑝 1149 2007.10.05
  • 격렬하게 사랑을 하고 있을 때는 자기 자신에게 사랑을 하고 있는 것인지 상대를 사랑하고 있는지 잘 생각하라.
    - 유태격언
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.