1. 직렬통신과 병렬통신의 다른 점은 무엇인가? - 장점/단점 비교, 동작 원리 차이점 등에서 기술하시오.
직렬통신은 컴퓨터와 외부 장비 간의 통신으로 원거리 전송에 쓰이며 데이터 전송량이 적고 기술이 단순하여 비용이 적게 든다. 한 번에 1개의 비트 단위로 전달되어 1개의 신호선만으로 전송이 가능하다.
(예: RS232, USB)
병렬통신은 컴퓨터 내 장치 간의 통신으로 단거리 전송에 쓰이며 데이터 전송량이 많고 기술이 복잡하여 비용이 많이 든다. 한 번에 많은 데이터를 전달할 때 사용한다. n비트 메시지가 n개의 경로를 통해 병렬로 전송이 되어 많은 신호선이 필요하다.
(예: IDE)
2. RS-232란 무엇인가? 간략한 개념을 3줄 정도로 기술하시오.
RS-232란 직렬통신의 표준 규약 중 하나로 비동기 직렬 통신에서 많이 쓰인다.
DTE(데이터 단말 장치)와 DCE(데이터 통신 장치) 간의) 통신을 위한 규약이다.
개발 중인 보드와 PCPC 간의 통신에서 많이 사용되어 보드 개발의 초기 단계에서 보드의 기능을 점검하는 작업을 한다.
3. UART란 무엇인가? 그 기능을 3개 이상 제시하시오. 이 장치를 볼 수 있는가? 볼 수 있다면 어느 곳에?
UART는 직렬통신을 위해 필요한 작업을 전담하는 제어기로 송수신 데이터의 직병렬 변환 , 호스트와의 병렬 인터페이스 담당, 데이터 프레임의 가공 및 오류 점검, 통신 프로토콜의 설정하는 기능을 한다.
아두이노 Uno에 UART 직렬통신 제어기가 1개 있으며 이는 PC와의 통신을 담당한다.
4. RS-232를 사용하는 두 개의 통신 장치에서 통신을 위해 사전에 설정해야 할 내용을 제시하시오.
(1) 시작 비트(start bit) : 받는 측이 보내는 측의 시작점을 알아내는데 꼭 필요한 신호.
평상시 데이터 선이 H를 유지하다가 데이터를 보낼 일이 있으면 정해진 시간 길이만큼 L로 유지한다. 받는 측에서는 이 신호가 L이 되면 송신이 시작되었다는 것을 알 수 있고 이 시점 이후로 일정 간격으로 정해진 데이터 길이만큼 데이터를 샘플링할 것이다.
(2) 정지 비트(stop bit) : 데이터 전송의 끝을 의미하는 비트.
받는 측에게 데이터 처리를 할 수 있는 시간을 주기 위해 추가된다. 송수신 양측에서 데이터 비트의 길이를 프로토콜 정보에 의해 알고 있기 때문에 수신받는 쪽에서 시작 비트와 정지 비트에 의해 데이터의 처음과 끝을 인지할 수 있다.
(3) 패리티 비트(parity bit) : 데이터를 보낼 때 미리 데이터 비트의 1의 개수가 짝수인가,
홀수인가를 검사하여 이에 관한 정보를 보낸다. 수신 받는 쪽에서 자신이 받은 데이터가 정상적으로 도달하였는지 판단할 수 있다.
5. 두 개의 RS-232 장치가 통신하기 위해서 연결해야 할 최소의 신호선을 밝히고 그 연결도를 제시하시오.
TxD : 송신 데이터가 전송되는 선로로 DTE에서 출력하여 DCE로 입력된다.
RxD : 수신 데이터가 전송되는 선로로 DCE에서 출력하여 DTE로 입력된다.
GND : 접지선으로 양측의 기준 전압을 맞추기 위해 필요하다.
6. UART가 외부에서 오는 RS-232 직렬 데이터 신호를 해석하여 8비트 병렬 데이터를 만들 어 내는지 직렬 데이터를 병렬 데이터로 변환하는 방법을 설명하시오.
평상시 데이터를 보내지 않는 idle state 상태는 논리 1로 약속되어 있으며 전송을 시작할 때 송신단에서 전송이 개시된다는 것을 start bit를 통해 알리고 데이터 비트는 LSB부터 전송이 시작된다. 8비트의 데이터 전송이 끝나면 전송한 데이터에 부합하는 패리티 비트를 보낸다. 맨 마지막에 전송이 끝났음을 알리는 stop 비트를 전송한 후 다시 idle 상태에 들어간다. UART의 송신부는 병렬 데이터를 직렬 데이터로 변환하고 수신부는 직렬 데이터를 병렬 데이터로 변환한다.
7. 터미널이란 무엇인가? 터미널 에뮬레이터란 무엇인가? (즉, 프로그램이 수행하는 기능은 무엇인가?) 터미널 에뮬레이터의 장점은 무엇인가?
터미널은 대형 컴퓨터와 접속하려는 사용자를 위한 단말장치로 모니터와 키보드 입력 장치를 갖추고 있다.
터미널 에뮬레이터는 PC의 프로그램으로 터미널과 똑같은 역할을 수행한다.
터미널 에뮬레이터를 사용하면 전송속도, 데이터 프로토콜의 설정 변경 등이 자유롭고 PC에서 사용자가 입력한 문자 정보를 다양하고 편안한 방법으로 입력할 수 있다.
(예: 시리얼 모니터에서는 enter키를 입력해야 정보가 전달되었으나 에뮬레이터에서는 PC를 사용하는 것처럼 키보드의 자판을 입력하자마자 정보가 바로 아두이노로 전달되고 입력창과 출력 창을 한 개의 창으로 사용할 수 있다.)
8. 아두이노 시리얼 모니터는 터미널 에뮬레이터라 할 수 있는가? 일반 터미널 에뮬레이터 (예를 들어 테라텀)와 다른 점을 무엇인가?
아두이노 시리얼 모니터는 터미널 에뮬레이터의 아두이노 버전이다.
시리얼 모니터와 달리 일반 터미널 에뮬레이터는 IDE의 프로그램 업로드를 방해함으로 업로드 시 프로그램의 수행을 종료해야한다. 시리얼 모니터는 제어 문자 CR과 LF에 대해 올바르게 출력하지 않지만 Tera Term은 setup 메뉴의 설정에 따라 줄 바꾸기 동작을 수행한다.
9. 아두이노와 터미널 에뮬레이터를 이용하여 ‘\n’, ‘\t’, ‘\r’의 ASCII 코드를 알아내는 방안 에 대하여 기술하시오.
아두이노 loop()부분에서 if(Serial.availabe()>0)을 통해 데이터가 들어온 것이 있으면
int a = Serial.read(); 는 터미널 에뮬레이터에서 입력한 데이터를 읽어 int형 변수 a에 저장하고 Serial.print(a, HEX); 함수를 이용해 a에 저장된 값의 ASCII 코드를 터미널 에뮬레이터에 출력한다. 터미널 에뮬레이터 Tera Term에서 tab키를 입력하면 ‘\t’의 ASCII 코드 9가 출력된다. Tera Term setup 메뉴의 줄 바꿈 설정에서 송신(transmit)을 LF로 바꾸고 enter키를 입력하면 ‘\n’의 ASCII 코드 A가 출력되고 송신을 CR로 바꾸고 enter키를 입력하면 ‘\r’의 ASCII 코드 D가 출력된다.
10. 흐름 제어를 하지 않으면 어떤 불편한 점이 생길 수 있는가? 흐름 제어를 이를 구현하는 2가지 방안에 대하여 제시하고, 각각의 방법에 대한 장단점에 대하여 기술하시오.
흐름 제어를 하지 않으면 송신 측이 수신 측의 처리 속도보다 더 빨리 데이터를 보내거나 수신 측 처리량보다 더 많은 데이터들을 전송할 때 데이터 수신에 실패하는 상황이 일어날 수 있다. 흐름 제어는 H/W와 S/W 방식의 제어로 나눌 수 있다.
(1) H/W 흐름 제어는 송신 측이 제어하며 RTS/CTS 신호와 DTR/DSR 신호가 활용된다.
DTE가 송신하고자 할 때 DCE에게 RTS를 보내면 DCE는 받을 수 있으면 CTS를 송신한다. 전이중 통신에서는 DTE가 항상 데이터를 수신할 수 있는 상태로 있다고 보고 RTS를 무시하기도 한다.
DTR은 DCE가 DTE의 전원 인가 여부를 확인 할 수 있고 DSR은 DTE가 DCE의 전원 인가 여부 및 동작 가능 여부를 확인할 수 있다.
H/W 흐름 제어는 RxD, TxD, GND 외에 추가적으로 RTS, CTS, DTR, DSR 신호선을 연결해야하는 단점이 있다.
(2) S/W 흐름 제어는 수신측이 ASCII 코드의 제어문자 영역의 코드를 이용하여 전송을 허
가/금지한다. 데이터 선 이외는 별도의 신호선이 필요 없는 장점이 있다. H/W 신호 혹은 제어 문자를 이용하여 XON(보내도 좋다), XOFF(보내지 말라) 제어 코드를 상대편에 제공한다. 부호화된 문자로 비트 통신에서 인식되지 않을 가능성이 있다.
'전공 공부 > 아두이노프로그래밍' 카테고리의 다른 글
적외선 장애물회피센서, 내장 LED (0) | 2021.01.18 |
---|---|
터미널 에뮬레이터를 이용하여 PC 키보드 1~8의 숫자 키로 입력을 받아 한 옥타브(낮은 ‘도’~높은 ‘도’)를 연주하는 프로그램을 제작하시오. 이때 숫자를 입력할 때 enter키 입력하지 않아도.. (0) | 2021.01.17 |
serialEvent() 함수를 사용하여 터미널에서 입력한 문자를 터미널 에뮬레이터로 반환하는 프로그램 (0) | 2021.01.17 |
터미널에서 소문자를 입력하면(enter를 치지 않아도 입력됨) 아두이노가 이를 받아 대문자로 변환하여 다시 터미널로 출력하는 아두이노 프로그램 (0) | 2021.01.17 |
4x4 키패드 모듈 (작동 오류) (0) | 2021.01.17 |