AVR 마이크로 컨트롤러 (Atmel 8) 직렬 통신 USART 구성

문제를 제거하기 위해 도구를 사용해보십시오





마이크로 컨트롤러는 RAM, ROM TIMERS, 직렬 데이터 통신 등 일부 미리 정의 된 작업을 수행하는 데 필요합니다. 요즘, 고급형 마이크로 컨트롤러 원하는 작업을 수행 할 수있는 능력과 타당성에 따라 다양한 응용 분야에서 사용되며 이러한 컨트롤러에는 8051, AVR 및 PIC 마이크로 컨트롤러 . 이 기사에서는 고급 AVR 제품군 마이크로 컨트롤러와 프로그래밍에 대해 알아 봅니다. .

AVR 마이크로 컨트롤러

AVR은 1996 년 Atmel Corporation에서 제조 한 제어 장치의 한 유형입니다. AVR은 어떤 것도 대표하지 않으며 이름 일뿐입니다. AVR 마이크로 컨트롤러는 Harvard 아키텍처로 구성됩니다. , 따라서 장치는 감소 된 수의 기계 수준 명령 (RISC)으로 매우 빠르게 실행됩니다. AVR 마이크로 컨트롤러는 6- 슬립 모드, 내장 ADC, 내부 발진기 및 직렬 데이터 통신 등과 같은 다른 마이크로 컨트롤러에 비해 특별한 기능으로 구성됩니다. AVR 마이크로 컨트롤러 다양한 작업을 수행하기 위해 8 비트, 16 비트 및 32 비트의 다양한 구성으로 사용할 수 있습니다.




AVR 마이크로 컨트롤러

AVR 마이크로 컨트롤러

AVR 마이크로 컨트롤러의 USART 직렬 데이터 통신

USART는 범용 동기 및 비동기 수신기 및 송신기를 나타냅니다. 두 프로토콜의 직렬 통신입니다. 이 프로토콜은 단일 와이어의 클럭 펄스와 관련하여 비트 단위로 데이터를 송수신하는 데 사용됩니다. 그만큼 AVR 마이크로 컨트롤러 직렬로 데이터를 송수신하는 데 특별히 사용되는 TXD 및 RXD의 두 개의 핀이 있습니다. 모든 AVR 마이크로 컨트롤러는 자체 기능이있는 USART 프로토콜로 구성됩니다.



AVR 마이크로 컨트롤러의 USART 통신

AVR 마이크로 컨트롤러의 USART 통신

AVR USART의 주요 기능

  • USART 프로토콜은 전이중 프로토콜을 지원합니다.
  • 고해상도 전송 속도를 생성합니다.
  • 그것은 5에서 9까지의 직렬 데이터 비트 전송을 지원하며 2 개의 정지 비트로 구성됩니다.

USART 핀 구성

AVR의 USART는 3 개의 핀으로 구성됩니다.


  • RXD : USART 수신기 핀 (ATMega8 PIN 2 ATMega16 / 32 Pin 14)
  • TXD : USART 송신기 핀 (ATMega8 PIN 3 ATMega16 / 32 Pin 15)
  • XCK : USART 클럭 핀 (ATMega8 PIN 6 ATMega16 / 32 Pin 1)

작동 모드

USART 프로토콜의 AVR 마이크로 컨트롤러는 다음과 같은 세 가지 모드로 작동합니다.

  • 비동기 일반 모드
  • 비동기 배속 모드
  • 동기 모드
작동 모드

작동 모드

비동기 일반 모드

이 통신 모드에서 데이터는 UBBR 레지스터에 의해 설정된 미리 정의 된 전송 속도에 따라 클럭 펄스없이 비트 단위로 전송 및 수신됩니다.

비동기 배속 모드

이 통신 모드에서 전송 속도의 두 배로 전송되는 데이터는 UBBR 레지스터에 의해 설정되고 UCSRA 레지스터에 U2X 비트가 설정됩니다. 데이터를 빠르게 송수신하기위한 동기식 통신을위한 고속 모드입니다. 이 시스템은 정확한 전송 속도 설정 및 시스템 시계가 필요한 경우에 사용됩니다.

동기 모드

이 시스템에서 클럭 펄스에 대한 데이터 송수신은 UCSRC 레지스터에서 UMSEL = 1로 설정됩니다.

AVR 마이크로 컨트롤러의 USART 구성

USART는 다음과 같은 5 개의 레지스터를 사용하여 구성 할 수 있습니다. 3 개의 제어 레지스터 , UDR, UCSRA, UCSRB, UCSRC 및 UBRR과 같은 하나의 데이터 레지스터 및 전송 속도 선택 레지스터.

프로그램 작성을위한 7 단계

1 단계: Baud Rate 계산 및 설정

USART / UART의 전송 속도는 UBRR 등록 기관에서 설정합니다. 이 레지스터는 특정 속도로 데이터 전송을 생성하는 데 사용됩니다. UBRR은 16 비트 레지스터입니다. AVR은 8 비트 마이크로 컨트롤러이고 모든 레지스터 크기는 8 비트이기 때문입니다. 따라서 여기서 16 비트 UBRR 레지스터는 UBRR (H), UBRR (L)과 같은 두 개의 8 비트 레지스터로 구성됩니다.

전송 속도의 공식은 다음과 같습니다.

BAUD = 어둡게 / (16 * (UBBR + 1))

UBRR 레지스터의 공식은 다음과 같습니다.

UBRR = 어둡게 / (16 * (BAUD-1))

AVR 마이크로 컨트롤러의 주파수는 16MHz = 16000000입니다. 전송 속도를 19200Bps로 가정하겠습니다.

UBRR = 16000000 / (16 * (19200-1))

UBRR = 16000000 / (16 * (19200-1))

UBRR = 51.099

결국 보오율 찾기

BAUD = 16000000 / (16 * (51 + 1))
UBRR = 19230bps

2 단계: 데이터 모드 선택

데이터 전송 모드, 시작 비트 및 정지 비트 및 문자 크기는 제어 및 상태 레지스터 UCSRC에 의해 설정됩니다.

데이터 모드 선택

데이터 모드 선택

Step3 : 데이터 전송 모드 선택

동기 및 비동기 모드는 제어 상태 레지스터의 UMSEL 비트에 의해 선택됩니다. UMSEL = 0을 지정하면 USART는 비동기 모드에서 작동하고 그렇지 않으면 동기 모드에서 작동합니다.

데이터 전송 모드 선택

데이터 전송 모드 선택

Step4 : 시작 비트 및 중지 비트

시작 비트와 정지 비트는 데이터를 직렬로 보내고받는 방법입니다. 일반적으로 모든 데이터 명성은 하나의 통계 비트와 하나의 정지 비트로 구성되지만 AVR 마이크로 컨트롤러에는 데이터 처리를위한 시작 비트 1 개와 정지 비트 2 개가 있습니다. 추가 정지 비트는 약간의 추가 수신 처리 시간을 추가하는 데 유용 할 수 있습니다. 데이터 전송 속도가 빠른 경우 특히 유용하지만 데이터 전송 속도가 매우 빠르기 때문에 적절한 데이터를 얻지 못합니다. 따라서 적절한 데이터를 얻기 위해 두 개의 정지 비트를 사용하여 처리 시간을 늘릴 수 있습니다.

시작 비트 및 중지 비트

시작 비트 및 중지 비트

정지 비트 수는 제어 상태 레지스터 인 UCSRC의 USBS 비트에 의해 선택됩니다. 1 개의 정지 비트에 대해 USBS = 0, 2 개의 정지 비트에 대해 USBS = 1.

Step5 : 문자 크기 설정

경우와 같이 기본 마이크로 컨트롤러 데이터 바이트 (8 비트)를 한 번에 송수신합니다. AVR 마이크로 컨트롤러에서 UCSRC 레지스터의 UCSZ 비트로 각 프레임의 데이터 프레임 형식을 선택할 수 있습니다.

데이터 프레임 형식

데이터 프레임 형식

Step6 : 수신 된 데이터 저장

AVR 마이크로 컨트롤러는 데이터 송수신을위한 UDR 버퍼 레지스터로 구성됩니다. UDR은 데이터를 수신 (RXB)하는 데 8 비트가 사용되고 데이터 (TXB)를 전송하는 데 다른 비트가 사용되는 16 비트 버퍼 레지스터입니다. 전송 데이터 버퍼 레지스터는 해당 위치에 기록 된 데이터에 대한 UDR 레지스터의 대상이됩니다. 수신 데이터 버퍼 레지스터는 UDR 레지스터의 내용을 반환합니다.

Step7 : 송신기 및 수신기 활성화

송수신 데이터는 마이크로 컨트롤러의 UCSRA 레지스터에 의해 설정된 마이크로 컨트롤러의 RXC 및 TXC 핀에 의해 허용됩니다. 마이크로 컨트롤러가 데이터에 대해 설정 한이 플래그 비트는 수신 및 전송 (TXC = RXC = 1)을 통해 완료됩니다.

전송 속도 두 배

AVR의 USART 통신 전송 속도를 두 배로 늘릴 수 있습니다. 16 비트에서 8 비트까지의 마이크로 컨트롤러 UCSRA 레지스터의 U2X – 비트에 의해 효과적으로. 이 비트는 비동기 작업에만 영향을줍니다. 이 비트 (U2X = 1)를 설정할 수 있으면 전송 속도가 16 비트에서 8 비트로 감소하여 동기식 통신의 전송 속도가 두 배가됩니다.

이것은 데이터의 신속한 처리를위한 AVR 마이크로 컨트롤러의 고급 기능입니다.

USART 프로그램

모든 마이크로 컨트롤러는 특정 IDE로 사전 정의되며이 IDE를 기반으로합니다. 마이크로 컨트롤러는 임베디드 C로 프로그래밍됩니다. 또는 어셈블리 언어. AVR 마이크로 컨트롤러 프로그래밍은 AVR 스튜디오에서 개발했습니다. 또한 추가 정보가 필요한 경우 마이크로 컨트롤러 기반 프로젝트를 구축하는 단계 , 또는이 주제에 대한 자세한 정보는 아래에 댓글로 문의 할 수 있습니다.