회원가입 ID/PW 찾기
AA

밑에 소스 보시면 led가 좌 ==> 우 ,  우 =>좌 로 이동해야 되는데

좌 ===> 우 로 밖에 되지 않네요..

이것때문에 벌써 몇 시간째 하고 있는데...       왕복으로 할려면 소스를 어떻게 짜야 될까요 ㅠ.ㅠ

#include<avr/io.h>
#include<avr/iom128.h>
#include<avr/interrupt.h>
#include<compat/deprecated.h>

unsigned char data=0x01;

 

int main(void)
{
    DDRB=0xFF; // 포트 B 출력
    PORTB=data;       
   DDRD = 0x00;   // PD0 입력  
 
     
    EIMSK|=0x01;   // INT0 개별 인터럽트 인에이블  
    EICRA|=0x03;   // INT0 상승 에지   
    EIFR|=0x01;     // INTF0 클리어   
     
    sei();       
                             
           
    while(1);  
      

ISR(INT0_vect)  
{  
  
  data <<= 1;  // led 변수의 좌 쉬프트
 
 if(data == 0x00)
 {
  data ==0x01;  
 }

 PORTB = data;  // 포트 B에 LED 값 출력함

-----------------------------------------------------------------------------------------------

요건 제가 생각해 본 소스인데.. 계속 안되네용 ㅠ.ㅠ

#include<avr/io.h>
#include<avr/iom128.h>
#include<avr/interrupt.h>
#include<compat/deprecated.h>
#include<util/delay.h>
unsigned char led=0x00;

int main(void)
{
 
            
 DDRB=0xFF; // 포트 B 출력
 PORTB=0x00;     
 
    DDRD = 0x00;   // PD0 입력  
 
    EIMSK|=0x01;   // INT0 개별 인터럽트 인에이블  
    EICRA|=0x03;   // INT0 상승 에지   
    EIFR|=0x01;        
     
    sei();     
   
 return 0; 

ISR(INT0_vect)  
{  
    unsigned char led=0;
 while(1)
 {
        for(led=0; led< 8; led++)
   {
   PORTB=~(1<<led);
   _delay_ms(1500);
   }
     // PORTB = led;
        for(led=7; led>=0; led--)
   {
   PORTB=~(1<<led);
    _delay_ms(1500);
   }
      //PORTB = led;
    }
}

댓글 5
  • No Profile
    저..위에코드말인데요 ISR함수 들어올때마다  data <<= 1; 이거때문에 그런거 아닌가욤?
  • No Profile
    글쓴이 강희 11.01.12 16:06 댓글 좋아요 0 싫어요 0

    위에 코드는 한칸씩 옆으로 가는거고요..

    밑에 코드가 스위치 누를때마다 좌==>우 , 우===>좌로 가야 되는데..

    for문은 바로 스위치 누르면 같다가 바로 오네요.

    스위치 눌렀을때 옆으로 한 칸씩 갔다가 다시 와야 되는데..

    어떻게 짜야 되는지 모르겠네요.ㅠ.

  • 강희님께
    No Profile

    지금 아래쪽코드를 보면 스위치를 눌러서 인터럽트 발생시마다 ISR함수가 실행되는데 이렇게 될때마다 led라는 변수가 계속 0으로 초기화 되네요 하나씩 차근차근 보면서 다시 해보시면 쉬우실텐데..

  • No Profile

    winavr에서 compile한 거라면

    인터럽트에서 전역변수를 사용하려면 "volatile"을 써주어야 합니다.

    volatile unsigned char data;

    라고 선언해야 합니다.

     

  • No Profile

    서비스 루틴안에 코드를 짜신건가요?

     

    이런 방식의 코딩은 좋지 않은것 같습니다.

     

     ISR 내부에는 간략한 변수 바꿈이나 if문 정도만 써주시고  좌-> 우  , 우-> 좌  따로따로 함수를 만들어서

     

     서비스 루틴에서 함수를 바꾸어주는 방식을 쓰시는 편이 제어하기 편합니다.

     

    메인문에서 함수 돌리고 인터럽트 발생시에 함수를 왔다갔다 하는 방법이죠

     

     ISR 내부에 무한 반복문은 충격적이군요

     

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

search
번호 분류 제목 글쓴이 조회 수 날짜
728 마이크로프로세서 HOT프로그램을 C 로 바꾸려고 합니다.7 테스 2855 2011.01.25
727 마이크로프로세서 HOT27c010 이라는 것과 호환가능한 롬을 찾고 있어요.2 상혁짱 5254 2011.01.22
726 마이크로프로세서 HOT호환가능롬 찾고 있어요3 상혁짱 1533 2011.01.22
725 마이크로프로세서 HOTavr로 pid제어 하고 싶은데....6 사이클로 16906 2011.01.21
724 마이크로프로세서 HOTpic32 와 stm32 비교 요청2 도우너 3919 2011.01.21
723 마이크로프로세서 HOT자동차 뒷바퀴 축을 차체에서부터4 나무별사랑 1686 2011.01.21
722 마이크로프로세서 HOTAVR 부트로더에 대해 질문있습니다~4 옹밤 1945 2011.01.19
721 마이크로프로세서 HOT영상처리 관련해서 문의드립니다.4 나무별사랑 1877 2011.01.19
720 마이크로프로세서 HOTAVR 시뮬레이션 질문드립니다 seohwan16 1558 2011.01.19
719 마이크로프로세서 HOT세그먼트 예제소스입니당...3 rjmans 2803 2011.01.18
718 마이크로프로세서 HOTAVR에 대해 공부를 시작하고자 합니다5 dhkdch 14182 2011.01.17
717 마이크로프로세서 HOTAtmega128툴로 디버깅할수잇나요?3 rjmans 1715 2011.01.15
716 마이크로프로세서 HOTJTAG와 ISP2 다시 1585 2011.01.14
715 마이크로프로세서 HOTFND 관련 질문입니다.3 다시 1421 2011.01.14
714 마이크로프로세서 HOTSD 통신 시, SPI 타이밍 그림입니다. 날개아래 4528 2011.01.13
713 마이크로프로세서 HOTFAT library for STM32 (20100704버젼)1 날개아래 3035 2011.01.13
712 마이크로프로세서 HOTatmega128 프로그램을 icc avr을 쓸까하는데요,.,6 rjmans 2843 2011.01.11
마이크로프로세서 HOT(avr stdio) 인터럽트로 led 좌,우 시프트 하기5 강희 3710 2011.01.11
710 마이크로프로세서 HOTATmega128 회로질문이요ㅠ5 rjmans 2941 2011.01.06
709 마이크로프로세서 HOT부트로드 관련 질문입니다.2 데닉시 1487 2011.01.04
Prev 1 ... 9 10 11 12 13 14 15 16 17 18 ... 50 Next
  • 세상이 자기를 버렸다고 생각하지 마라. 세상은 날 가진적이 없다.
    - 박 종영
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.