모든 설명은 atmega328 기준으로 설명하고 있습니다.

 

 마이크로컨트롤러의 주 목적은 주변 환경으로부터 데이터를 획득하고 이를 처리하여 시스템을 제어하는 목적으로 사용된다. 하지만 주변 환경으로부터 획득하는 데이터는 모두 아날로그 데이터이고 마이콤(줄여서 말함)에서 처리하려는 데이터는 디지털 데이터이다.

 HIGH 또는 LOW의 2진 디지털 데이터로 처리하기 때문에 아날로그 데이터를 디지털 데이터로 변환해야하는 작업이 필요하다. 이러한 장치를 아날로그-디지털 변환기(Analog-Digital Converter, ADC)라고 한다.

 

아날로그-디지털 변환 블록 다이어그램

 

 ATmega328에는 아날로그 데이터를 디지털 데이터로 변환하기 위한 10비트 해상도의 ADC가 포함되어 있기 때문에 0~1023까지의 디지털 값 변환이 가능하다. 그리고 아날로그 입력은 C포트 6개에서 받을 수 있고 MUX로 연결되어 있으므로 한 번에 하나의 아날로그 입력만 디지털로 변환할 수 있다. 

 

이러한 ADC에 변환에 대해서 자세히 알아보기 위해서 ADC의 각각의 레지스터에 대해 살펴보자.

 

▶ ADMUX

 - ADMUX 레지스터는 AD 변환을 위한 기준 전압과 입력 채녈을 선택하기 위해 사용된다.

'MCU' 카테고리의 다른 글

Atmega8(A) 특징  (0) 2019.08.10
Atmega8(A) 소개  (0) 2019.08.10
UART(Universal asynchronous receiver/transmitter)  (0) 2019.07.30
시리얼 통신(Serial Communication)  (0) 2019.07.29
MCU란?  (0) 2019.07.15
블로그 이미지

Mr.HB

프로그래밍 이야기

,

 MCU에서 흔히 쓰이는 데이터 전송 방식인 UART에 대해 자세히 알아보자. UART란 병렬 형태의 데이터를 직렬 형태의 데이터로 바꾸어서 직렬 통신을 할 수 있게 해주는 하드웨어의 일종이다.

 정리를 하자면 PC나 MCU내에서는 데이터가 병렬 형태로 움직이는데, 이런 데이터들을 다른 기기와 직렬 방식으로 통신을 할 수 있게 해주는 집적회로이다. 우리 말로 번역하면 '범용 비동기 수신기/송신기' 인데 각각 한 단어씩 살펴보기로 하자. 한 번 더 강조하자면 병렬 데이터를 직렬로 전환해주는 하드웨어이다.

 

UART 표준 그림

 

  • Universal : 트랜지스터의 사용으로 쉽게 만들 수 있는 시스템

  • Asynchronous(비동기) : 서로 Baud Rate를 프로토콜로 정해 놓고 데이터 통신하는 것

    ※ 하나의 글자가 만들어 지는데 시간이 걸리는데 그렇기 때문에 송신자는 글자를 보내면서 데이터를
    보내고 있다는 신호는 지속적으로 보내게 된다. 이를 동기 통신(Synchronous Communication)이라 한다.

  • Receiver-Transmitter : 하나의 장치에 송신기와 수신기를 붙여 놓은 것

 이처럼 단어의 뜻은 짧게 이런 뜻들을 담고 있다. 여기서 프로토콜에 대해 조금 더 살펴보겠다.

 

 

일반적인 비동기 프로세서 통신

 

 위의 그림을 보면 처음 Start bit가 있고 마지막에는 Stop bit가 있다. High였다가 송수신이 시작되는 시점인 Start bit에서 Low가 되고 8비트 송신 후 Parity bit를 선택해서 넣을 수 있다. 그리고 마지막 Stop bit에서 다시 High가 된다. 마지막 Stop bit에서는 다음 데이터와의 시간 간격을 위해 1~2bit로 설정할 수 있다.

 

 그래서 8비트 데이터를 송수신했을 때 10~12bit까지 시간을 소모할 수 있다. 그리고 Baud Rate에 따라서 한 칸 한 칸 시간을 결정할 수 있다. 예를 들어 9600bps는 1초에 9600칸 또는 bit를 보낼 수 있다는 뜻이다.

 Baud Rate : 이론적인 통신 단위로 초당 신호(Signal) 요소의 수를 나타낸다.

 

 다음은 UART의 장단점에 대해 알아보자.

장 점

  • 하드웨어가 간단해서 거의 모든 장치에서 UART를 지원하는 범용성이 크다.

  • 송신과 수신 동시에 가능한 전이중(full-duplex) 방식이다.

  • RS-232라고도 불리며 RS-232는 UART의 프로토콜 중 하나이다.

 

 단 점

  • 1:1 통신만을 지원하기 때문에 여러 개의 주변장치를 연결하기 위해서는 많은 핀이 필요하다.

  • 서로 동일한 속도를 맞추고 시작해야 한다.

  • Voltage level이 동일해야 한다.

 이처럼 단점도 있지만 예전부터 제일 많이 쓰인 간단하고 많은 장치에서 쓰이는 방식이다.

'MCU' 카테고리의 다른 글

Atmega8(A) 특징  (0) 2019.08.10
Atmega8(A) 소개  (0) 2019.08.10
ADC(Analog-Digital Converter)  (0) 2019.08.05
시리얼 통신(Serial Communication)  (0) 2019.07.29
MCU란?  (0) 2019.07.15
블로그 이미지

Mr.HB

프로그래밍 이야기

,

 직렬 통신이라고도 하며 연속적으로 통신 채널이나 컴퓨터 버스를 거쳐 한 번에 하나의 비트 단위로 데이터를 전송하는 과정을 의미한다. 이러한 통신에는 직렬과 병렬 두 가지 방식이 존재하고 다음으로 동기와 비동기 시리얼 통신으로 나뉜다. 아래 그림을 보고 한 번 알아보자.

병렬(Parallel) 통신
직렬(Serial) 통신

 위의 그림이 병렬 통신 방식이고 아래 그림이 직렬 통신 방식이다. 병렬 방식은 여려 개의 데이터 선으로 한 번에 데이터를 보내기 때문에 짧은 시간에 많은 데이터를 보낼 수 있지만 그에 비례하여 많은 데이터 선의 설치와 관리를 해야 되기 때문에 비용이 그만큼 많이 들게 된다.

 그에 반해 직렬 통신은 한 개의 데이터 선으로 한 개의 비트만을 보내기 때문에 병렬보다 시간이 많이 걸리지만 그만큼 단순하고 간단한 구조를 갖고 있다. 요즘 I/O 단자들은 그렇게 크지 않기 때문에 직렬이 주로 많이 이용되고 있다.

 다음은 동기 통신과 비동기 통신에 대해 알아보자.

동기 시리얼 통신
비동기 시리얼 통신

 동기 시리얼 통신은 각각의 PC가 이러한 신호 주기로 보내겠다는 약속(Clock)을 하고 데이터를 전송하는 방법이다. 그렇기 때문에 데이터를 보내는 데이터 선 말고도 클럭 주기를 맞추는 클럭선이 하나 더 필요하다. 미리 보내는 주기(Clock)를 맞추고 데이터를 주고받기 때문에 오류가 적고, 빠른 데이터를 통신할 수 있다.

 비동기 시리얼 통신은 따로 주기를 정하지 않고 시작과 끝을 알려주고 데이터를 전송하는 방법이다. 데이터 선만 있으면 되기 때문에 매우 단순하고 빠르게 통신 회선을 구성할 수 있다. 하지만 동기 시리얼 통신에 비해 안정성이나 속도가 느리다.

 

 다음으로 시리얼 통신에는 여러가지 종류들이 있다. 그 종류들에 대해 알아보자. 파랑색은 장점, 빨간색은 단점이다.

UART(Universal Asynchronous Receiver/Transmitter) : 컴퓨터나 기타 주변장치의 시리얼 포트를 이용하는 시리얼 통신 방식

※ '범용 비동기화 송수신기'라고 불리며 병렬 데이터의 형태를 직렬 방식으로 전환하여 데이터를 전송하는 컴퓨터 하드웨어의 일종이다

  • 정보 교환을 위해 송신과 수신 2개의 데이터 핀 연결을 필요로 함

  • 송신과 수신은 동시에 할 수 있는 전이중(full-duplex) 방식

  • 한 번의 하나의 장치만 연결이 가능한 1:1 통신 방식

  • 여러 개의 주변장치를 연결하기 위해서는 많은 수의 데이터 핀이 필요함

  • 다른 방식에 비해 단점이 많지만 간단하면서도 오랫동안 사용된 방식으로 많은 주변장치들이 지원함

    • Ex) RS - 232, RS - 422, RS - 485와 같은 통신 표준과 함께 사용

 

 SPI(Serial Peripheral Interface) : 짧은 거리에서 주변장치와 고속으로 정보를 교환하기 위해 주로 사용

  • 3개의 데이터 핀 연결과 1개의 제어 핀 연결로 4개의 핀 연결 필요

  • 3개의 데이터 핀 중 2개는 데이터 송수신, 하나는 동기화를 위한 클록 신호 수신에 사용

  • 동일한 SPI 포트를 통해 여러 개의 장치를 연결하는 1:n 통신이 가능함

  • 하나의 장치를 마스터(master), 다른 장치들은 슬레이브(slave)로 동작함

  • 제어 연결 핀을 통한 하드웨어적인 방식을 사용함

  • 고속의 데이터를 안정적으로 전달하고 여러 개의 장치들이 포트를 공유할 수 있음

  • 제어 핀의 수가 연결된 장치의 수에 비례하여 증가함

 

 I2C(Inter-Integrated Circuit) : 짧은 거리에서 주변장치와 저속으로 정보를 교환하기 위해 주로 사용

  • 2개의 데이터 핀 연결만을 필요로 함

  • 1:n으로 연결된 마스터-슬레이브 구조의 통신 방식

  • 2개의 데이터 핀 중 1개는 데이터 전송, 하나는 클록 신호에 사용

  • 송수신이 동시에 이루어질 수 없는 반이중 방식

  • 장치 구별을 위해 소프트웨어적인 주소를 사용하므로 별도의 제어 핀 연결은 필요없음

  • I2C 장치의 수가 증가하여도 필요로 하는 핀의 개수는 증가하지 않음

'MCU' 카테고리의 다른 글

Atmega8(A) 특징  (0) 2019.08.10
Atmega8(A) 소개  (0) 2019.08.10
ADC(Analog-Digital Converter)  (0) 2019.08.05
UART(Universal asynchronous receiver/transmitter)  (0) 2019.07.30
MCU란?  (0) 2019.07.15
블로그 이미지

Mr.HB

프로그래밍 이야기

,