회원가입 ID/PW 찾기
AA

안녕하세요.

 

avr펌웨어를 하면서 데이타 파싱하는 부분에 문제가 있어서 이렇게 도움을 요청합니다.

 

시리얼인터럽트 루틴에서 데이타를 받으면서 비슷한 값의 데이타를 받으면 하나로 인식하는 현상이 발생합니다.

 

예를들면, ERROR1~15라는 데이타 값이 있는데요. 문자이구요.

 

ERROR1, ERROR10,ERROR11,ERROR12,ERROR13,ERROR14,ERROR15의 데이타값을 각각 수신하면...ERROR1로만 인식이 됩니다.

 

한바이트씩 받으면서 처리하기때문에 7자 문자가 6자 문자로 받으면서 먼저 ERROR1로 인식해 버립니다.

 

어떻게 처리하면 되는지 좋은 조언부탁드립니다.

 

UCHAR Rev_Data = 0;

ISR(USART0_RX_vect)
{

     Rev_Data = UDR0;

 //    Parsing_ReceiveData_Xray(Rev_Data);   // 받은 데이타를 파싱하는 함수

}

 

질문

1. 한바이트씩 데이타를 받아서 비교해서 처리하는데요..

예를들어, ERROR1, ERROR10인 경우에 파싱하는 함수에서 마지막 데이타 값과 전체 LENGTH를 비교해서 처리하는데....

 

ERROR10인 경우 7바이트의 LENGTH이지만, 한바이트씩 받아서...먼저 6바이트 LENGTH루틴으로 빠져버립니다.

수신인터럽트상에서 6바이트인지...7바이트인지를 어떻게 처리해야 하나요?

 

며칠동안 모든 방법을 동원했지만.....쉽게 해결되지않네요...

답변 부탁드립니다.

 

댓글 2
  • No Profile

    답변이랑 의견이랑 다른거군요.ㅎㅎ

     

    제가 생각하기에는 두가지 방법이 있을 듯 합니다.

     

    1. 모든 데이터 값을 7 바이트로 처리하는 방법입니다. ERROR1 -> ERROR01 로 변경해서 처리하면 어떨지요.

     

    2. 일단 데이터들이 6바이트든 7바이트든 연속해서 올텐데요. 그 간격 만큼 기다렸다가 데이터를 해석하는 방법이 있겠습니다. 즉 다음 바이트가 들어올 시간동안 기다려보고 들어오는 데이터가 없으면 마지막 바이트가 들어온 것으로 보고 데이터 파싱 처리하는 방법이 되겟습니다. 참고가 되시길...

  • No Profile

    string.h 를 include 하신 다음에
    uart data를 string 형으로 저장한다음, 아래와 같이..

            while(rx_counter_usartf1 != 0) //
                {
                RxString1[RxCountTemp1] = rx_char(1);
                RxCountTemp1++;
                }
    if( ( strncmp( "ERROR1", RxString1) ) == 0 ) {...............} //문자열 비교하여 같으면 '0'
    else if( ( strncmp( "ERROR2", RxString1) ) == 0 ){...............} //문자열 비교하여 같으면 '0'
    else if( ( strncmp( "ERROR3", RxString1) ) == 0 ){...............} //문자열 비교하여 같으면 '0'
    else if( ( strncmp( "ERROR4", RxString1) ) == 0 ){...............} //문자열 비교하여 같으면 '0' .........
    형태로 비교처리하는 방식으로 가시는 것이 어떠실런지?

    생각보다 잘~~~ 됩니다.

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

search
번호 분류 제목 글쓴이 조회 수 날짜
908 마이크로프로세서 모터제어 질문합니다.1 그림톡 366 2013.06.16
907 마이크로프로세서 HOT도어락 설계에 관해서 폴트 603 2013.06.15
906 마이크로프로세서 HOTARM 초보용 보드 추천받습니다.1 말자하 713 2013.06.14
905 마이크로프로세서 HOTavr이용하여 컴퓨터 마우스제어에 궁금합니다.~ clown 625 2013.06.13
904 마이크로프로세서 PADS부품 배치시 질문이요1 미미이르 388 2013.06.04
903 마이크로프로세서 HOT8051 최대값 최소값 저장하는 명령어 조언좀..1 kyu 564 2013.05.28
902 마이크로프로세서 HOT네트워크 보드 개발자를 찾습니다. 후지바이크 407 2013.05.13
마이크로프로세서 시리얼인터럽트루틴에서 데이타처리하면서 에러발생에 대한 질문입니다.2 jaemi2010 397 2013.05.09
900 마이크로프로세서 UBICOM IP2022를 사용하려 합니다. 블루핑 299 2013.05.06
899 마이크로프로세서 HOT적외선 센서를 이용한 화장실 불 점등 어셈블리어 프로그램...1 오진새미 926 2013.04.20
898 마이크로프로세서 place database part누르고 -> 라이브러리 추가시 오류1 웨라러브 299 2013.04.17
897 마이크로프로세서 HOTPIC 관련 교육동영상이나 자료 있으면 부탁합니다. 전설의황제 466 2013.04.03
896 마이크로프로세서 atmega1280부트로더 프로그램없나요?2 jaemi2010 385 2013.03.29
895 마이크로프로세서 HOTCAM350, 거버데이터 좌표추출 관련 문의드립니다. 꼭좀 도와주세요 .. sozipum 2049 2013.03.18
894 마이크로프로세서 HOT사운드 동요를 만들어 봤어요~1 마프초짜입문 426 2012.11.26
893 마이크로프로세서 HOT8051을 이용하여 라인트레이서를 만들려고 합니다.1 김보람 545 2012.11.06
892 마이크로프로세서 HOT제가 짠 모터 구현 소스인데 어디가 문제인지 헤더파일로 넘어가질않아요1 아이유3단고음 414 2012.10.09
891 마이크로프로세서 HOT8051 dc모터제어 헤더파일점 부탁드립니다. 아이유3단고음 520 2012.10.09
890 마이크로프로세서 8051 처음 다뤄보는 학생입니다.1 요니 360 2012.10.08
889 마이크로프로세서 HOTAT90CAN128을 이용한 CAN 통신 질문 불량한마컴 947 2012.09.26
Prev 1 2 3 4 5 6 7 8 9 10 ... 50 Next
  • 다른 사람들을 비난하려고 생각하기 전에 자기 자신을 충분히 살펴보아야 한다.
    - 몰리에르
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.