'Study'에 해당되는 글 106건
- 2012/04/24 폴링이란
- 2012/02/22 서보 모터 ( 앱솔루트, 인크리맨탈 )
- 2011/07/08 리소스란?
- 2010/09/02 C++ Builder란?
- 2010/08/18 커널이란
- 2010/08/11 큐
- 2010/07/23 RS-232C (1)
- 2010/06/22 주파수란
- 2010/06/21 RS232 케이블 만들기
- 2010/06/17 RS232란
서보 모터 ( 앱솔루트, 인크리맨탈 )
인크리멘탈은 서보팩에 전원이 off되었다가 on되면 원점을 잡아야하는
불편함이 잇고 엡솔루트는 자기 정보를 기억하므로 전원 off위치에서 다시 가동이 가능 합니다#2
SERVO MOTOR 방식의 차이 점으로 구분할 수 있습니다.
앱솔루트 방신 인크리메탈 방식의 차이점은 절대적인 값이냐 상대적인 값이냐 입니다.
따라서
앱솔루트 방식은 > 절대적인 값을 뜻하고요,
인크리메탈 방식은 > 상대적인 값을 뜻합니다.
예를 들자면
1.
절대적인 방식(앱솔루트 방식)
모터가 구동되면 이동을 합니다. 0의 위치에서 50cm만큼 가라 명령(버튼)을 하면 50만 갑니다.
2.
상대적인 방식(인크리멘탈 방식)
모터가 구동되면 이동을 합니다.(미리 설정해 놓은 값이50cm가 있습니다.)
0의 위치에서 100cm(미리설정50cm + 명령 50cm)가 이동 됩니다.1.리소스란?
프로그램은 코드와 데이터로 구성된다.
=>데이터는 프로그램의 처리 대상.
코드는 데이터를 처리하는 수단.
(데이터의 의미를 확장하여 코드가 아닌 모든것을 데이터라고 할 때 비트맵 , 아이콘 , 메뉴 , 문자열 등등 프로그램의 논리와 무관한 모든 것들이 데이터에 속한다. 이런 것들은 프로그램의 동작을 통제한다기 보다는 단순한 장식인 경우가 많다.)
도스 프로그래밍 에서는 이런 데이터를 만들고 관리하는 작업이 하나의 과정에 통합되어 있지만
윈도우즈 프로그래밍에서는 별도의 작업과정으로 분리하고 있다.
코드의 논리와 무관한 데이터들을 리소스 (Resource) 라고 하며
메뉴 , 비트맵 , 엑셀러레이터 , 문자열 , 아이콘 , 커서 등등이 여기에 속한다.
리소스들은 별도의 편집기로 만들어져 컴파일 되며 링크시에 실행파일에 결합된다.
이런 컴파일 과정은 API 나 MFC 에서나 모두 동일하다.
*.h + *.cpp = *.obj
*.ico + *.bmp + *.rc = *.res
*.obj + *.res = *.exe
윈도우즈 프로그래밍이 도스에서와 구별되는 큰 차이점 중 하나가 바로 리소스와 코드가 분리 되어있다는 점이다.
도스에서 게임을 하나 만들려면 코드를 작성하는 시간보다
이미지나 비트맵을 작성하고 수정하는 시간이 더 많이 요구된다.
아이콘이나 비트맵들은 16진수 배열로 작성하거나 , 실행중에 파일을 읽어서 사용했었다.
콘솔환경에서 만들어진 게임을 보면 이런 거대한 배열이나 이미지 파일을 볼 수 있는데 느리고 불편했다
윈도우즈 환경에서는 리소스를 만드는 과정과 코딩과정이 분리되어 있어 여러가지 장점이 있다.
[1] 디자이너와 프로그래머의 분담작업이 용이하다.
[2] 리소스를 수정하더라도 소스를 일일이 다시 컴파일하지 않고 리소스만 컴파일 하면 되고
반대의 경우도 마찬가지 이므로 컴파일 속도가 현저히 빨라진다.
이는 모듈 분할 컴파일 방식의 장점과도 같은데 리소스는 보통 덩치가 커서 컴파일이 느리며
잘 바뀌지도 않으므로 매번 컴파일할 필요가 없다.
[3] 리소스의 재사용이 용이하다.
[4] 리소스는 실행중에 교체가 가능한 모듈이므로 상황에 따라 다른 형태의 리소스를 사용할 수 있따.
이 기법을 사용하면 다국어 버전을 쉽게 만들 수 있으며 스킨 기능이나 플러그인도 비슷한 기법을 사용한다.
리소스의 종류에는
메뉴 , 비트맵 , 단축키 , 문자열 , 아이콘 , 커서 등등이 있으며
이 외에도 사용자가 나름대로 리소스를 만들어 사용할 수도 있다.
( 리소스 == 프로그램이 요구하는 대량의 데이터 )
출처 : http://wonnychung.blog.me/40012099748
C++ Builder란?
C++ Builder는요 볼랜드사에서 만든 C++ 툴입니다.
볼랜드 C++와 같은 컴파일러구요.
델파이나 비쥬얼 베이직와 비슷한 방법으로 프로그램을 하실 수 있습니다.
비주얼씨와 차이점은 VCL을 사용한다는 것입니다.
비쥬얼씨에서 사용하는 MFC도 물론 사용가능하구요. 볼랜드에서만든 VCL을 사용할 수도 있지요
또한 CLX라는 것을 이용하면 리눅스 상에서도 그대로 컴파일이 가능하구요.
자세한 내용은 www.borlandforum.com 에서 알아보세요.
개인적으로 비주얼씨보다는 몇배는 뛰어난 툴로 생각하구요
학생용은 한국 볼랜드에서 학생들에게 공급하기 위한 목적으로 판매하는 것입니다.
상업프로그램을 제작못하는 등의 제약이 있지요.
컴퓨터의 커널을 운영체제의 핵심이다. 운영 체제의 다른 모든 부분에 여러 가지 기본적인 서비스를 제공한다. 시스템의 자원은 제한되어 있지만 프로그램은 많기 때문에 커널은 프로그램의 수행상태인 프로세스 간의 보안 접근을 책임지는 소프트웨어이다. 커널이 이러한 프로세스마다 얼마만큼의 자원을 사용해야 하는 결정해야 하는데 이것을 스케줄링이라고 한다.
같은 종류의 컴포넌트에 대해 다양한 하드웨어 디자인이 가능하기 때문에 하드웨어 직접 접근하는 것은 매우 복잡할 수 있다. 일반적으로 커널은 운영 체제의 복잡한 내부를 감추고 깔끔하고 일관성 있는 인터페이스를 하드웨어에 제공하기 위해 하드웨어 추상화를 지원한다. 이러한 하드웨어 추상화는 프로그래머가 하드웨어의 복잡한 접근을 고민할 필요 없이 쉽게 개발하는 것을 돕는다. 하드웨어 추상화 계층(HAL)은 제조사의 장비 명세에 대한 특정한 명령어를 제공하는 소프트웨어 드라이버에 의지한다.
이렇듯 커널은 운영체제에서 핵심적인 기능을 담당하지만 수행에 필수적인 것만은 아니다. 프로그램은 하드웨어 추상화나 운영체제 지원없이 컴퓨터만으로 읽어 들여져 수행될 수 있기 때문이다. 이러한 방법은 초기 컴퓨터의 운영 방법이었고 다른 프로그램을 실행하고 싶을 때는 컴퓨터는 다시 켜고 다시 읽어 들여야 했다. 그 결과 로더와 디버거 같은 작은 프로그램들이 프로그램을 수행시키는 작업을 해야 했고 이것이 초기 운영체제 커널의 기초가 되었다.
이러한 커널은 크게 4가지로 구분할 수가 있다.
- 모놀리식커널(Monolithic Kernel)
- 마이크로커널(Micro Kernel)
- 하이브리드커널(Hybrid Kernel)
- 엑소커널(Exo Kernel)
모놀리식 커널
모놀리식 커널은 하드웨어 위에 고수준의 가상 층을 가지고 있다. 고수준의 가상층은 기본 연산 집합과 관리자모드에서 작동하는 프로세스관리, 동시성, 메모리관리 등의 운영체제 서비스 구현을 위한 시스템콜(System Call)로 되어있다.

이러한 연산들을 제공하는 모듈은 같은 주소 공간에서 실행되기 때문에 코드의 집적도는 매우 조밀하고 수정하기 어렵고 한 모듈의 버그는 전체 시스템을 멈추게 할 수도 있다. 그러나 구현이 신뢰할 정도로 완성되면 컴포넌트의 내부 집적이 내부의 시스템 이용을 효과적이게 하여 높은 효율을 보인다.
모놀리식 커널의 지지자들은 코드가 부정확한지 그런 코드가 커널에 포함되어 있는지 확인 할 수 있고 그것은 마이크로 커널에 비해 미세한 우위에 있다고 주장한다.
리눅스, FreeBSD, 솔라리스와 같은 모놀리식커널은 실행 모듈을 실시간으로 읽어들일 수 있다. 실시간으로 실행 모듈을 읽는 특징은 커널이 허용하는 범위 내에서 손쉽게 확장 가능하도록 커널 공간의 코드의 양을 최소한으로 유지시켜 준다.
마이크로소프트 윈도우즈 NT(NT, 2000, XP, 2003 등)는 초창기에는 하이브리드커널이었으나 후기 버전은 모놀리식커널로 변경되었다. 윈도우즈 NT 시리즈는 상위의 서비스들을 NT executive라는 서버로 구현하였다. Win32 특성은 처음에는 사용자 모드의 서버 형태로 구현되었으나, 최근 버전에서는 관리자 주소 영역으로 이동하였다. 다양한 서버들이 로컬 프로시저 콜(LPC;Local Procedure Call)이라 불리는 주소 영역간 매커니즘을 통해 통신하며, 성능 최적화를 위해 공유메모리를 이용한다.
모놀리식 커널을 사용한 운영체제는 다음과 같다.
- BSD 커널과 같은 전통적인 유닉스 커널
- 리눅스 커널
- 솔라리스 커널
- 윈도우즈 NT 커널
- 벨로나2 커널
- AIX 커널
- AGNIX와 같은 교육용 커널
마이크로 커널
마이크로 커널은 모놀리식 커널과 달리 하드웨어 위에 매우 간결한 추상화만을 제공한다.기본 연산 집합과 운영체제 서비스를 구현한 쓰레드 관리, 주소 공간, 프로세스간 통신의 작은 시스템 콜로 구성된다. 일반적으로 커널이 제공하는 네트워킹 같은 다른 서비스들은 사용자 공간 프로그램인 서버로 구현한다.

운영체제는 서버를 다른 일반적인 프로그램처럼 간단히 시작하고 끌 수 있다. 예를 들어 네트워킹 지원이 필요 없는 작은 시스템에서는 간단히 켜지 않으면 된다. 이론적으로 마이크로커널에서 시스템은 더 안정적이다. 서버가 중단될 때 커널의 충돌이 아니기 때문에 단 하나의 프로그램만 내려버리면 된다.
일반적으로 마이크로 커널은 전통적인 디자인의 수행을 잘하지 못할수도 있다. 서버와의 자료교환을 위해 커널을 출입하는 문맥 전환 때문이다. 주의 깊은 조율이 오버헤드를 극적으로 줄여줄 것으로 믿어져 왔으나 90년대 중반부터 대부분의 연구자들은 시도를 포기했다. 최근에 새 마이크로 커널은 성능을 최우선으로 설계하며 이 문제를 넓은 부분에서 다루었다. 그러나 현재 운영체제 시장은 자기 몸 사리며 마이크로 커널 설계에 소극적이다.
마이크로 커널과 마이크로 커널에 기반한 운영체제는 다음과 같다.
- AmigaOS
- Amoeba
- ChorusOS
- EROS
- Haiku
- K42
- LSE/OS
- KeyKOS
- L4 마이크로커널
- Mach
- MERT
- Minix
- MorphOS
- NewOS
- QNX
- Phoenix-RTOS
- RadiOS
- Spring operationg system
- VSTa
- Symbian OS
하이브리드 커널
하이브리드 커널은 본질적으로 마이크로 커널을 따르나, 사용자 레벨에서 수행될 때 느린 코드들을 커널 레벨에서 수행하도록 수정한 것을 말한다.
이는 다양한 운영체제 개발자들이 마이크로커널 기반의 설계를 받아들이던 시점에 순수한 마이크로커널의 성능상 한계를 극복해보고자 생각해낸 내용이다.

예를 들어, 맥 오에스 텐의 커널인 XNU는 Mach 커널 3.0 마이크로 커널에 기반을 두고 있지만, 전통적인 마이크로 커널 설계의 지연 현상을 줄이기 위해 BSD 커널의 일부 코드들을 들여와 동일한 주소 영역에서 실행하고 있다.
하이브리드 커널로는 다음과 같은 것들도 포함된다.
- ReactOS
- BeOS 커널
- Netware 커널
하이브리드 커널은 모놀리식 커널과 마이크로 커널 설계 양쪽의 구조적 개념과 작동방법에 대한 것으로 어떤 것은 사용자 공간에 들어가는 반면 어떤 코드는 성능의 이유로 커널 공간에 포함해야 하는지에 대한 선택의 문제이다.
엑소 커널
엑소커널은 운영체제 설계에 대한 급진적인 신개념으로 수직 구조의 운영체제이다.
엑소커널의 구상은 개발자에게 강제적인 추상화를 줄여 하드웨어 추상화에 대한 선택의 폭을 넓혀준다. 엑소커널은 여러 개의 가상화를 실행하는데 각 가상화는 하드웨어 추상화 계층을 통하지 않고 하드웨어 구역에 직접 접근한다. 응용소프트웨어와 추상화는 특정 메모리 주소와 디스크 블록 등을 요구하는데 커널은 단지 자원이 비어있는지만 확인하고 응용소프트웨어에게 접근을 허용한다.

이러한 저수준의 하드웨어 접근은 프로그래머가 개별적인 추상화를 만드는 것을 허용하여 불필요한 부분을 제거할 수 있게 하고 일반적으로 프로그램의 성능을 향상시킨다.
엑소커널은 추상화를 제공하는 라이브러리 운영체지(libOSes)를 이용한다. 라이브러리 운영체제는 응용소프트웨어 프로그래머에게 고수준, 전통적인 운영체제 추상화, 맞춤 추상화 구현 등의 더 유동적인 방법을 제공한다. 이론적으로 엑소커널의 체제는 하나의 엑소커널 아래 윈도우즈나 유닉스와 같은 다양한 운영체제를 구동할 수 있다.
엑소커널의 개념은 1994년에 나왔으며 현재 까지 여전히 학계에서 연구 중이며 대규모의 상용 운영체제는 아직 까지 없다.
출처 : http://dstein.egloos.com/2172464
"큐"는 여러 개의 데이터 항목들이 일정한 순서로 나열된 자료 구조이다. 스택과는 달리 한쪽 끝에서는 삽입만 할 수 있고, 삭제는 반대쪽 끝에서만 할 수 있도록 되어 있다.
* 큐의 원리
큐는 매표소에서 표를 사기 위해 기다리는 대기자 열과 같은 원리를 가진다. 대기자 열에는 먼저 온 사람부터 차례로 대기자들이 늘어서 있다. 앞쪽 끝에서는 기다리던 사람이 표를 사서 빠져나가고 (삭제), 뒤쪽 끝에서는 새로운 사람들이 대기자 열로 들어온다 (삽입).
* 큐의 성질
큐에 저장된 데이터 항목들 중에 먼저 삽입된 것은 먼저 삭제되고, 나중에 삽입된 것은 나중에 삭제된다. 그래서 큐를 선입 선출 리스트 (First-In-First-Out:FIFO) 라 부른다. 후입 선출법을 사용하는 스택 과는 상반된 성질을 가진다.
* 큐의 종류
1. 선형 큐
선형 큐는 여러 개의 데이터 항목들이 하한부터 차례로 저장되는 모양을 가진다. 새로운 데이터 항목의 삽입은 rear에서 일어나고, 이 위치는 rear 포인터라는 지시자가 가리킨다. 데이터 항목의 삭제는 front에서 일어나며, 이 위치는 front 포인터라는 지시자가 가리킨다.

front 포인터와 rear 포인터는 초기에 하한에서 시작하여 삽입과 삭제가 반복됨에 따라 상한쪽으로 이동한다.
2. 이동 큐
큐에서 더 이상 자료를 삽입할 수 없는 상태인 rear=N이면 오버플로우(overflow)가 발생한다. 이 오버플로우를 해결하는 방법에는 2가지 방법이 있는데 이동 큐(Moving Queue) 방식과 환형 큐(Circular Queue)방식이다.
이동 큐 방식은 큐내의 원소들을 이동시키는 방법이며 원형 큐 방식은 큐 구조를 원형으로 연결하여 rear포인터의 값을 변화시켜 가용공간에 원소를 삽입하는 방식이다.
3. 환형 큐
환형 큐 방식이란 이동 큐(Moving Queue) 방식의 단점을 보완하기 위한 방법으로 크기 n인 1차원 배열 형태의 큐를 원형(Circular)으로 구성하여 배열의 처음과 끝을 연결하여 만든 것을 말한다.
오버플로우가 발생했을 때 큐구조가 원형으로 구성되어 있으므로 rear 포인터 값을 변화시켜 새로운 가용공간에 원소를 삽입하므로, 오버플로우시 이동 큐 방식에서처럼 원소들을 이동시킬 필요가 없으므로 소요되는 시간을 절약할 수 있다.
★ 오늘의 목표! : 디버그 유닛(DBGU)을 이용하여 비동기식 RS-232C 통신을 수행해보자~
Q0. 통신이 뭐야?
A0. 송신기와 수신기가 신호를 주고 받는 행위.
서로 송수신기가 되어, RS-232C 통신 케이블을 통해 통신 할 것이다.
Q1. 통신을 왜 하는데?
A1. 우리가 쓰는 임베디드 장비, ARM에는 모니터가 달려 있지 않아서, 얘가 지금 뭘 하고 있는지 눈으로 보기가 힘들다.
LED, 스위치 같은 거 쓰기도 하지만, 한계가 있다.
통신을 하게 되면, 임베디드의 많은 부분을 다른 컴퓨터에서 모니터링 할 수 있다. (= 효율적으로 디버깅 할 수 있다.)
Q2. AT91SAM7S256의 어디에서 통신 기능을 하나?
A2. 내장된 I/O 기능 중 USART(동기 및 비동기 직렬통신 포트: Universal Synchronous Asynchronous Receiver Transmitter).
기능을 추가하여 USART라 불리게 되었다.
Q3. 직렬통신 vs. 병렬통신 ?
| 직렬 통신 | 병렬 통신 |
| 데이터 전송을 위하여 1개의 통신라인을 사용 | 여러 개의 데이터 전송용 라인(Line)이 존재 |
| 데이터 비트를 1개의 비트단위로 전송 | 한번에 다수의Bit데이터를 전송 |
| 외부와의 송수신에 사용 | 빠른 속도로 통신이 가능하며 고속의 정보처리가 필요 할 경우 사용 컴퓨터내의 장치와 정보교환 |
| 1개의 통신라인 | 8개의 데이터 선과 타이밍 선호선등이 필요 케이블의 효율이 떨어짐 |
| 통신속도가 느리다. | 속도는 빠르다. |
| 기존의 통신 선로를 쉽게 활용할 수가 있어 비용의 절감이 큼 | 케이블이 굵으면 길이를 길게 만들 때마다 비용이 증가 |
| 통신거리에 제한을 덜 받으므로 장거리 전송 가능 | 전기적인 간섭현상으로 인해 병렬 전송은 단거리에서만 |
Q4. 동기 vs. 비동기 ?
A4. 장치 간에 클럭을 공유하느냐(= 동기) 하지 않느냐(= 비동기)의 차이.
데이터 교환이 없는 사이에도 제어용 신호가 흐르고 있으므로 상대와의 동기를 유지하는 것이 가능
1 바이트가 아닌 다수의 바이트가 한 블럭으로 만들어 일시에 전송
각 바이트 사이에는 시작비트/정지비트 없이 끊이지 않는 연속적인 데이터
◆ 비동기 통신 : 수신부는 다음 데이터가 언제부터 시작되는지 예측할 수 없다.
수신자에게 새로운 데이터가 도착했을을 알리기 위하여 별도의 비트가 각 바이트 시작 부분에 추가
- 논리신호 0인 이 비트를 시작비트(Start Bit)
- 데이터비트 뒤에 수신자에게 바이트가 끝났음을 알리기 위해서 논리신호 0인 별도의 비트가 추가 → 정지비트(Stop Bit)
시작비트 이후 수신된 데이터 안에서, 수신 측에서는 들어오는 비트 흐름에 대해 동기화한다.
→ 통신 속도를 맞추어야함.
두 비트의 추가로 인해 동기 통신에 비해 속도가 느림
PC의 시리얼 포트는 비동기 장치
Q5. RS-232C 통신 케이블은 무슨 일을 하나?
A5. 신호 레벨을 맞춰준다.
AVR간에서 UART 통신을 할 경우에는 그냥 UART 포트끼리 붙여 주면 된다.
이는 두 신호가 동일한 TTL 레벨을 사용하기 때문이다. (즉 High는 5V, Low는 0V)
그러나, AVR과 PC간 통신을 할 경우 문제가 된다. PC는 EIA에서 규정한 RS-232C 규격을 사용하기 때문이다.
EIA에서는 레벨은 MARK와 SPACE로 구분한다. (MARK = High, SPACE = Low)
- MARK = High는 -2 ~ -12V, SPACE = Low는 +2 ~ +12V이다.
따라서 서로 신호 레벨이 다르기 때문에 이를 매개해 주는 것이 필요하다. 그것이 바로 RS-232C 회로이다.
연결은 어떻게?
장비 A 장비 B
TXD ---------------- RXD
RXD ---------------- TXD
GND ---------------- GND
Q6. USART와 디버그 유닛(DBGU)은 무슨 관계?
A6. 임베디드 개발의 필수 요소인 UART의 용도를 감안하여, ATMEL사에서는 기존 UART에
디버그(Debug : 프로그램 상의 오류를 찾아내어 바로잡는 과정)에 필요한 기능을 강화시킨 유닛을 추가하게 되었다.
이를 디버그 유닛(DBGU)이라고 부른다.
디버그 유닛(DBGU)은 설정에 따라 - UART 기능
- 3가지 통신 에러 체크 기능
- 3가지 루프백(Loopback) 테스트 기능
우리의 경우, UART 통신 모드로 사용할 것이다. (USART 포트 부분은 고려하지 않아도 된다.)
이 때, 전송 포맷은 8 data bit, 1 stop bit로 고정된다. ← 디버그 유닛의 UART 기능의 한계...
Q7. AT91SAM7S256에서 디버그 유닛(DBGU)으로 통신을 제어한다면, PC에서는 어떤 통신 프로그램을 쓰나?
A7. Windows XP의 하이퍼터미널 프로그램 (시작 -> 보조 프로그램 -> 통신 -> 하이퍼터미널)
실행하면 다음과 같은 창이 뜬다. 이름은 아무렇게나 지어준다.
자기 환경에 맞는 것을 선택한다. (TCP/IP는 절대 아니다 !)
(교과서 p.770 의 저자의 의견에 따르면,) 아래와 같이 설정해 준다.
아래 설정은 디버그 유닛(DBGU) 포트 설정과 맞춰줘야 하므로 잘 기억한다.
다음은 편리를 위한 설정..
설정 끝~
Q8. 디버그 유닛(DBGU)을 쓰기 위해, 포트 설정은 어떻게 해 주나?
A8.
1. DBGU의 외부 연결용 Pin 설정 : PIO_ASR
△
Peripheral A에 속해 있고, PA 9, 10번 핀에 대해서 설정해야 한다.
- PA9, 10번 핀의 Peripheral A 모드 활성화 "주변장치 중 DBGU의 통신 부분을 쓰겠다."
→ PIO_ASR :: PA9_DRXD, PA10_DTXD 비트를 1로 설정.
2. PIO 병렬 입출력 금지 설정 : PIO_PDR
- "해당 비트의 핀을 주변장치로 사용하기 위해, 병렬 I/O 포트로 사용하는 것을 금지한다.
→ P9, P10 비트를 1로 설정.
3. 포트 속도 (보레이트) 설정 : DBGU_BRGR
└ Baud rate generator - 송신부와 수신부에 클록을 공급하는 회로.
- 레지스터의 CD로 지정하는16비트 분주기를 이용하여 원하는 클록 주파수를 발생한다.
- 0 : 클록 공급하지 않음/ 1 : 클록신호를 바이패스 / 그 이외 : 분주기능 수행
MCK = 48 [MHz]
Baud rate = ───────── [bps] (교과서 p.125 표 참조)
16 x CD
위 하이퍼터미널에서 통신속도를 115200으로 설정하였으므로, CD = 26
4. 송/수신모드 활성화 : DBGU_CR
- TXEN, RXEN 비트를 1로 설정
5. 포트 모드 설정 : DBGU_MR
- parity type : 하이퍼터미널 설정과 맞추어 '없음' → PAR_NONE 비트를 1로 설정
- CHMODE : 우리가 쓸 채널은 정상모드 → 00으로 설정
(cf. loopback : 자기 자신에게 신호를 보내는 것)
6. DBGU_SR : 폴링 check~
└ Polling('깃대를 올리다') - 여러 개의 장치가 동일 회선을 공유하는 멀티포인트 통신에서,
제어 장치는 각 장치에 한번에 하나씩 메시지를 보내어,
전송할 데이터가 있는지(즉, 회선을 사용하기 원하는지)를 묻는다.
① 송신 시, TXRDY 비트가 1로 설정되고,
- DBGU_THR 에 저장된 문자가 송신된다.
② 수신 시, RXRDY 비트가 1로 설정되고,
- DBGU_RHR로 수신된 문자가 저장된다.
※ buffer 역할
출처 : http://wowcat.tistory.com/?page=13
1.주파수란 무엇인가?
주파수(周波數:Frequency)란 진동전류나 전파 또는 음파 등이 반사 · 굴절하여 파상으로 방향을 바꾸는 주기적 현상으로 그 주기적 파상 현상이 1초 동안에 반복되는 횟수를 말한다.
독일의 물리학자 하인리히 루돌프 헤르츠( Heinrich Rudolf Hertz )가 전기진동의 실험에 의해 전자파의 존재를 확인하고 이것이 반사·굴절 등의 현상에서 완전히 광파와 같은 성질을 가졌음을 실증하였다고 한다.
주파수란 이와 같은 반사 굴절현상이 주기적으로 일정한 속도로 반복 변동하는 상태(주기현상)가 1초동안에 몇 번 반복되는가를 나타내는 수를 말하며 한편 진동수라고 한다.
단위는 1초 동안의 진동수가 1인 경우에는 1헤르츠(Hz) 또는 1사이클(c/s), 1초 동안 천회인 경우엔 1킬로헤르츠(KHz), 백 만회를 메가헤르츠(MHz)라고 하며 극히 많은 진동수인 10억 회는 기가헤르츠(GHz)라 부른다. 전파는 주파수가 낮을수록 파상의 파장이 길기 때문에 장파라고 하는데 편의상 30KHz를 기점으로 하여 주파수의 수를 10배마다 구분하고 각 구분사이의 주파수 범위를 주파수대라 하며 각각 장파 ,중파, 단파, 초단파, 극초단파, 마이크로파 등의 명칭을 붙이고 있다.
2.주파수를 통일하여 사용하여 이유는 무엇인가?
일본의 경우 처음에는 동일 발전소에서도 50Hz, 60Hz, 125Hz, 133Hz 등 4종류의 발전기가 서로 다른 주파수의 전기를 생산, 공급하면서 산업용 기기들이 주파수 변동에 따른 회전수 변동 때문에 심각한 문제가 발생했다. 이를 해결하기 위해 1895년에 일본의 한 전기회사가 독일의 AEG사로부터 50Hz의 교류 발전기를 수입하여 배전하였고, 반면에 다른 전기회사는 미국의 GE사로부터 60Hz의 교류 발전기를 수입하여 배전하면서 현재까지도 동일본은 50Hz, 서일본은 60Hz 같이 사용한다.
RS232 케이블 만들기
|
CD |
1(8) |
<---> |
1(8) |
CD |
|
RX |
2(3) |
<---> |
2(3) |
RX |
|
TX |
3(2) |
<---> |
3(2) |
TX |
|
DTR |
4(20) |
<---> |
4(20) |
DTR |
|
GND |
5(7) |
<---> |
5(7) |
GND |
|
DSR |
6(6) |
<---> |
6(6) |
DSR |
|
RTS |
7(4) |
<---> |
7(4) |
RTS |
|
CTS |
8(5) |
<---> |
8(5) |
CTS |
|
RI |
9(22) |
<---> |
9(22) |
RI |
- 터미널 연결 방법(cross cable)
|
DTR |
4(20) |
<---┬-> |
6(6) |
DSR |
|
DSR |
6(6) |
<-┒└-> |
1(8) |
CD |
|
CD |
1(8) |
<-┴---> |
4(20) |
DTR |
|
RX |
3(2) |
<------> |
2(3) |
TX |
|
TX |
2(3) |
<------> |
3(2) |
RX |
|
GND |
5(7) |
<------> |
5(7) |
GND |
|
RTS |
7(4) |
<------> |
8(5) |
CTS |
|
CTS |
8(5) |
<------> |
7(4) |
RTS |
- 약식 RS232 크로스(터미널 3선) 케이블 연결 방법
|
RX |
3(2) |
<------> |
2(3) |
TX |
|
TX |
2(3) |
<------> |
3(2) |
RX |
|
GND |
5(7) |
<------> |
5(7) |
GND |
* 각각의 커넥터 자체에 RTS(7)-CTS(8), CD(1)-DTR(4)-DSR(6) 에 루프를 시킵니다.
- RS232 Loop 커넥터 만드는 법
커넥터 자체에
TX(3)-RX(2),
CD(1)-DTR(4)-DSR(6),
RTS(7)-CTS(8)을 만들면 RS232 루프 커넥터입니다.
포트 테스트시 사용하는 커넥터 입니다.
RS232C
표준 인터페이스의 하나로서 데이터를 직렬로 전송하며 대부분의 PC에 기본으로 장착되어 있다. RS232C 인터페이스 규격은 본래 데이터 단말장치와 모뎀(Modulator/Demodulator; 변,복조기)을 접속하기 위한 것으로 퍼스널 컴퓨터에서는 RS232C 규격의 일부를 사용하여 그 접속을 간략화하고 있다.

직렬전송방식의 개략
장점 
- 배선 수가 작다.
- 통신 프로그래밍 구현이 쉽다.
- PC에 기본 장착되어 있다.
단점 
- 병렬 전송에 비해 전송속도가 느리다.
- 일대일 통신만 가능하다.
전기규격 
RS232C의 전기적 특성은 아래와 같다.
|
항 목 |
RS232C | |
|
드 라 이 버 |
무부하 출력 부하 출력 단락 출력 전류 파워온시 특성 |
≤ 25V 5V∼15V ≤500mA ≥300Ω |
|
리 시 버 |
입력저항 히스테리시스 입력 최대전압 |
3㏀∼7㏀ ±3V ±25V |
|
최대 케이블 길이 |
15m | |
|
최대 전송속도 |
20kbit/sec | |
|
신호 논리(부논리) |
- TRUE : LOW (-3V 이하) - FALSE : HIGH(+3V 이상) - 전송하지 않을 경우 : LOW | |
RS232C 전기적 특성표
핀 규격 

|
신호명 |
명칭 |
방향 |
핀 번호(9핀) |
핀 번호(25) |
|
DCD |
Data carrier detect |
In |
1 |
8 |
|
RX |
Receive data |
In |
2 |
3 |
|
TX |
Transmit data |
Out |
3 |
2 |
|
DTR |
Data terminal ready |
Out |
4 |
20 |
|
GND |
Signal ground |
|
5 |
7 |
|
DSR |
Data set ready |
In |
6 |
6 |
|
RTS |
Request to send |
Out |
7 |
4 |
|
CTS |
Clear to send |
In |
8 |
5 |
|
RI |
Ring indicator |
In |
9 |
22 |
RS232C의 핀 규격표
- TX(데이터송신) : 데이터를 보내는 신호선. 출력은 전압이다.
- RX(데이터수신) : 데이터를 받는 신호선. 입력은 전압이다.
- RTS(송신요구) : 데이터 송신을 요구하기 위한 제어선이다.
- CTS(송신허가) : RTS에 대한 응답 신호선이다.
- DSR : 기기의 전원이 ON인지의 여부와 같은 기기의 준비상태를 조사한다.
- DTR : 데이터 터미널이 DSR과 마찬가지로 OK인가를 조사한다.
데이터 형식 
패리티 비트
통신에 있어서 어떤 데이터를 전송할 때 그 데이터가 정확히 보내졌는가를 검사하는데 사용한다. Odd 패리티와 Even 패리티 체크의 두 가지 형태가 있는데 Odd 패리티는 2진수의 1의 합이 홀수가 되게 지정하고 Even 패리티의 경우는 1의 합이 홀수가 되게 지정한다.
예) Odd 패리티를 사용하면,
41H : 0100 0001 의 경우는 패리티비트를 0으로 한다.
Start bit와 Stop bit
RS232C의 인터페이스 규격에서는 송수신 데이터의 신호는 부논리로 규정되어 있으므로 데이터의 각 비트는 1은 -5~-15V에 0은 5~15V에 대응한다. 실제 데이터 전송시 데이터의 앞에 Start Bit(논리 0) 1비트와 뒤에 Stop Bit(논리 1) 2비트와 패리티 비트를 부가해서 송신한다. 여기서 Start Bit와 Stop Bit을 사용해서 수신측 통신소자가 1 캐릭터(8Bit)마다 동기를 맞출 수 있기 때문에 송수신 측의 동기신호 없이도 송수신이 가능한 것이다. Stop Bit는 2비트 뿐만 아니라 1.5비트나 1비트도 설정가능하기 때문에 송수신 측의 Stop Bit를 일치 시켜야한다.
보오레이트
RS232C 인터페이스의 통신속도는 접속하는 쌍방의 장치의 성능과 통신선로의 특성에 따라 크게 좌우된다. 통신회선 상에 신호율을 측정하기 위한 기본단위를 보오레이트라고 불리며, 1초간에 송수 가능한 비트 수로 규정된다. 만약 110으로 설정된다면 패리티가 부가된 ASCII 코드 1캐릭터를 보내기 위해서
1(Start Bit) + 7(캐릭터의 비트수) + 1(패리티 비트) + 2(Stop Bit) = 11비트
따라서 1초간에 최대 110 / 11 = 10(캐릭터)을 송수신 가능하다.
보통의 퍼스널 컴퓨터에서는 1문자 단위를 8비트(1바이트)로 다루기 때문에 하나의 문자정보를 보내기 위해서 Stop Bit를 최소 1비트로 하여
1(Start Bit) + 8(문자 데이터 비트수) + 1(Stop Bit) = 10비트
로 1문자 전송에 10비트를 사용한다.
문자 데이터 비트수
문자 데이터에 사용되는 비트수로 5∼8bit를 사용한다.
전송제어 
PC로 통신을 하는 경우 전혀 절차 없이 실행하는 경우(데이터의 최후에만 종료부호를 송출함)도 있지만 일반적인 경우 일정한 통신규약에 의해 통신을 실행한다.
통신규약의 대표적인 예는
- 회선이 접속되었는지를 확인(회선접속)
- 상대방의 확인(데이터 링크의 확립, 송수신의 확립)
- 데이터가 올바르게 전송되었는지 확인
- 데이터의 송신이 종료했는지 확인
등이 있다. 이와 같이 데이터의 전송에 대한 제어 절차를 전송제어(Transfer control)라고 한다.
기본형 데이터 전송제어
기본형 데이터 전송제어는 ISO/CCITT 7비트 부호를 사용한 데이터 전송방식이다.
|
부 호 |
명 칭 |
용 도 |
|
SOH |
Start of Heading |
헤딩 개시 |
|
STX |
Start of Text |
텍스트 개시 |
|
ETX |
End of Text |
텍스트 종료 |
|
EOT |
End of Transmission |
전송종료 |
|
ENQ |
Enquiry |
문의 |
|
ACK |
Acknowledge |
긍정응답 |
|
DLE |
Data Link Escape |
전송제어 확장 |
|
NAK |
Negative Acknowledge |
부정응답 |
|
SYN |
Synchronous Idle |
동기 |
|
ETB |
End of Transmission Block |
전송 블록 종료 |
( 각 부호에 대한 ASCII CODE 는 자료실을 참고 하세요. )
정보 메시지의 데이터 형식(패킷)
정보 메시지는 그림 7과 같이 크게 나누어 Heading 부분과 Text 부분으로 구성된다.
- Heading 부분: 경로, 메시지 번호
- Text 부분 : 송수신하려는 정보
패킷 형식
전송제어 캐릭터
- ENQ(Enquiry) : 상대 단말의 응답을 구하기 위해 사용되는 부호이다.
- ACK(Acknowledge) : 수신측에서 송신측으로 반송하는 부호로 "접속이 정상" 및 "오류없이 수신하였음"의 두 가지 의미가 있다.
- NAK(Negative Acknowledge) : ACK의 반대의미이다.
- EOF(End of Transmission) : 텍스트 전송의 끝을 알리거나 송신권의 인도등에 사용한다.
- DLE(Data Link Escape) : 전송제어 확장부호로서 전송제어 기능을 확장하기 위해 사용한다.
결선 방식 (NULL MODEM 경우) 
RS-232C NULL MODEM 통신 케이블은 MODEM 통신 케이블과는 달리 RX와 TX 핀을 서로 엇갈리게 연결한 결선방식을 사용한다. 케이블 판매점에서 시리얼 crossover 케이블이나 시리얼 FX 케이블이란 이름으로 쉽게 구할 수 있다. 굳이 제작을 필요하다면 아래의 그림을 참고해서 제작할 수 있다.

RS232C 3선 결선방식 (NULL MODEM)
프로그램 예제 (Turbo-C) 
#include <bios.h>
#include <conio.h>
#define COM1 0
#define COM2 1
#define SET 0
#define SEND 1
#define RECEIVE 2
#define ESC '\x1B'
#define BAUD_110 0x00
#define BAUD_150 0x20
#define BAUD_300 0x40
#define BAUD_600 0x60
#define BAUD_1200 0x80
#define BAUD_2400 0xA0
#define BAUD_4800 0xC0
#define BAUD_9600 0xE0
#define PARITY_NONE 0x00
#define PARITY_ODD 0x08
#define PARITY_EVEN 0x18
#define BITS_7 0x02
#define BITS_8 0x03
#define STOP_1 0x00
#define STOP_2 0X04
void main(void)
{
int out, in;
bioscom(SET, BAUD_9600 | BITS_8 | STOP_1 | PARITY_NONE, COM1);
cprintf("... BIOSCOM [ESC] to exit ...\n");
while (1)
{
if (kbhit()){
if ((in = getch())== ESC) exit(0);
bioscom(SEND, in, COM1);
}
if ( (out = bioscom(RECEIVE, 0, COM1) & 0x7F) != 0)
putch(out);
}
}
| Copyright ⓒ 2000 kweon gi-tae All rights reserved. |
출처 : http://www.gitae.pe.kr/
