==========================================================================================
제어
=======================================================================================
=관계연산자/논리연산자
연산 => 결과
A=3 => A
A;
3;
A<5 => 참(1)
1;
#include <stdio.h> |
=콤마연산자 => 사용안함
#include <stdio.h> |
=연산자 우선순위와 결합방향 => ()사용
=1byte 진법 변환
2진수
8진수
10진수
16진수
=데이터 표현
c: 2진법사용 불가
0x : 16진수
0 :8진수
=정수와 실수의 표현방식
#include <stdio.h> |
=실수의 오차
#include <stdio.h> |
#include <stdio.h> |
=비트연산자
& : AND
| : OR
^ : XOR - 10 ^ 7 => 1010 ^ 0111 => 1101 (두비트 같으면 0/ 다르면 1)
~(틸드) : 반전
<< : 왼쪽으로 이동
>> : 오른쪽으로 이동
#include <stdio.h> |
#include <stdio.h> |
=비트연산자
>> (shift)
1001 >>1(칸)
=> 0100
iNum=iNum>>1;
int iNum = -1;
iNum = iNum >> 3
=>부호비트 빈자리는 1로 채워짐
unsigned int iNum = 0xFFFFFFFF
=>부호 없으므로 0으로 채워짐
=REPORT
#include <stdio.h>
int main()
{
int iNum1 = 15;
int iNum2 = 20;
int iResult1=0;
int iResult2=0;
int iResult3=0;
printf("iNum1 : [%d]\n", iNum1);
iResult1 = iNum1 & iNum2;
printf("iNum1 & iNum2 : [%d] \n",iResult1);
iResult1 = iNum1 | iNum2;
printf("iNum1 | iNum2 : [%d] \n",iResult1);
iResult1 = iNum1 ^ iNum2;
printf("iNum1 ^ iNum2 : [%d] \n",iResult1);
iResult1 = ~iNum1;
printf("~iNum1 : [%d] \n",iResult1);
iResult1 = iNum1<<1;
iResult2 = iNum1<<2;
iResult3 = iNum1<<3;
printf("iNum1<<1 : [%d] \n",iResult1);
printf("iNum1<<2 : [%d] \n",iResult2);
printf("iNum1<<3 : [%d] \n",iResult3);
printf("iNum1>>2 : [%d] \n",iNum1>>2);
printf("iNum1>>3 : [%d] \n",iNum1>>3);
iNum1 = -16;
printf("iNum1 : [%d]\n", iNum1);
printf("iNum1>>2 : [%d] \n",iNum1>>2);
printf("iNum1>>3 : [%d] \n",iNum1>>3);
printf("음수/양수변환 - 변환할 숫자을 입력하시오: ");
scanf("%d",&iNum1);
iResult1= (~iNum1)+1;
printf("변환 : [%d] \n",iResult1);
printf("비트 연산자 이용한 곱셈/나눗셈\n");
printf("3 x 8 / 4 : [%d]\n",(3<<3)>>2);
return 0;
}
==========================================================================================
회로
=======================================================================================
=====================================================================================
=Altium
-c컴파일
-ORCAD에서 작성한 파일 불러오기
.DSN파일
=====================================================================================
==통신
= UART( Universal Asynchronous Receiver and Transmitter) : 범용비동기식직렬통신
= USART(Universal Synchronous and Asynchronous serial Receiver and Transmitter)
====> 노이즈 문제
=============> RS232, RS422, RS485
= Line Transceiver
-Uart 출력신호 : 보통 TTL(DC5V) 신호레벨
( TTL 신호는 Noise에 약하고 토신거리에 제약을 받음)
-TTL신호를 입력 받아 Noise에 강하고 멀리 갈 수 있게 해주는 Interface IC를 사용 => Line Driver/Receiver
-대표적인 Line Driver/Receiver : RS232C, RS422, RS485
(FULL) 무전기(HALF)
선박항해정보 에어콘제어
(VDR) (RS485+TCP/IP)
=RS232C
2 3 5 2 3 7
수신 : -3V이하이면 1, +3ㅍ이상이면 0 ( 선이저항 => 오면서 강도 약해짐)
송신 : -12V이하이면 1, +12V 이상이면 0
-UART LOW -> 232 HIGH
-Unbalanced Signal -noise -> Shielded Cable 반드시 사용
=RS422
-Full Duplex
-Differential Cabling Method
-UTP(Unshielded Twisted Pair)Cable/ STP(Shielded Twisted Pair)Cable 사용(배)
-GROUND 따로있음 : Balanced Signal
-두가닥 레벨의 차이로 0,1구분 하므로 noise 같이 받으므로 노이즈에 강하다
*UTP 꼬임수가 다름(거리별로)
-MULTI DROP MODE
MASTER가 BROADCASTING 하다가 슬레이브 개별로 통신해야할 경우 사용
=RS485
-ECHO MODE / NON ECHO MODE : 내가 쏜 데이터 수신 가능하면 ECHO MODE
(RX항상 연결) (RX <->TX)
보낸데이터 확인가능
==================================================================================
=USB to Serial
IC두개
RS485
RS232
USB -> UART -> RS232
소자1: USB -> UART : CP210X, FT231...
소자2: UART -> RS232 : MAX232
-TTL 레벨 - 5V
***************
RS232 :15m 이내
RS422 : 1.5k
RS485
***************
=Adapter
=엑츄에이터
전기에너지 => 역학에너지 : 모터, 솔레노이드벨브...
'2015 스마트 콘트롤러 > 업무일지' 카테고리의 다른 글
20150223 (0) | 2015.02.23 |
---|---|
20150217_회로_ATMEGA_ARM_ALTIUM회로 (0) | 2015.02.17 |
20150213 (0) | 2015.02.14 |
20150212 (0) | 2015.02.12 |
20150211 (0) | 2015.02.11 |