Posted
Filed under C,C++

시리얼통신] 128에서 UART0 <-> UART1 통신

|

128 시리얼 통신 포트(UART0, UART1) 2 있는데, 두개간 통신해야 할일이 있다.

예를 들어 센서나 특정 GPS 모듈이 시리얼 포트를 지원한다고할때, 얘를 UART0(혹은 UART1)으로 물리고, 값을 컴퓨터 출력하기 위해

UART1(혹은 UART0)으로 물릴 경우 말이다.

보통 센서는 I2C 쓰는 경우가 많지, Serial 포트를 쓰는 경우가 별로 없다. 하지만, 운나쁘게 Serial 포트를 쓰는 경우는 위의 방법 말고

다른 방법이 있나? 내는 모르겠다.

 

어쨌거나, UART0으로 들어와서 UART1으로 출력하는 개념도나 예제를 살펴보자.

 

 

<당근이가 실험해본 UART0 <-> UART1 실험 환경>

 

 

PC TXD, RXD 통신하면 UART 전송되어 오므로, 이를 MAX232 레벨을 바꿔주고, ATmega128 UART0으로 받아들인다음에,

내부 프로그램을 통해서 다시 UART1으로 Echo 해보자. (에코 안하고, 다르게 만드려면, 여러가지 text 앞뒤로 붙여주거나, 데이터를 가공하면 되겠다.)

 

#include <avr/io.h>
#include <avr/interrupt.h>
//
나머지 헤더 파일 생략..

 

#include "./lib/delay.h"
#include "./lib/fundamental.h"
#include "./lib/uart.h"

// uart.h에는 tx1_char(rx0_data)  uart0_init(BAUD_9600) 함수가 들어가 있다

// 함수에 대한 내용은 생략한다. 궁금하신 분은 당근이 라이르러리를 확인해 보시길..

volatile unsigned char rx0_data= '0';
volatile unsigned char rx1_data= '0';

 

//소스 코드는 어이가 없을정도로 간단하다.

SIGNAL(SIG_UART0_RECV) {

  // UART0 RECV 인터럽트가 <SPAN style="FONT-SIZE: 9pt; COLOR: #3a32c3; FONT-FAMILY: 굴림; mso-

2009/07/17 20:39 2009/07/17 20:39