Avr Lecture6

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Avr Lecture6 as PDF for free.

More details

  • Words: 971
  • Pages: 10
임베디드 마이크로프로세서 프로그래밍 실전 제작 : 네 로 테 크 강의 : 김 종 형

Embedded AVR Programming

ATMEGA128 USART 직렬통신

1. 2. 3.

20062006-0404-05

-2-

USART의 개요 USART의 레지스터 USART 실습

Embedded AVR Programming

1-1 USART의 개요 ⊙ 2개의 USART(Universal Synchronous and Asynchronous Receive and Transmitter) 구성 - 외부 디바이스와 직렬로 인터페이스를 통해 데이터를 송수신할 수 있게 해 줌 (외부 디바이스는 다른 마이컴 혹은 PC) ⊙ USART0, USART1 ⊙ 전이중 통신 및 멀티 프로세서 통신가능 ⊙ 동기식 전송 모드 - 마스터 동작의 경우 전송속도는 내부 클럭사용 - 슬레이브 동작의 경우 XCKn 단자로 입력되는 외부 클럭신호에 의해 동작한다. ⊙ 비동기식 전송 모드에서는 항상 내부의 시스템 클럭에 의하여 보레이트가 결정된다. ⊙ 송신 완료(TX Complete), 송신 데이터 레지스터 준비완료(TX Data Register Empty), 수신 완료(RX Complete) 등 3가지의 인터럽트 사용 가능

20062006-0404-05

-3-

Embedded AVR Programming

1-2 USART의 레지스터 ⊙ USART I/0 데이터 레지스터 (UDR0, UDR1) : USART0 또는 USART1 포트의 송수신 데이터 버퍼의 기능 BIT

7

6

5

4

UDR0 (READ)

RXB0[7..0]

UDR0 (Write)

TXB0[7..0]

2

1

0

Init Value

0

0

0

0

0

0

0

0

BIT

7

6

5

4

3

2

1

0

0

0

0

0

UDR1 (READ)

RXB1[7..0]

UDR1 (Write)

TXB1[7..0]

Init Value

20062006-0404-05

3

0

0

0

0

-4-

Embedded AVR Programming

1-2 USART의 레지스터 ⊙ USART 제어 및 상태 레지스터 A (UCSR0A, UCSR1A) : USART0, USART1 포트의 송수신 동작제어 ,송수신 상태 저장 기능 BIT

7

6

5

4

3

2

1

0

UCSRnA

RXCn

TXCn

UDREn

FEn

DORn

UPEn

U2Xn

MPCMn

Init Value

0

0

0

0

0

0

0

0

-

RXCn (USARTn Receiver Complete): 수신버퍼의 상태 플래그 TXCn (USARTn Transmit Complete): 송신버퍼의 상태 플래그 UDREn (USARTn Data Register Empty) : 새로운 송신 데이터를 받기 위한 상태 플래그 FEn (Frame Error) : 수신 프레임 에러 상태 플래그 DORn (Data Overrun Error) : 수신동작 오버런 에러 상태 플래그 UPEn (USARTn Parity Error) U2Xn (Double the USARTn Transmission Speed) : 비동기 모드에서만 유효하며, 클럭의 분주비를 16에서 8로 낮추어 전송속도를 2배 높이는 기능 - MPCMn (USARTn Multi-Processor Communication Mode)

20062006-0404-05

-5-

Embedded AVR Programming

1-2 USART의 레지스터 ⊙ USART 제어 및 상태 레지스터 B (UCSR0B, UCSR1B) : USART0, USART1 포트의 송수신 동작제어, 전송데이터를 9비트로 설정한 경우에 전송 데이터의 9번째 비트값을 저장하는 기능을 수행

-

BIT

7

6

5

4

3

2

1

0

UCSRnB

RXCIEn

TXCIEn

UDRIEn

RXENn

TXENn

UCSZn2

RXB8n

TXB8n

Init Value

0

0

0

0

0

0

0

0

RXCIEn (USARTn RX Complete Interrupt Enable): 수신완료 인터럽트 TXCIEn (USARTn TX Complete Interrupt Enable): 송신완료 인터럽트 UDRIEn (USARTn Data Register Empty Interrupt Enable) : 송신 데이터 레지스터 준비완료 인터럽트 RXENn (USARTN Receiver Enable) : 수신부 동작허용, 직렬 데이터 수신단자로 동작하도록 설정하며, FEn , DORn, UPEn 의 동작을 유효하게 함 TXENn (USARTn Transmitter Enable) : 송신부 동작허용 UCSZn2 (USARTn Character Size) : UCSRnC 레지스터의 UCSZn1~0 비트와 함께 전송 문자의 비트수를 설정 RXB8n (USARTn Receiver Data 8Bit) : 전송문자가 9비트로 설정된 경우 수신된 문자의 9번째 비트 (MSB)를 저장. 반드시 UDRn 레지스터 보다 먼저 읽어야 함 TXB8n (USARTn Transmit Data 8Bit) : 전송문자가 9비트로 설정된 경우 송신할 문자의 9번째 비트 (MSB)를 저장. 반드시 UDRn 레지스터 보다 먼저 라이트되어야 함

20062006-0404-05

-6-

Embedded AVR Programming

1-2 USART의 레지스터 ⊙ USART 제어 및 상태 레지스터 C (UCSR0C, UCSR1C) : 송수신 동작 제어 BIT

7

6

5

4

3

2

1

0

UCSRnC

-

UMSELn

UPMn1

UPMn0

USBSn

UCSZn1

UCSZn0

UCPOLn

Init Value

0

0

0

0

0

0

0

0

- UMSELn (USARTn Mode Select) : 동기전송모드 시 1, 비동기 전송모드 시 0 - UPMn1~0 (USARTn Parity Mode) : 패리티 모드 설정 UPMn1

UPMn0

PARITY MODE

0

0

NO PARITY MODE

0

1

RESERVED

1

0

EVEN PARITY MODE

1

1

ODD PARITY MODE

- USBSn (USARTn Stop Bit Select) USBSn = 0 , Stop Bit 1 USBSn = 1, Stop Bit

20062006-0404-05

-7-

Embedded AVR Programming

1-2 USART의 레지스터 ⊙ USART 제어 및 상태 레지스터 C (UCSR0C, UCSR1C) - UCSZn1~0 (USARTn Character Size) : UCSRnB 레지스터의 UCSZn2 비트와 함께 전송 문자의 데이터 비트수를 설정 UCSZn2

UCSZn1

UCSZn0

Character Size

0

0

0

5bit

0

0

1

6bit

0

1

0

7bit

0

1

1

8bit

1

0

0

Reserve

1

0

1

Reserve

1

1

0

Reserve

1

1

1

9bit

- UCPOLn (USARTn Clock Polarity) : 동기 전송모드의 슬레이브 동작에서만 유효 UCPOLn = 0, 송신데이터는 XCKn 클럭의 상승 에지에서는 새로운 값이 출력되고, 수신 데이터는 XCKn 클럭의 하강 에지에서 검출 UCPOLn = 1 이면 송신 데이터는 XCKn 클럭의 하강 에지에서 새로운 값이 출력되고 수신 데이터는 XCKn 클럭의 상승 에지에서 검출

20062006-0404-05

-8-

Embedded AVR Programming

1-2 USART의 레지스터 ⊙ USART BAUD RATE REGISTER (UBRR0H/L , UBRR1H/L) : 16비트 중 12비트 만 유효, 송수신 속도를 설정, 클럭의 분주비로 작용하여 직렬포트의 전송속도인 보레이트를 결정 BIT

7

6

5

4

UBRRnH

-

-

-

-

UBRRnL Init Value

Baud Rate (bps) / 16MHz

20062006-0404-05

3

2

1

0

UBRRn[11:8]

UBRRn[7:0] 0

0

0

비동기 일반모드 (U2Xn=0)

0

0

비동기 2배속 모드 (U2Xn=1)

UBRRn

Error

UBRRn

Error

2400

416

-0.08%

832

+0.04%

4800

207

+0.16%

416

-0.08%

9600

103

+0.16%

207

+0.16%

14,400

68

+0.64%

138

-0.08%

19,200

51

+0.16%

103

+0.16%

28,800

34

-0.79%

68

+0.64%

38,400

25

+0.16%

51

+0.16%

57,600

16

+2.12%

34

-0.79% -9-

0

0

0

Embedded AVR Programming

1-3 USART0 실습 1 ☞ 송신은 폴링 방식, 수신은 인터럽트 방식으로 PC와 연결하여 USART0로 데이터를 받으면 그 받은 데이터를 전송하는 프로그램 #include <mega128.h> #include <delay.h>

void main(void) {

#define UDRE0 5 void TxData(char data) { while(!(UCSR0A & (1<
// USART0 initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART0 Receiver: On // USART0 Transmitter: On // USART0 Mode: Asynchronous // USART0 Baud rate: 9600 UCSR0A=0x00; UCSR0B=0x98; UCSR0C=0x06; UBRR0H=0x00; UBRR0L=0x67; //16MHz일 때 //UBRR0L=0x33; //8MHz일 때

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

#asm("sei") while (1) ; // do nothing

TxData(data); } }

20062006-0404-05

-1010-

Related Documents

Avr Lecture6
November 2019 13
Lecture6
June 2020 10
Lecture6
November 2019 10
Lecture6-ieee802
November 2019 15
Avr
November 2019 38
Avr
June 2020 22