2/17 S/W
▶ Shift
- char cNum = -1; 을 int iNum로 나태내면 어떻게 될까? 아래 그림으로 이해해 보자
위의 그림과 같이 1byte의 데이터는 4byte의 데이터로 나타낼 때 빈 칸을 양수처럼 '0'의 값으로 채우면 값이 달라 질 수 있다.
그래서, 음수일 경우 빈칸을 '1'로 채운다.
이와 같은 원리는 음수 경우 우측 Shift (>>) 에서 1로 채워지게 되는 원리와 같다.
- shift에는 곱셈과 나눗셈의 기능도 있다.
ex)
1. 0 0 0 0 0 0 0 1(값 1) 을 shitf(<<) 1회 시키면 0 0 0 0 0 0 1 0 (값 2) 가 되어 값의 x2 효과가 생긴다.
2. 반대로 >> shift 시킬 경우 나누기 2의 효과가 생긴다.
- shift 연산으로 값 만들기
ex) 80을 만들어 보자.
80은 2 x 2 x 2 x 2 x 5 로 이루어진 숫자이다. 이것을 shift로 나타낸다면 5로 4번 Shift하면 값이 나온다.
80을 2진수로 나타 내어 보면
1 0 1 0 0 0 0
이 되어, 5(101)가 shift(<<) 4번 된 것을 알 수 있다. (참고로 shift(<<)는 음수이던 아니던 '0' 이 채워진다.)
▶ 좋은 Compiler
어떤 값을 만들려면 연산 방법에는 여러가지가 있다.
8을 예로 들어 보면
1번. 4*2
2번. 4 << 1
3번. 4+4
이정도 3가지 방법이 있겠다. 보통의 컴퓨터 처리 속도로는 3번 -> 2번 -> 1번 순이다. 그런데 3번의 경우 숫자가 너무 많아질 경우 약간 느리게 적용 되기도 한다.
좋은 Compiler 일수록 이런 계산의 빠른 순을 적용하여 계산한다.
▶ 교재 109 page ‘size of' 예제
- 운영체제가 64bit면 int가 몇 byte로 나올지 알 수 없다.
- 자료형 크기(byte 단위)
[정수형] char(1) <= short(2) <= int(4) <= long(4) <= long long(4)
[실수형] float(4) <= double(8) <= long double(8)
▶ 교재 page 113 예제. 반지름 입력 후 원의 넓이 구하기
- double 사용 시 lf(long float) 사용.
▶ 리터럴 상수 : 이름을 지니지 않는 상수
위처럼 소수는 일반적으로 double 형으로 하는데 7.14 f 를 붙일시 float형이 된다.
아래의 그림을 참고하자.
▶ 심볼릭(Symbolic) 상수 : 심볼 테이블의 이름이 생성되는 상수
- 변수처럼 쓰는데 수정이 안되므로 상수이다.
즉 부등호(=)의 왼쪽에는 배치가 불가 하다. 상수이기 때문에 ‘변수 = 상수’의 규칙 때문에
100 -> 리터럴 (상수), inum1 = Variable Value(변수) , inum2 -> Symbolic (상수) or const
하지만, 메모리가 존재하기 때문에 포인터를 이용하여 주소 값을 이용해 수정이 변경 가능 하다.
아래 Source를 참고해 보자.
inum2로 다이렉트로 다가갈수 없으니, iP를 통해 주소 값으로 다가가 변경을 하는 것이다.
그림으로 나타낸다면 아래와 같다.
참고로 const 상수는 수정하지 말라는 의미로 변수 이름을 전부 '대문자‘로 쓴다.
Java에서는 이렇게 하지 못하도록 주소개념을 없앴다. (대신 참조 값을 사용.)
warning을 띄우는 이유는 inum2가 상수인데도 불구하고 변경을 하겠다는 의지가 보였기 때문이다. 하지만 포인터로 접근 하면 Compile 까지는 해주는 것이다.
2/17 H/W
▶ AVR 이란?
- Atmel 사가 개발 제조하고 있는 유사 RISC 구조의 저전력 CMOS 8-bit MCU
- Embedded 환경에 적합한 저전력 소모 칩
- 내부에 32개의 범용 레지스터 내장
- 유비쿼터스 및 센서 네트워크를 위한 소형 시스템에 적합
- 유사 RISC 구조 : RISC 구조를 따르고 있으나 명령어와 주소 지정 방식의 수가 RISC에 비해 많음
▶ AVR의 종류
- Tiny(Atiny) : 소형 시스템에 적합, 외형 핀 8~20개, 메인 MICOM 보다 여러 회로를 하나의 소자로 구현한 보조 역할의 칩으로 사용
- Classic(AT90S) : 중간 규모 시스템의 제어에 적합,
모뎀, 스마트 카드 리더, Set Top 박스 및 각종 자동화 기기에 응용
- Mega(Atmega) : 대형이고 입/출력 핀의 수가 많은 시스템에 적합 무선 전화기 및 프린터용 제어기, FAX 및 CD-ROM 제어기, 통신 장비 등에 응용
▶ AVR 내부 BLOCK DIAGRAM
▶ AVR의 특징
- 프로그램을 다운로드 하여 저장할 수 있는 2K ~ 128K 바이트의 플래시 메모리를 내장
- 내부 EEPROM 용량 : 128에서 512Byte 까지 가능
- 내부 Oscillator 에 의해 동작하는 Watchdog Timer 와 Full Duplex 방식의 다양한 외부 접속 장치를 내장
- 다양한 인터럽트 소스와 파워 절약 모드, 외부 메모리 추가가 가능
- 내장 Device
- Timer/Counter, 직렬 통신 장치, 아날로그 비교기, 외부 데이터 장치 인터페이스, 입 출력 포트, SPI, 아날로그 디지털 변환기(ADC)
▶ ARM 이란?
- Advanced RISC Machine 의 약자
- 향상된 RISC 기계
- 임베디드 기기에 많이 사용되는 32-bit RISC 프로세서
- 1985년 4월 26일 영국 캠브릿지에 있는 Arcon Computer 사에서 처음으로 상용화 -> Arcon RISC Machine 의 약자에서 ARM 이라는 단어 유래.
▶ arm 하드웨어 임베디드 시스템 아키텍처
▶ ARM의 특징
- 소비 전력이 적다.
- 빠른 속도에도 발열이 적다.
- 배터리를 전원으로 사용하는 모바일 기기에서 가장 각광받는 요인이 됨.
- 칩 면적이 작다.
- 소형화에 유리
- 발열 문제 적음
- 고성능 32비트 RISC 프로세서 이다.
- 캐시 메모리를 내장하여 파이프 라인 처리방식으로 명령을 실행(1명령/1Cycle)
- 명령 패치와 데이터 액세스를 동시에 수행 할 수 있도록 개선
- 명령 처리 구조 단순화를 위해 모든 데이터 처리나 연산 명령은 내부 레지스터를 중심으 로 이루어지며 레지스터와 메모리 사이의 데이터 이동은 별도의 로드 및 스토어 명령으 로 수행한다.
- 많은 범용 레지스터와 효율적인 명령 세트를 가지고 있다.
- 명령 세트를 확장하기가 매우 용이한 구조(ISA ; Instruction Set Architecture)로 되어 있다.
- Endian Mode 지원
- ARM 사는 반도체 제조사가 아니다.
- 가격이 저렴하다.
▶ENDIAN MODE
- Endian : 컴퓨터나 메모리와 같은 1차원 공간에 여러 개의 연속된 대상을 배열하는 방법
- Little Endian Mode : 큰 단위가 앞에 오는 것
- Big Endian Mode : 작은 단위가 앞에 오는 것
종류 |
0x1234 의 표현 |
0x 12345678의 표현 |
Big Endian Mode |
12 34 |
12 34 56 78 |
Little Endian Mode |
34 12 |
78 56 34 12 |
▶ ARM의 응용 분야
- 임베디드 실시간 시스템 : 데이터 저장 장치, 자동차, 산업용 기기, 네트워크 장비 등과 같이 OS를 탑재하지 않은 프로세서 내장형 실시간 제어 시스템. ex) 블랙박스
- 개방형 응용 플랫폼 : Linux, Palm OS, Symbian OS, Windows CE 등의 OS를 탑재하여 다양한 응용 프로그램을 실행할 수 있는 개방형 플랫폼, 휴대용 기기, 오락기기, 디지털 영상 처리 장비 등에 사용됨. ex) 핸드폰, 패드
- 보안 응용 분야 : 스마트 카드, SIM 카드, 화폐지불 시스템 등
★Altium▶ 한글화
- Altium에는 다른 전자캐드 프로그램들과 달리 한글화 서비스가 가능합니다.
DXP -> Preferences 를 선택합니다.
위와 같이 한글화가 완성 됩니다.
▶ PCB 프로젝트 생성하기
File -> New -> Project -> PCB Project 를 선택해줍니다.
생성된 PCB Project에 우클릭 후 -> Add New to Project -> Schematic을 선택해줍니다.
위와 같은 Schematic 화면이 생성 되게 됩니다.
▶ 부품 추가 하기 1. 단축키 P , P를 누릅니다. 2.
위와 같은 부품 추가 창이 뜹니다. 여기서 Choose를 선택해 줍니다.
3. 위와 같은 창이 열리고 부품의 경우 라이브러리 선택을 Device 로 한 후에 부품 이름을 검색하여 넣어 주면 된다. 만일 Connector를 추가 할 시 라이브러리를 바꾸어서 검색해 보면 된다. cf)) 부품 방향 전환
부품을 더블 클릭 한 후 위에 보이는 창처럼 Mirrored를 클릭 한 후 OK 하면 된다. ▶ 반파정류 회로를 그려 봅니다.
부품을 위와 같이 추가 하여 그립니다. 그런데 부품의 자세히 보면 부품의 순서가 정해져 있지 않은 것을 알 수 있습니다. 부품의 순서 정하기는 다음과 같은 절차로 할 수 있습니다.
Tool -> Annotate Schematics를 선택해줍니다.
위와 같은 창이 뜨게 되고, Update Changes List 와 Accept Changes 를 선택 해줍니다.
마지막으로, Execute Changes(빨간상자 친 부분)을 선택하고 창을 닫습니다.
위와 같이 부품에 번호가 매겨 진 것을 볼 수 있습니다. ▶ PCB 보드 만들기 본격적으로 Artwork을 하기 위해서는 PCB 보드가 필요 합니다. Schematic에서 만든 회로도를 보드위로 불러와 부품 배치와 아트웍을 하기 위해 생성하여 줍니다.
PCB Project를 우 클릭 후 -> Add New to Project -> PCB를 선택 해줍니다.
위와 같은 창이 뜨게 됩니다. 이제 Schematic에 있는 부품을 이 곳으로 불러와야 합니다. 아래와 같이 Desgin -> Update PCB Document 를 하여 줍니다.
위와 같은 창이 뜨게 되고, Execute Changes를 선택하여 주면,
위와 같이 부품들을 PCB 보드로 불러 옵니다.
이런 식으로 적절하게 부품 배치를 합니다.
▶ PCB 전체 보드 외곽 설정 하기
화면 아래에 층에서 Keep out layer를 선택후 단축키 P + L을 한 후에
아래 그림과 같이 외각을 그려 줍니다.
그리고, 위와 같이 Board Shape -> Define from selected objects를 선택하면!!
이런 식으로 보드 모양이 잘라지게 됩니다.
주의 할 점은 외곽의 Keep out 분홍색 선을 다 선택한 상태로 해야 합니다. ▶ 라우팅 하기 (선 긋기)
화면 전체에서 층 선택을 Top면 선이면 Top layer를 Bottom 면 선이면 Bottom Layer를 선택 후 단축키 (P + T)를 선택후 라우팅을 아래 와 같이 해줍니다.
빨간선은 Top Layer 선입니다. 주의할점)) 그라운드는 폴리건을 할 때 Net을 해주므로 GND는 선 연결을 해주지 않아도 됩니다. ▶ 폴리건 하기 단축키는 P , G
위와 같은 창에서 Layer를 선택하고 GND를 연결 시킬 시킬 경우 Connect to Net에서 GND를 연결 시켜 줍니다. ( 이 것 때문에 라우팅에서 GND 는 연결하지 않아도 되었던 것 입니다!)
외곽을 다시 한번 그리듯이 클릭 하여 주면 이처럼 폴리건이 씌워 집니다. ▶ 거버, NC드릴 파일 생성 이제 거의 마지막 단계 입니다. PCB를 모두 그린 후 보드 제작을 위해 거버 파일과 NC 드릴 파일을 PCB제작 회사에 넘겨 주어야 합니다.
File -> Fabrication Outputs -> Gerber Files 를 선택합니다.
위와 같은 창이 뜨면 Plot Layers를 선택해 All을 선택하고 OK를 하여 줍니다. 이번에는 NC 드릴 파일을 생성해 봅니다.
File -> Fabrication Outputs -> NC Drill Files 를 선택해 줍니다.
위와 같은 창이 뜨게 되고, 단위라던지 비율 이라던지 조건을 맞추어 보고 OK를 선택 하여 줍니다.
위와 같은 부품 구멍의 위치가 나타나 있는 NC 드릴 파일이 생성 되게 됩니다. p.s) 설 연휴 바로 전날에 제 차례가 되어 고향에 다녀 오느라 업데이트가 늦었습니다. 그리고, H/W 시간에 진도가 너무 급하게 나가서 스샷 찍느라 정신없이 하느라 정리가 잘 된건지 모르겠네요 ㅎㅎ 남은 설 연휴 잘 보내시길 바랍니다. (__)/
'코스웨어 > 15년 스마트컨트롤러' 카테고리의 다른 글
20150226-22번-여지윤 - 함수 , 전,반파 정류 회로 (10) | 2015.02.26 |
---|---|
20150225 - 21번 엄민웅 피보나치 수열, switch문, funtion (7) | 2015.02.26 |
20150223 월요일 수업 디버깅 정리. (7) | 2015.02.25 |
공부하세요 (2) | 2015.02.23 |
점심때 적어드린 밴드주소입니다 (5) | 2015.02.16 |
20150213_일일업무보고서_14번_박서연_함수_아트웍실습 (14) | 2015.02.13 |
스마트 컨트롤러 교육 세부 일정표 (14) | 2015.02.12 |
20150211-12번-남수진- 업무일지 (10) | 2015.02.12 |