본문 바로가기
[Intel] 엣지 AI SW 아카데미/펌웨어 프로그래밍 75hour

[Intel] 엣지 AI SW 아카데미 23일차 (부산상공회의소 인력개발원)

by 0x01 2023. 12. 17.

부제목: 23일차


일정: 2023.11.27(월)

수업 내용: 
 

 - UART 제어

 

목표: 

 

UART 제어

 

• UBRRnH, UBRRnL (USARTn Baud Rate Register)

 

[11]~[0] USART Baud Rate Register
: 12개의 비트에 의해서 전송속도가 설정
: 상위 바이트 값 (UBRRnH)를 먼저 쓰고 하위 바이트 값 (UBRRnL)을 나중에.

 

 

: 16MHz 에서 전송속도에 따른 UBRRn 레지스터의 설정 값

 

: 전송속도 및 설정해야 할 UBRRn 레지스터 값 계산식

 

UART(Universal Asynchronous Receiver and Transmitter)
• 16MHz 시스템 clock 을 갖는 경우의 전송속도에 따른 UBRRn 레지스터의 설정
• 비동기 통신 모드에서 전송속도에 대한 오차범위는
  8비트 일반 모드의 경우 ±2.0%이며, 2배속 모드의 경우 ±1.5%
• ATmega128의 USART clock 발생부는 데이터의 송신과 수신을 위해
  기본 clock을 발생하며, 
  비동기 일반모드, 비동기 2배속 모드, 동기 마스터 모드, 동기 slave 모드 지원
• USART 제어 및 상태 레지스터 UCSRnC의 UMSEL 비트는 동기모드와 비동기 모드 선택
• 2배속 모드는 UCSRnA 레지스터의 U2X비트에 의해 제어
• 동기모드에서(UMSEL = 1) XCKn 핀에 대한 데이터 방향 레지스터의 값은
  클럭 소스가 내부(마스터 모드)에 있는지? 외부에 있는지(slave모드)에 따라 제어
• XCKn핀은 동기모드인 경우에만 동작

 

USART 사용법(초기화)

1. 통신 모드 설정

 동기/ 비동기, 송신 Enable, 수신 Enable, 패리티 비트, 스톱 비트, 데이터 비트 수, 인터럽트 Enable 비트

사용 레지스터 : UCSRnA, UCSRnA, UCSRnC [n=0, 1] 2. 보레이트 (전송 속도) 설정

 사용 레지스터 : UBRRnL, UBRRnH [n=0, 1] 3. 전역 인터럽트 Enable 비트 I set (인터럽트 사용시에만 설정)

 사용 레지스터 : SREG(최상위 비트 I)

 

<송신 동작>
- UCSRnA 레지스터의 TXCn 또는 UDREn 비트 대기
- 전송할 데이터를 UDRn 레지스터에 설정(write) 송신
※ 송신은 인터럽트 방식보다 polling 방식을 이용하는 것이 편리

 

<수신 동작>
- UCSRnA 레지스터의 RXCn 비트가 set 될 때까지 대기
- 전송된 데이터를 UDRn 레지스터로부터 읽음(수신 동작)
※ 수신은 언제 데이터가 전송되어 올지 모르기 때문에
polling 방식 보다는 인터럽트 방식을 이용하는 것이 편리