회원가입 ID/PW 찾기
AA
안녕하세요..
예전에는 된 것 같은데 interrupt에서 변수 값을 바꿔도 main에서는 안변하네요.
간단한 것 같은 데 잘 안되요...

interrupt에서 m_ReadReq을 바꾸고 main에서 PORTD.1을 이용하여 보는 데 동작을 안하네요...
main에서 출력하지 않고 interrupt에서 출력하면 잘 됩니다.

뭔가 실수한 것 같은데 잘 모르겠습니다.
잘 부탁드립니다.
참 compile은 win-AVR에서 했습니다.
댓글 5
  • No Profile
    글쓴이 도리형 10.08.16 15:04 댓글 좋아요 0 싫어요 0
    자답 : 전역변수 선언이 문제였네요...
    winAVR에서는 interrupt에서 전역변수를 쓸려면 단순히
    U8 m_ReadReq; 라고 하면 안되고
    volatile U8 m_ReadReq; 이라고 선언해야 하네요.
  • No Profile
    volatile 이란 keyword는 compiler의 최적화를 억제하는 키워드일 뿐입니다. 컴파일러의 최적화에 의해서 전역변수로 상용할 수 없었을 뿐인 거죠!

    --> 확실하지 않지만 Ram영역에 변수를 기록할 때 사용하는 변수로도 알고 있는데 제가 잘 못 알고 있는 것인지 해서 ㅎㅎ
    dohyunpak@yahoo.co.kr로 연락 부탁드립니다.
  • No Profile
    글쓴이 도리형 10.08.30 14:22 댓글 첨부 1 좋아요 0 싫어요 0
    정확히는 모르겠는데 AVR-GCC기반에서는 꼭 써야 한다고 하네요.. 다른 컴파일러에서는 써도되고 안써도 되는.....
    (copy해서 약간 수정한 글입니다....
     AVR-GCC컴파일러는 여러개의 태스크들이 동시 다발적으로 실행되는 리눅스 OS를 위해 개발된 컴파일러이고 운영체제에 의해 태스크들이 스케줄링되므로 메모리 할당 받은 영역이 그 때 그때마다 다를 수 있음. 그때마다 인터럽트 서비스 루틴내에 사용되 전역변수 값이 바뀌게 되거나 다른 태스크에 의해 간섭을 받게 되면 문제가 생기므로 아예 간섭받지 않는 별도의 영역에 할당해 버림->이것이 volatile로 선언된 전역변수임)
    대충 알것 같기도..... 밑에 파일 첨부합니다.  위 내용은 28page 하단 부터 있습니다.
  • No Profile
    헉 QA에서도 납이 없어서 다운이 안되네요.. 잉잉..
    으싸 으싸 열씸히 납을 쌓아야 겠습니다.
  • No Profile
    ^^ 인터럽트는 main 문과 다른 함수입니다.^^

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

search
번호 분류 제목 글쓴이 조회 수 날짜
692 마이크로프로세서 HOTAVR로 인터넷 접속 및 데이타 전송2 바다거북 1000 2010.08.29
691 마이크로프로세서 HOT인터럽트가 왜 발생을 안할까요?2 윤서파파 2954 2010.08.27
690 Software & IDEs HOTbin파일에관한 질문드립니다.1 왕초보틱 958 2010.08.26
689 마이크로프로세서 HOT홈 오토매이션 만들어보신분..3 온니무 1127 2010.08.25
688 마이크로프로세서 HOT8051도 회사취직 하면 많이 쓰나요??10 온니무 1168 2010.08.25
687 펌웨어 & 코딩언어 HOT학부생인데요 가장 자신있는 프로그램이 어떤거 있으신가요? c언어인분도 계세요?4 온니무 871 2010.08.25
686 마이크로프로세서 HOTavr에서 cmos카메라의 사용방법이 궁금합니다(회로첨부)1 응캬아 1962 2010.08.24
685 마이크로프로세서 HOTATmega128에 엔코더 다신 분 계신가요?6 봉만이 3077 2010.08.24
684 마이크로프로세서 HOT부저음을 내고 싶습니다..ㅎㅎ;;2 후아푸 2109 2010.08.23
683 마이크로프로세서 HOT선풍기 모터의 RPM을 어떻게 하면 알 수 있을까요?8 Glory 3715 2010.08.22
682 펌웨어 & 코딩언어 HOTC/C++로 영상처리를 하고 싶습니다.5 Glory 2977 2010.08.22
마이크로프로세서 HOTinterrupt에서 변수값을 바꿔도 main에서는 안 변해요...5 도리형 1216 2010.08.16
680 마이크로프로세서 HOTatmega128에 타이머용 외부오실레이터(32.768KHz) 부착문의입니다.1 준성87 1444 2010.08.16
679 펌웨어 & 코딩언어 HOTC 언어2 연희야 1097 2010.08.10
678 마이크로프로세서 HOTATmega128에서 5상 스텝핑모터구현시 진동과 소음문제??1 디지랜드 1616 2010.08.10
677 마이크로프로세서 HOT서보 제어 전원관련 질문이요 제발 도와주세요ㅜ2 JMX 1327 2010.08.09
676 마이크로프로세서 HOT도와주세용 (__farflash ) 사용법 중에.서2 1002 1173 2010.08.06
675 Software & IDEs HOT[matlab] 사용했던 변수 저장에 관하여 키핀 973 2010.08.05
674 마이크로프로세서 HOT서보 모터 질문입니다! 도와주세요1 박종호 1201 2010.08.02
673 마이크로프로세서 HOTRC 서보모터 구동 관련2 야슬이 1392 2010.08.01
Prev 1 ... 19 20 21 22 23 24 25 26 27 28 ... 58 Next
  • 시간엄수는 군주의 예절이다.
    - 루이 18세
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.