회원가입 ID/PW 찾기
AA

1. USART1_IRQHandler() 가 발생되면 데이터를 버퍼(큐) 에 저장하고, 0x0D / 0x0A 가 나오게 되면

   수신된 데이터를 분석하고, FLASH 에 저장하게 됩니다. 이때, FLASH ERASE 를 하게 되는데요.

   FLASH ERASE 를 하는 중에 TIM2_IRQHandler 혹은 USART1_IRQHandler() 가 발생할 경우가 생기게 되는데.

   FLASH ERASE 가 시간이 걸려서 그런지 위 두 인터럽트가 발생하지 않습니다.

   TIM2_IRQHandler 가 발생하게 되면 LED 를 깜박거리게 해 놓았는데, FLASH ERASE 하는 중에는 잠시 멈추는 현상이 되네요.

   그리고, FLASH ERASE 를 하는 중에 USART1_IRQHandler() 가 발생하여 받은 데이터를 또 다시 처리를 해야 하는데.

   FLASH ERASE 를 하는 중에는 데이터가 수신이 되지 않습니다.

 

2. Virtual COM Port 를 이용해서 디버그 메시지를 출력하도록 구현

  : USB_LP_CAN1_RX0_IRQHandler() : USB_Istr() 와 같이 구현하고, 출력 데이터는 버퍼(큐) 에 저장하고,

    ST 에서 제공하는 EP1_IN_Callback() 과 SOF_Callback() 으로 데이터 유실 없이 출력하도록 구현하였습니다.

  : 그런데, 위 1번과 마찬가지로 USART 에서 수신된 데이터를 Virtual COM Port 로 출력을 하는 중에

    데이터가 수신되었음에도 불구하고  USART1_IRQHandler() 가 발생을 하지 않습니다.

 

위와 같은 상황을 해결하려면 RTOS 를 넣어야 할까요? 아니면 잘 모르지만 Mode Privilege 를 이용해야 할까요?

 

이 상황을 간단히 재현하기 위해서 아래와 같은 테스트를 해 보았습니다.

 

1. main() 함수에서 특정한 문자가 들어올 경우 while(1){} 를 하도록 하면, TIM2_IRQHandler 가 발생을 하더군요.

2. USART1_IRQHandler() 가 발생할 경우 while(1){} 를 하도록 하면, CPU 가 멈추는 현상이 발생하여

   TIM2_IRQHandler 가 발생을 하지 않습니다.

 

제가 간단히 테스트를 한 것이 Mode Privilege 랑 연관성이 있을까요?

 

답변 부탁드립니다.

 

댓글 2
  • No Profile
    저두 이제막 접한거라 부족하지만;;;

    플래그를 활성하 하시면 그나마 풀리지 않을까 생각 듭니다
    그리고 cpu가 다운 먹는다기보단 중간에 연산과정에서 무한 루프를 돌고 있을수 있습니다.
    인터럽트 처리중 또 인터럽트가 들어와 연산 과정중 꼬이는 현상이 발생하더라구요;;;
    그래서 연산을 마무리 짓고 빠져 나와야 하는데 수치가 중간에 바뀐다던가 해서 연산식을 못 빠져 나가는
    현상이 생기더라구요;;

    통신을 모두 받고 나서 cr, lf 가 수신 되었을시 플래그 변수 를 하나 넣어서 참으로 바뀌게 한뒤
    while에서 조건 문을 넣어놓고 플래그가 참일경우 연산하게 구현을 해야 할듯 합니다.

    그렇게 되면 중간에 통신 받는중에 또 받 더라도 최종적인 데이터만 처리하게 되겠죠;;;

    횡설수설 한것 같은데 ㅠㅠ ;; 인터럽트 ㅠㅠㅠ 무조건 쓴다고 좋을줄 알았는데 저도 이래저래 막히는게 생기네요 ㅠㅠ
    도움이 되셨는지 모르겠네요 ㅠㅠ
  • No Profile
    아;; 인터럽트 순서는 정하셨죠?

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

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