회원가입 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
번호 분류 제목 글쓴이 조회 수 날짜
3844 Allegro & OrCAD HOT아시는 분 알려주세요...1 jini195 1122 2011.01.13
3843 자유주제 HOT시작이 무척 어렵네요.4 나트륨 6857 2011.01.12
3842 ECAD 아무거나 HOTArtwork 은 어떤걸 많이 사용하나요?4 유럽여행 2896 2011.01.12
3841 Allegro & OrCAD HOT알레그로 한글메뉴얼 가지고 계신분 파도소리 2442 2011.01.12
3840 전기전자 아무거나 HOT클럭노이즈 개선방안1 멋쟁이짱 1696 2011.01.12
3839 전기전자 아무거나 HOT노이즈 없애는 방법1 멋쟁이짱 1505 2011.01.12
3838 Analog & Mixed-Signal 설계 HOT정전압 전원회로2 멋쟁이짱 1693 2011.01.12
3837 PADS HOT라이브러리 생성방법 ?5 멋쟁이짱 2846 2011.01.12
3836 PADS HOTLOGIC과 ROUTER의 연동방법3 멋쟁이짱 2830 2011.01.12
3835 Allegro & OrCAD HOT타이틀 라이브러리 어떻게하나요2 멋쟁이짱 1145 2011.01.12
3834 Allegro & OrCAD HOTVERSION16.2설치1 멋쟁이짱 1327 2011.01.12
3833 Allegro & OrCAD HOTNetlest 생성과정 오류ㅠㅠ3 쨍용 1438 2011.01.12
3832 마이크로프로세서 HOTatmega128 프로그램을 icc avr을 쓸까하는데요,.,6 rjmans 2845 2011.01.11
3831 자유주제 HOTSTM32에 관심이...1 미키 10028 2011.01.11
3830 자유주제 HOT과제에 지쳐 잠든 저의 ,,,ㅠㅠ12 꿈꾸는자취방 2468 2011.01.11
마이크로프로세서 HOT(avr stdio) 인터럽트로 led 좌,우 시프트 하기5 강희 3719 2011.01.11
3828 ECAD 아무거나 HOTpcb 임피던스 매칭에 대하여5 chumdan 10875 2011.01.11
3827 Analog & Mixed-Signal 설계 HOTLED 정전류 구동이유에 대한 글입니다. 이해안되는 부분이 있어서 설명 부탁드립니다. 엘이디 2044 2011.01.11
3826 자유주제 HOTORCAD 라이브러리는 어디서 구할수 있는지요?6 카레멜롱 15979 2011.01.10
3825 자유주제 HOT노트북을 하나 살려고 하는데요...9 owen 9471 2011.01.10
  • 패배를 극복하는 법을 배워야 한다. 그럴때에 당신의 인격이 향상된다.
    - 닉슨
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.