728x90
반응형

만져보는 임베디드 시스템/아두이노 소프트웨어 22

아두이노 소프트웨어-xxii. SPI 라이브러리

안녕하세요 제타지니입니다. 지난 번의 포스트를 통해 몇 가지 짚고 넘어가겠습니다. SPI 통신(Serial Peripheral Interface)는 Master - Slave 간의 1:N 방식의 통신입니다. * 최소 4개의 연결선 (MOSI, MISO, SCLK, SS)가 필요하며, 슬레이브가 한 개 늘어날 때마다 SS 선도 한개씩 추가. * 모든 Slave 기기에 대하여 MOSI, MISO, SCLK는 공통 * 전이중(full-duplex)방식으로 송신과 수신이 동시에 이루어지기에 I2C 통신에 비해 빠르다. * 아두이노에서는 일반적으로 짧은 거리의 고속 데이터 통신이 필요한 경우 SPI를 사용하며, 복잡한 통신의 경우에도 사용됨. * MISO(Master In Slave Out), MOSI(Maste..

아두이노 소프트웨어-xxi. I2C를 위한 WIRE 라이브러리

안녕하세요 제타지니입니다. 오늘은 Wire Library가 주제입니다. 일전에 포스트에 올렸던 대로 아두이노는 Serial 통신 이외의 두 가지 통신 I2C 통신과 SPI 통신을 지원한다고 하였습니다. 이해를 돕기 위해서 I2C 통신과 SPI 통신에 대한 개념을 다시한 번 여기에서 보고 와주시길 바랍니다. Wire 라이브러리는 I2C 장치들 사이의 통신 기능을 구현해 놓은 아두이노의 기본 라이브러리들 중 하나입니다. I2C 통신의 경우 1:1 통신을 하는 Serial 통신과는 다르게 1:n 통신을 하고 있습니다. 즉, 이 방식은 Wire 라이브러리 내의 함수에도 동일하게 적용이됩니다. Wire 라이브러리의 실제 클래스 이름은 TwoWire이며, TwoWire 클래스의 전역 객체는 Wire로, 실제로는 W..

아두이노 소프트웨어-xx. I2C와 SPI 통신

안녕하세요 제타지니입니다. 이번 포스트의 주제는 직렬/병렬 통신을 제외한, 다른 통신들입니다. 아두이노 - PC 사이에서 사용되는 통신으로는 Serial 통신을 제외하고도 다른 통신이 몇 가지 있는데요. 이번 포스트에서는 그 '다른'통신들을 알아보려고 합니다. 바로, I2C와 SPI 통신입니다. 하나하나 차근차근 설명히 해볼게요 I2C(Inter-Integeracted Circuit)와 SPI(Serial Peripheral Interface)는 마이크로 컨트롤러와 주변 장치 사이에 디지털 정보를 간편하게 전송할 수 있는 방법을 제공하기 위해 만들어진 통신 프로토콜입니다. 아두이노 소프트웨어에는 기본적으로 I2C와 SPI 통신을 위한 라이브러리인 WIRE라이브러리와 SPI 라이브러리가 포함되어있습니다. ..

아두이노 소프트웨어-xviii. 아두이노 String 클래스 - String Class

안녕하세요 제타지니입니다. 이번 포스트에서는 String class에 대해서 다루어 보겠습니다. 이 포스트는 [아두이노 상상을 스케치하다 - 허경용 저]에서 참고하였습니다. 이번의 포스트는 아두이노에서 자주 쓰이는 Class 중의 하나인 String 클래스입니다. String 클래스는 바로.... '문자열'을 다루기 위한 클래스입니다. 아두이노의 기반을 이루는 C++에서는 문자열을 다루기 위한 클래스를 제공하고 있으며, 아두이노 역시 String이라는 클래스를 통해서 문자열을 쉽게 처리할 수 있도록 도와줍니다. (C언어 에서는 문자열을 다루기 위한 데이터형이 별도로 정의되어 있지 않고, 문자 배열을 이용해서 문자열을 처리하지만, 문자 배열로 문자 열을 다루는 것은 많이 번거롭고 많은 주의를 요한다는 것을..

아두이노 소프트웨어-xix. Serial 통신

안녕하세요 제타지니입니다. 오늘은 아두이노의 시리얼 통신에 대해서 더 다루어보겠습니다. 이전에 Serial 클래스를 업로드 하면서 Serial 통신에 대한 개념 포스트가 필요하다는 것을 알게되었습니다. 그래서 이번 포스트에서는 Serial 통신에 대해서 공부하고, 그에 대한 내용을 담아 업로드 하려고 합니다. Serial 통신 Serial = 직렬, 즉 직렬 통신이라는 뜻이지요. 이 직렬통신은 아두이노 - PC 사이에서 뿐만이아니라, 여러 기기에서 사용되는 통신입니다. 기본 의미부터 살펴보자면, [직렬 통신]...? 그럼 [병렬 통신]도 있나요..? 있죠. 있습니다. Parallel(병렬) 통신이라고 합니다. 둘의 차이란... 무엇일까요? 쉽게, 우리가 물리학에서 나오는 '전기' 파트에서 직렬과 병렬을 ..

아두이노 소프트웨어-xvii. 아두이노 Serial 클래스 - Serial Class

안녕하세요 제타지니입니다. 오늘은 시리얼 통신에 대해서 보겠습니다. *시리얼 통신이란 무엇일까?(Serial communication) Serial(직렬) 통신. RS 232통신이라고 합니다. 직렬통신이라고 함은 컴퓨터와 기기의 1:1 통신입니다. 한번에 한 비트씩 통신을 합니다. Serial 통신은 USART(Universal Synchronous Asynchronous Receiver Transmitter, 동기 + 비동기 방식 통신) 또는 UART(Universal Asynchronous Receiver Transmitter)로 알려진 방식으로 RS-232C 프로토콜에 정의된 내용 중에서 데이터 송수신을 위한 세 개의 핀, RXD(receive data, 수신 데이터), TXD(Transmit da..

아두이노 소프트웨어-xvi. 함수 - 인터럽트 함수

안녕하세요 제타지니입니다. 이번 포스트에서는 인터럽트 함수를 보겠습니다. 인터럽트를 설명하자고 하면 두 가지 종류가 필요합니다. 1. 인터럽트 함수 2. 외부 인터럽트 함수 자 보시죠. 1. 인터럽트 함수 *interrupts() 매개변수, 반환값 모두 없는 함수입니다. noInterrupts 함수에 의해 금지된 인터럽트의 발생을 허용합니다. 인터럽트를 허용하게 되면, 작업의 순서와 시간에 변화가 있을 수 있습니다. #define interrupts() sei() 입니다. sei() 함수는 전역적으로 인터럽트 발생을 허용해 주기 위해 사용하는 AVR 마이크로 컨트롤러 함수 입니다. *noInterrupts() 매개변수, 반환값이 모두 없습니다. 인터럽트 발생을 금지시킵니다. 이후 interrupts() ..

아두이노 소프트웨어-xv. 함수 - 인터럽트 개념

안녕하십니까 제타지니입니다. 오늘은 인터럽트의 개념에 대해서 설명하겠습니다. 인터럽트라는 놈이 있습니다. 이놈은 너무나도 악독해서, 프로세서가 어떤 명령을 수행중인 중간에 끼어들죠. 사실 악독한 놈이라기 보단, 하드웨어와 소프트웨에서 상당히 중요한 분이시며, 많이 사용되어지는 기법 중의 하나입니다. 자 한번 알아보시죠 인터럽트, Interrupt 방해하다. 중단시키다. 라는 뜻을 가진 영어입니다. 뜻 그대로 현재 수행중인 프로그램을 중단시키는 놈이지요. 그림으로 조금 더 쉽게 알아보자면, 그림으로 나타내야죠. 그러니까 이대로 설명을 드리자면, 프로그램이 실행되는 도중에, 인터럽트가 발생하면 실행중인 프로그램을 잠시 멈추고 인터럽트 서비스 루틴, 즉 인터럽트가 걸렸을 시에 동작되는 프로그램을 실행시키고, ..

아두이노 소프트웨어-xiv. 함수 -비트 조작 함수

처음 공부할 때 비트 조작 함수를 보고, 도대체 이것은 무엇인가... 했었죠. 바이트 반환? 무슨 바이트???? 비트를 읽어?? 왜?? 비트 기록??? 등등 알수 없는 언어 투성이... 자 그래서 이번 포스트에서는 이 비트 조작함수에 대해서 알아보고, 어떻게 쓰는지 알아보겠습니다. 설명은 간단합니다. 오늘 설명할 함수는 lowByte highByte bitRead bitset bitWrite bitClear bit 7가지 입니다. lowByte(x) 데이터(x)의 최하위(Low) 바이트(Byte)를 반환합니다. highByte(x) 데이터(x)의 두 번째 최하위 바이트(Byte)를 반환합니다. bitRead(x, n) 데이터(x) n: 읽어낼 비트 위치, LSB(Lease Significant Byte)..

아두이노 소프트웨어-xiii. 함수 -난수 생성 함수

안녕하세요 제타지니입니다. 오늘은 난수 생성 함수에 대해서 다루어 보려고 합니다. 난수생성함수에 대한 이야기는 생각보다 길어질 것 같아서 이번 포스트에서 하겠습니다. 컴퓨터는 난수 생성에 굉장히 취약합니다. 왜냐하면 컴퓨터란 녀석은 '정해진 명령'을 따라 수행하는 녀석이기 때문에 '예외'에 취약한 성격을 보이기 때문이지요.(컴퓨터의 특성 Deterministic, Deterministic Algorithm을 사용하기 때문) 그래서 컴퓨터로 진짜-난수(True-random number)를 만드는 것은 사실상 불가능합니다. 하지만 가짜-난수(pseudo-random number)를 만드는 것은 가능하지요! 이 가짜-난수를 진짜-난수처럼 보이게 하면 됩니다! 가짜-난수는 다음과 같은 특성을 지니지요. 1. 일..

728x90
반응형