부제목: 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 방식 보다는 인터럽트 방식을 이용하는 것이 편리
'[Intel] 엣지 AI SW 아카데미 > 펌웨어 프로그래밍 75hour' 카테고리의 다른 글
[Intel] 엣지 AI SW 아카데미 25일차 (부산상공회의소 인력개발원) (1) | 2023.12.17 |
---|---|
[Intel] 엣지 AI SW 아카데미 24일차 (부산상공회의소 인력개발원) (1) | 2023.12.17 |
[Intel] 엣지 AI SW 아카데미 22일차 (부산상공회의소 인력개발원) (1) | 2023.12.17 |
[Intel] 엣지 AI SW 아카데미 20일차 (부산상공회의소 인력개발원) (1) | 2023.12.16 |
[Intel] 엣지 AI SW 아카데미 19일차 (부산상공회의소 인력개발원) (2) | 2023.12.04 |