RS232 통신의 기초코드

728x90
반응형

시작바이트(STX)-----데이터--------엔딩바이트(ETX)

일단 데이터 내용에는 STXETX가 들어가지 않는다고 가정합니다.
데이터 내용에는 컴맨드/ 데이터/ 데이터Length/ Check Sum/ 등으로 구성 됩니다.

제일 중요한건 시작(STX)과 끝(ETX)입니다

interrupt[USART0_RXC] void usart0_rx_isr(void){ 
  char data;
  data=UDR0;

  if(data==STX){ // 시작바이트에서는 인덱스를 초기화 합니다.
      index0=0;
      rx_buf0[index0++]=data;
  }
  else if(data==ETX){
     rx_buf0[index0]=data;
     // Length검사 & Check Sum검사 등을 마친 후
     // 컴맨드에 따른 내용을 처리 합니다.
     index0=0;
  }
  else if(index0<RX_Max){ rx_buf0[index0++]=data; }
}

데이터 내용에는 STX 와 ETX가 들어가지 않게 하는 방법에도 여러가지가 있는데
모뎀이나 PLC경우에는 ASC 코드를 사용합니다.
산업용 제어보드 만드는 분들 중에는
니블단위로 짤라서 0x30을 더해서 0x30~0x3F 의 문자로 전송 하기도 합니다.

 

728x90
반응형

'교육 > AVR' 카테고리의 다른 글

RS232 통신 예제 코드  (12) 2022.10.30