본문 바로가기

MCU 제어/개념

(4)
DMA 방식 왜 DMA를 사용할까? 폴링은 프로그램에 의한 입출력 방식이여서 CPU가 계속 주변장치를 감시하기 때문에 CPU의 효율이 떨어진다고 했다. 이런 점을 개선하기 위해 CPU개입없이 주변장치와 상호작용하는 DMA(Direct Memory Access)가 개발되었다. 그럼 CPU개입이 적은 인터럽트를 사용하면 되지 않을까? 인터럽트를 사용하더라도 여전히 CPU는 데이터 전송을 하기위해 개입하게 되고, 입출력하는 시간이 길어지게 되면 CPU는 입출력하는 동안 다른 일을 못하게 된다. DMA 과정 그럼 CPU는 무엇을 하면 될까? CPU는 DMAC(DMA controller)에게 입출력 관련 정보만 주고 다른일을 계속 하면된다. 입출력 정보에는 뭐가 있을까? CPU는 DMAC에게 어떤 source를 보내는지, 목..
인터럽트(Interrupt) 방식 폴링 방식은 CPU의 효율이 떨어지는 것과 동시에 여러 작업이 진행될 때 하나의 작업이 실행이 지연되거나 실행할 수 없는 단점이 있다고 했다. 이러한 문제점을 해결할 수 있는 방식 중 하나가 인터럽트 방식이다. main문을 실행하고 있는 도중에 입출력 장치에서 필요할 때 마다 즉각적으로 CPU에게 인터럽트 신호를 전송하게 된다. 해당 인터럽트가 요청한 작업을 실행하기 위해 하고있는 동작을 멈추고 ISR(인터럽트 처리 루틴)으로 이동한다. ISR이 완료되면 CPU는 수행을 멈춘 곳으로 되돌아가 중지된 작업을 계속한다. 인터럽트 처리 과정 평소에는 노란색 LED와 파란색 LED를 번갈아가며 1초마다 깜빡이다가 스위치를 누르면 1초간 빨간색 LED를 켜고 다시 노란색, 파란색 LED를 계속 깜빡이게 개발한다고..
폴링(Polling) 방식 입출력의 상호작용을 할 때는 크게 3가지 방식이 존재한다. 오늘은 폴링을 먼저 알아보겠다. 폴링은 프로그램에 의한 입출력 방식이다. 데이터의 입출력이 CPU가 수행하는 프로그램의 입출력 명령에 의해 실행되고 입출력을 수행할 준비가 되었는지 알기 위해 CPU가 주변장치의 상태를 계속 감시한다. 폴링(Polling) 방식 CPU가 주변 입출력 장치들(키보드, 센서, LCD 등)에서의 변화를 지속적으로 계속 확인하고 그에 따라 프로그램을 처리하는 방식을 말한다. 프로그램은 쉽게 구현할 수 있지만 예를 들어 컴퓨터의 키보드를 폴링방식으로 구현한다고 생각해보자. 컴퓨터로 영화를 보고 있는데도 키보드를 치고 있는지 아닌지 계속 확인하는 작업을 한다면 CPU의 성능을 제대로 활용할 수 없다. 하지만 아두이노, AVR..
UART 통신 이론 UART(범용 비동기화 송수신기: Universal asynchronous receiver/transmitter)는 병렬 데이터의 형태를 직렬 방식으로 전환하여 데이터를 전송하는 컴퓨터 하드웨어의 일종이다. 출처 - 위키백과 UART이론을 정리하고 싶어서 위키백과를 쳐봤더니 쉽게 이해할 수 없었다. 하나하나 이해해보자. 동기 통신과 비동기 통신 먼저 비동기란 무엇일까? 비동기화란 별도의 클럭을 사용하지 않고 데이터를 사용한다는 뜻이다. 그렇기 때문에 동일한 데이터 전송 속도(Baud rate)로 맞추어야 통신을 할 수 있다. 뿐만 아니라 Start bit와 Stop bit를 통해 데이터의 시작과 끝을 알 수 있게해야한다. 오류를 검사하기 위해 추가로 패리티 비트를 설정할 수도 있다. 하지만 비동기 시리얼..