atmega328(아두이노 미니 이용) (13) 썸네일형 리스트형 스터디 상생플러스 5 - 1 (USRAT 통신) USRAT 통신은 블루투스 모듈을 사용하기 위한 필수 통신 기법입니다. 또한 아두이노는 Serial이라는 클레스가 있고, 이는 USART통신을 가능하게 해줍니다. 저희는 블루투스 모듈을 사용할 것이기 때문에 USART 통신을 꼭 다뤄야만합니다. 통신에 필요한 것은 통신 속도가 있습니다. 통신 속도의 단위는 baud rate 즉, 초당 몇 비트를 송수신하는 가에 관한 단위입니다.(bit/s와 동일) 아두이노에는 UASRT통신과 관련하여 3개의 레지스터가 있습니다. UCSR0A, UCSR0B, UBRR0, UDR0 UCSR0A 번호 7 6 5 4 3 2 1 0 이름 RXC0 TXC0 UDRE0 FE0 DOR0 UPE0 U2X MPCM0 초기값 0 0 1 0 0 0 0 0 여기서 우리가 봐야할 것은 UDR0만.. 스터디 상생플러스 4 - 1 (ADC 이론) 임베디스 기기들은 디지털 신호를 다룰 수 있지만, 반대로 아날로그 신호도 다룰 수 있어야합니다. 자연에 존재하는 온도, 밝기, 소리 등의 값들은 0과 1로만 표현되는 값들이 아닌, 1.1, 2.1, 0.5453등과 같은 연속적인 값들을 갖고 있기 때문입니다. 이러한 이유로 임베디드 기기의 메인 칩인 MCU에는 아날로그 값을 읽을 수 있어야합니다. 하지만 MCU자체는 전자기기이기 때문에 0, 1으로만 동작하고 아날로그 값은 0.1등과 같은 값이 있기 때문에 아날로그 값을 읽을려면 아날로그 값을 디지털 값으로 바꿔주는 장치가 필요할 것입니다. ADC는 Analog to Digital Converter의 약자로, 글자 그대로 아날로그 값을 디지털 값으로 변환해주는 보조 보조 모듈입니다. ADC란 ADC는 위에.. 스터디 상생플러스 3 - 1 (PWM 이론) MCU 제어에서 I/O포트를 이용하여 HIGH(5v), LOW(0v) 두 상태만 출력할 수 있는 디지털 출력도 있지만, 그 중간 상태인 1.1v ~ 4.9v등의 값을 출력하는 아날로그 출력도 있습니다. 하지만 우리가 사용하는 Atmega328에는 그런 기능이 없습니다. 대신 PWM이라는 방식으로 아날로그 출력을 비슷하게 구현할 수 있습니다. PWM이란 PWM은 Pulse Width Modulation의 약자로 펄스(신호)의 On/Off 시간을 조절하는 제어를 의미합니다. PWM은 주기적으로 반복되는 On/Off 시간을 조절하여 아날로그 비슷한 신호를 만들어냅니다. 예를 들어 LED의 밝기를 최대 밝기의 50%만으로 밝히고 싶다면 On시간을 50%, Off시간을 50%로 아주아주 빠르게 깜박이면 사람의 눈.. 스터디 상생플러스 2 - 3 (Atmega328 I/O제어 실습) 앞에서 배운 레지스터는 다음과 같습니다. DDRx : 입출력 방향을 결정하는 레지스터 PORTx : 출력 신호를 결정하는 레지스터 PINx : 입력된 값이 저장되어 있는 레지스터 이를 통해서 간단하게 LED를 On/ Off하는 코드를 알아보겠습니다. 예제 코드 1 LED ON LED가 PB0번에 연결되어 있다고 가정합시다. LED를 On하기 위해서는 다음과 같은 과정이 필요합니다. 1. PB0를 출력 모드로 설정한다.(DDRB 이용) 2. PB0를 HIGH상태로 바꾼다.(PORTB 이용) 1번 과정은 다음 코드를 통해 구현할 수 있습니다. DDRB |= (1 스터디 상생플러스 2 - 2 (Atmega328 I/O제어 이론) 우리가 다룰 MCU는 Atmega 시리즈 중에서 아두이노의 MCU인 Atmega328을 기준으로 얘기할 예정입니다. 이번 장부터는 여려워질 수 있습니다. 가능한 모든 원리를 기술할 거지만, 궁극적인 목표는 MCU 다루기에 초점이 맞춰져 있기 때문에, 원리 부분은 넘기셔도 괜찮습니다. I/O 제어란 입력(Input)과 출력(Output)을 제어하는 것이며, Input은 센서 값, 버튼 누름 감지 등이 있으며 Output은 모터 동작, LED 동작, LCD 글자 띄우기 등이 있습니다. 별거 아닌 기능처럼 보이지만, 모든 제어의 기초가 되는 제어이며 위에서 든 예시 외에도 수많은 전자 장비들을 제어할 수 있습니다. 출력 MCU는 I/O 레지스터(특수)라는 공간에 데이터를 넣으면, 하드웨어는 자동으로 이를 읽어.. 스터디 상생플러스 2 - 1 (Atmega328 I/O 방향 설정 이론) 다음 포스트에서는 I/O 제어 방법을 다룰 예정입니다.(시기상으로 다음 포스트를 먼저 써버렸습니다.) 이번 포스트에서는 I/O 방향 설정하는 방법에 대해 알아볼 것입니다. I/O 방향이란? 입력과 출력입니다.(들어오는 것과 나가는 것) Atmega328에는 많은 핀들이 있습니다. 그 중에서도 PB0 ~ PB7, PD0 ~ PD7, PC0 ~ PC6라고 써있는 핀들은 입력(Input)과 출력(Output)을 할 수 있는 핀들입니다. 예를들어 PB0라는 핀은 입력 용도로, PB1이라는 핀은 출력 용도로 이런식으로 설정이 가능합니다. 이렇게 하면 PB0에는 센서들을 연결할 수 있고, PB1에는 LED나 모터 같은 것들을 연결할 수 있죠. 이때 입력(들어오는 방향), 출력(나가는 방향)을 I/O 방향이라고 부르.. 스터디 상생 플러스 1 - 2 (필요한 C언어 문법) 필요한 C언어 문법? 비트 연산자 기본적인 문법 비트 연산자 MCU를 다루기 위해서는 레지스터 들을 다룰 필요가 있습니다. 레지스터들에 값을 넣고, 빼고 할 때 1bit를 얻고 넣어야합니다. 비트 연산자는 5개로 or 연산 | and 연산 & not 연산 ~ shift연산 >>, 2 = 0 만약 이진수를 옮기는 상황이라면, 이 역시 1bit단위로 연산하면 됩니다. 1010 1 = 101 11111 >> 3 = 11 1 스터디 상생 플러스 1 - 1 (MCU에 대한 지식 습득) 다 이해할 필요 없고, 외울 필요도 없습니다. 그냥 이런 게 있고, 이런 방식으로 동작되는구나 정도만 알아도 괜찮습니다. MCU란 무엇인가요? MCU는 Micro Controller Unit의 약자로 글자 그대로 "작은 것을 제어하는 유닛(칩)"입니다. 프로그램에 따라 LED를 On/Off하거나, 모터를 움직이게 하거나, 센서에서 값을 읽는 등의 제어를 하는 작은 칩이라고 생각하시면 됩니다. 쉽게 이해하자면 수업 중에서 다룬 아두이노를 생각하시면 될 것같습니다. MCU? CPU? 대부분의 전자기기(냉장고, 드론, 로봇 등)에서 LCD나 모터, 센서들을 제어하는 기능을 담당하고 있습니다. 여기까지 읽었으면 컴퓨터의 CPU가 생각날 수 있는데요, MCU에도 계산하고 처리하기 위한 CPU가 내장되어 있어요. .. 이전 1 2 다음