회원가입 ID/PW 찾기
AA

/*포트 D를 이용한 통신 포트
PD7 = 5 step mode 0     
PD6 = 3 오른 CLK        
PD5 = 1 왼쪽 CLK        
PD4 = 2 왼쪽 DIR       
PD3 = 4 오른 DIR        
PD2 = 6 step mode 1   
PD1 = 8 Enable*/     
                        
#include <mega128.h>    
#include <delay.h>

int k, i;
unsigned char rx_data,datum,temp;

 

interrupt [EXT_INT7] void External_int7(){
        DDRB = 0x00;                           //입력
        PORTB = 0x00;                          //초기화
        #asm("sei");      
}


void pwm(void){
        DDRB = 0xff;
        PORTB = 0xff;
       
        TCCR1B = 0x0d;
        TCCR1A = 0x40;
       
        TCNT1 = 0;
        OCR1A = 10;
        }

 

void Int(void){
        EIMSK |= 0x80;                    //외부 인터럽트7 : 인에이블
        EICRB = 0xc0;                     //외부 인터럽트7 : 상승에지 
        #asm("SEI");
        }
               
void main(void){
        DDRD = 0x8a;
        DDRE = 0x7f;                        //PORTE7 입력 나머지  출력 (인터럽트 )
        Int();                                   //인터럽트
        pwm(); 

              /*PORTD = 0xca;
                        delay_us(500);
              PORTD = 0x8a;
                        delay_us(500);
              PORTD = 0xca;
                        delay_us(500);
              PORTD = 0x8a;
                        delay_us(500);*/
        while(1);
}

 

나름 pwm 써서 모터를 돌리고 있습니다

PB7을 이용해서 PWM ㅎㅏ고 있고요 PE7을 이용해서 인터럽트 하고 있습니다

제가 할려는건 외부에서 어떤 신호가 PE7을 통해 들어가면 인터럽트 발생해서

PWM 이 발생 안되게끔 해서 모터동작을 멈추는 겁니다

그런데 인터럽트 소스하고 PWM 하고 같이 넣어주면 모터가 돌아가지 않습니다

그런데 인터럽트 소스를 주석처리 하고 128에 넣어주면 모터가 돌아갑니다

왜 이럴까요? 신호가 포트로 들어간것도 아닙니다. 아직 신호를 주는선을 연결한것도 아닙니다 

제생각에는 128안에서 임의로 인터럽트 신호가 들어가는거 같은데 어떻게 해야 될까요?

댓글 7
  • No Profile
    #asm("SEI"); 초기에 한번만 해주면 되고요



    interrupt [EXT_INT7] void External_int7(){
            DDRB = 0x00;                           //입력
            PORTB = 0x00;                          //초기화
            #asm("sei");      
    }


    void pwm(void){
            DDRB = 0xff;
            PORTB = 0xff;



    여기 소스에서 인터럽트 받으면 왜 DDRB를 입력으로 해주는지요.. 입출력 포트부터 확인바래요.

    delay_us함수는 안쓰는거겠죠^^.

  • 아크마님께
    No Profile
    글쓴이 하고만다 08.08.24 23:08 댓글 좋아요 0 싫어요 0

    여기서 포트 B는 나름 PWM 발생하게끔 설정을 해줬습니다

    PWM 을 통해서 모터가 돌고 있으며 인터럽트가 걸리면

    포트 B를 입력으로 함으로써 PWM 발생을 없애 모터 구동을 멈추게 하는 것입니다

    그래서 인터럽트 부분을 DDRB = 0x00 으로 했습니다  

    님 말씀대로 delay는 지금 당장 쓰지는 않습니다 ^^

    모터 와 모터 드라이브에 대한 설명 본문에 파일첨부 새로 해놨습니다

    아무쪼록 한말씀씩이라도 해주세용(--)(__)(--)

  • No Profile

    인터럽트가 바로 동작되는듯 하군요^^: 시작되자마자....인터럽트 함수가 호출되는지 확인하십시오. 하드웨어 회로체크, 레지스터 체크

  • No Profile

    2008-08-25-41029.JPG
    (사진참고^^)
    pwm 이 발생하는게 포트B의 7번입니다.
    그것을 노란선(가는선)을 이용해서 PD6(오른 CLK), PD1(Enable)에 물려줬습니다(PD6, PD1은 128과 연결 되어있지 않습니다)  
    초록색 선이 인터럽트 신호를 PE7 로 전달해 주는 선입니다
    굵은 초록선은 그라운드로 빼주면 될지모르는 막연함에 그냥 연결 한것이고 현재 그라운드에는 연결되어 있지 않습니다 

    그리고 위에 납땜한것은 블루투스 이용하기 위해서 납땜한부분입니다

    그리고 레지스터는 메인문안에  EIMSK |= 0x80 EICRB = 0xc0 이렇게 두개 적어주고
    메인문밖에 인터럽트 함수를 적었습니다

    여러번 봤으나 어디가 문제인지를 알수가 없습니다. 인터럽트가 신호를 주지도 않는데도 알아서 걸리네요.
    어디가 문제인걸까요ㅠㅠ

    더 필요한 자료 있으시면 바로 올리겠습니다

  • No Profile

    키트를 구매하신거 같군요 그렇다면 하드웨어회로는 작동될테고(즉 인터럽트 거는 스위치부분)

    그럼 한가지 묻겠습니다/ 님께서 작성하신 코드에서 인터럽트가 rising edge인지 falling edge인지 확인하셨습니까? 회로와 소스코드가 맞아야하거든요. 제가 소스코드를 일일히 점검하지 않는 이유는 결국은 님께서 스스로 해결하셔야하기때문에 제가 점검사항만 하나씩 말씀 드립니다.

    인터럽트 함수내에서 led를 on/off하는 기능을 넣음으로써 인터럽트 함수 호출 여부를 확인해보세요.

  • No Profile
    글쓴이 하고만다 08.08.25 12:05 댓글 좋아요 0 싫어요 0

    128만 사고 나머지는 제가 납땜 했습니다 ^^

    인터럽트는 현재 rising edge 입니다

    led 로 확인 해보고 나서 결과 말씀드리겠습니다 ^^

    지속한 관심 가져주셔서 감사합니다 (꾸벅)

  • No Profile

    납땜한걸 보여줘도 머가먼지 몰라요 이러케 보면 님께서 작성하신 회로도를 보여주셔야죠..

    특히 스위치부분 회로도가 궁금하군요 로우 액티브인지 하이 액티브 로 구동되는 회로인지 확인해봐야할것 같네요.

    인터럽트 부분에서는  #asm("SEI"); 이거 안해줘도 됩니다. 한번만 하면 되요 init에서.

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

search
번호 분류 제목 글쓴이 조회 수 날짜
312 마이크로프로세서 HOTuVision-51과 8051을 통해 SRF-04 컨트롤 질문입니다.2 하숑 947 2008.09.23
311 마이크로프로세서 HOT8051로 도트매트릭스 5*7만들어서 영문자 쉬프트하는것 만들어보고 싶은데..1 영화처럼살기 1891 2008.09.21
310 마이크로프로세서 HOTatmega128 2개 통신하기3 기계전기 994 2008.09.20
309 Software & IDEs HOT완전초보입니다. 잘부탁드립니다.4 초보민 993 2008.09.19
308 마이크로프로세서 HOT모터의 상 연결에 대해서 질문드립니다.1 너구리♬ 784 2008.09.18
307 마이크로프로세서 HOTPID 제어에서 Auto turning 이라는 개념이 잘 잡히지 않네요. 장작 2210 2008.09.18
306 Software & IDEs HOTMatlab 시리얼통신을 통한 그래프만들기..;;1 GreatSSang 3704 2008.09.16
305 마이크로프로세서 HOTPID 속도 제어에서 OCR 레지스터에 어떤 값을 넣어줘야 하지요???8 스텝빠스텝 8835 2008.09.15
304 마이크로프로세서 HOT모터의 하드웨어적인 질문 드립니다.1 너구리♬ 734 2008.09.10
303 마이크로프로세서 HOT지금 보니깐요 4거리 신호등이요4 마모루 1040 2008.09.08
302 마이크로프로세서 HOT자료실에 있는 신호등 제어에서요1 마모루 819 2008.09.08
301 펌웨어 & 코딩언어 HOT8051 4거리 신호등에서의 소스에서요1 마모루 1159 2008.09.08
300 마이크로프로세서 HOT8051에 대해서 궁금한거요/1 눈물겨운행복 683 2008.09.04
299 마이크로프로세서 HOT시리얼 통신..1 황금시대 817 2008.09.02
298 마이크로프로세서 HOTPID제어에관해서..1 황금시대 1074 2008.09.02
297 마이크로프로세서 HOTPC 페러렐 포트로 AVR의 변수를 저장시키고 싶어요.1 스텝빠스텝 882 2008.08.31
296 마이크로프로세서 HOTAT89S51의 ISP Programmer 활용하려면?2 띠앙 1220 2008.08.28
295 마이크로프로세서 HOTrs232 케이블에 대해서;;3 너구리♬ 848 2008.08.25
마이크로프로세서 HOTatmega128에서 모터 소스하고 인터럽트 소스 하고 같이 짜주면 모터가 작동을 하지 않습니다ㅠ 작은것이라도 괜찮으니 한자씩만 적어주세요 ^^7 하고만다 2131 2008.08.24
293 마이크로프로세서 HOT적외선을 이용해서 dc모터 엔코더 만들기3 marin_blues 1946 2008.08.20
Prev 1 ... 38 39 40 41 42 43 44 45 46 47 ... 58 Next
  • 성공이란 사람이 도달하는 장소라기보다는 오히려 여행을 시작하고 지속시켜주는 정신이다.
    - 노블
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.