7.USART

7.1 특징 및 기능

ATmega128은 USART (Universal Synchronous and Asynchronous serial Receiver and Transmitter) 라는 통신 회로를 지원 합니다. 이를 이용해 외부 디바이스와 Serial 형태의 데이터를 송수신할 수 있게 해줍니다.

USART를 제어하기 위한 레지스터로는 USART를 통해 보낼 데이터나 받은 데이터를 두는 USART I/O 데이터 레지스터(UDRn), USART 상태를 알 수 있는 USART 제어 상태 레지스터(UCSRnA, UCSRnB, UCSRnC) 그리고 데이터 통신의 속도를 결정하는 보레이트(Baud Rate)를 설정하는 USART 보레이트 레지스터(UBRRnL, UBRRnH)가 있습니다. 통신 속도를 결정해 주는 보레이트는 부착되거나 사용 되어지는 크리스탈이나 오실레이터의 속도에 의해 좌우됩니다. 이를 이용해 계산값 또는 지정값을 UBRR에 지정하여 속도를 결정합니다.

 

1) 주요 특징

동기 모드 : Master (내부클럭). Slave (외부 XCKn pin에 입력된 클럭)

비동기 모드 : 내부 클럭 사용

멀티프로세서 통신

높은 정밀도의 보레이트 발생기 내장

전송데이터 5~9비트 설정

스톱비트 1~2설정

페리티 비트 설정(사용, 미사용, 짝수/홀수패리티 선택)

에러검출기능(페리티 에러, 오버런에러, 프레임에러)

노이즈 필터링(3번 샘플링 동작)

 

2) USART 사용 인터럽트 3가지

수신완료 인터럽트, 송신완료 인터럽트, 송신데이터 준비완료 인터럽트를 이용해 MAIN 프로그램의 영향을 최저를 받으면서 송/수신이 가능합니다.

 

3) 레지스터

- UDRn(Usart 0 I/O Data Register) : 송수신 DATA 의 버퍼, TXBn은 송신시 사용, RXBn은 수신시 사용

 

- UCSRnA(USART Control and Status Register A)

Bit 7, RXCn(USART Receive Complete) : 1 은 UDRn의 수신버퍼에 안 읽은 데이터가 존재함을 뜻합니다.

Bit 6, TXCn(USART Transmit Complete) : 1 은 송신 시프트 레지스터에 있는 송신데이터가 모두 전송 되었음을 뜻 합니다.

Bit 5, UDREn(USART Data Register Empty) :1 은 송신 버퍼가 비어있어서 새로운 송신 데이터를 받을 준비 되었음을 뜻합니다.

Bit 4, FEn(USART Frame Error) : 1 은 수신할 때 프레임 에러가 발생 한 것을 뜻합니다.

Bit 3, DORn(USART Data Overrun Error) : 수신시에 오버런 에러가 발생 한 것을 뜻합니다.

Bit 2, UPEn(USART Parity Error) : 수신할 때 패리티 에러가 발생 한 것을 뜻합니다.

Bit 1, U2Xn(Double the USART Transmission Speed) : 비동기 모드에서 클럭의 분주비를 16에서 8로 조절하여전송속도를 2배 높이는 기능을 수행한다.

Bit 0, MPCMn(USART Multi-Processer Communication Mode) : 멀티프로세서 통신모드로 설정한다.

 

- UCSRnB(USART Control and Status Register B)

Bit 7, RXCIEn(USART RX Complete Interrupt Enable) : 수신완료 인터럽트 활성화

Bit 6, TXCIEn(USART TX Complete Interrupt Enable) : 송신완료 인터럽트 활성화

Bit 5, UDRIEn(USART Data Register Empty Interrupt Enable) : 송신 데이터 레지스터 준비완료 인터럽트 활성화

Bit 4, RXENn(USART Receiver Enable) : 수신부 동작 활성화

Bit 3, TXENn(USART Transmitter Enable) : 송신부 동작 활성화

Bit 2, UCSZn2(USART Character Size) : UCSRnC의 UCSZn1~0 비트와 함께 전송 문자의 데이터 비트수를 설정한다.

Bit 1, RXB8n(USARTReceive Data Bit 8) : 전송 데이터수가 9로 설정된 경우 수신된 9번째 데이터를 저장하게 된다.

Bit 0, TXB8n(USART Transmit Data Bit 8) :전송 데이터수가 9로 설정된 경우 송신될 9번째 데이터를 저장하게 된다.

 

- UCSRnC(USART Control and Register C)

Bit 6, USMSELn(USART Mode Select) : 1 은 동기전송모드, 0 은 비 동기전송모드

Bit 5,4, UPMn1, UPMn0(USART Parity Mode)

Bit 3, USBSn(USART Stop Bit Select) : 1 은 스톱비트 2개로 설정, 0 은 스톱비트 1개로 설정

Bit 2,1, UCSZn1, UCSZn0(USART Character Size) : UCSRnB의 UCSZn2 비트와 함께 전송 문자의 데이터 비트수를 설정한다.

Bit 0, UCPOLn(USART Clock Polarity) :동기 전동 모드의 슬레이브 동작한다. 1 일때 송신데이터는 XCKn 클럭의 하강에지에서 새로운 값이 출력 수신데이터는 XCKn 클럭의 상승 에지에서 검출되며, 0 일때 송신데이터는 XCKn 클럭의 상승에지에서 새로운 값이 출력 수신데이터는 XCKn 클럭의 하강 에지에서 검출된다.

 

- UBBRnH/L(USART Baud Rate Register)

USART의 송수신 속도를 설정합니다. (설정시 UBRRn 레지스터를 먼저 설정 해야 한다.)

ATmega128에는 입력 클럭에 따라 설정되는 값을 미리 계산값된 표로 제공하고 있습니다. 그러나 클럭 주파수에 따른 보드레이트를 계산 할 수도 있습니다. 이를 이용해 능동적으로 계산하여 사용하시는 것을 추천합니다.

'공부 > AVR' 카테고리의 다른 글

[ATMEGA128] 9. TWI (I2C)  (0) 2012.11.09
[ATMEGA128] 8.SPI  (0) 2012.11.09
[ATMEGA128] 6. 타이머 카운터 (2)  (0) 2012.11.09
[ATMEGA128] 6. 타이머 카운터 (1)  (0) 2012.11.09
[ATMEGA128] 5. 외부 인터럽트 및 내부 인터럽트  (0) 2012.11.09

+ Recent posts