<C7A5C1A6C1F62E687770>

Size: px
Start display at page:

Download "<C7A5C1A6C1F62E687770>"

Transcription

1 마이크로칩마이크로컨트롤러응용모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤모터컨트롤한국마이크로칩기술지원부 (CAE) 서한석 ( ) 徐漢碩최영섭 ( ) 崔永燮

2

3 PREFACE PREFACE 연 일신기록을갱신하며유가의고공행진이계속되고있는요즘, 신문과 TV 등의언론매체에서는에너지관련뉴스가주목을끌고있습니다. 이 런이유로산업계에서는고효율기술을절실히필요로하고있으며, 결 과적으로모터제어관련분야가핫이슈로떠오르고있는것이현실입니다. 필자가 모터제어분야에한참매력을느끼고한창공부하던수년전, 시중서점에서임베 디드모터제어관련서적을구하기가쉽지않았습니다. 그후로꽤오랜시간이 흘렀지만최근상황도 크게달라지지않은것같습니다. 이책은임베디드모터제어분야의입문자를대상으로모터에대한기본적인지식이없어도단계별실습을꾸준히따라오면모터제어라는숲을볼수있도록눈높이를맞추는데 1 차적인목표를두었습니다. 이러한상황을고려하여브러시 DC 모터, 스텝퍼모터및브러시리스 DC 모터를그대상으로하였으며마이크로컨트롤러관련내용도모터제어와관련된주변장치로한정하여다루고자하였습니다. 특히 8비트 PIC16F887과 16비트 dspic30f3010을제어용마이크로컨트롤러로선정한이유는본서적을통해독자들에게 8비트및 16비트모두에대한경험과선택을드리기위함이며, 특히마이크로칩 8비트 PIC 마이크로컨트롤러를위한 C 컴파일러로널리알려져있는 HI-TECH PICC 컴파일러를다루고있는서적이국내에출간되지않아서불편해하고있는고객들에게조금이나마도움을드리기위함이었습니다. 본서적에첨부된데모 PCB는 8 비트용메카트로닉스(Mechatronics) 보드와 16 비트용 MCLV 보드를보완하여제작되었으며, 마이크로칩샘플디바이스들(PIC, Analog products) 도함께부록으로첨부하였습니다. PCB 보드상에자세한부품, 핀이름등을빠짐없이실크로처리하였습니다. 손수제작시에는필히지사홈페이지기술서적자료실에서회로도및기타부품리스트등을꼭확인하시기바랍니다. A/S 및서적가격등의문제로완제품으로지원하지못하는것에안타까운마음뿐입니다. 3

4 PREFACE 마이크로칩은현재약 500여종의 8, 16, 32비트마이크로컨트롤러를출시하고있으며, 모터제어관련분야에많은관심을두고투자를하고있으며그결과업계에서가장다양한모터제어전용제품군을출시하고있습니다. 이에부응하여한국지사에서는모터제어분야의전문엔지니어로구성된팀을운영하고있고, 최근업계에서대두되고있는최신센서리스제어및벡터제어등과같은고급기술에관한임베디드모터제어전문서적을출시할계획에있습니다. 본서적이출간되기까지가장많은지원과아낌없는격려를보내주신한국마이크로칩한병돈사장님께지면을빌려깊은감사의말씀드립니다. 본서적의내용및실습을위해아낌없는조언과도움을주신모터제어팀과, 그리고한국지사의모든임직원에게감사드리며, 서적과함께무상으로제공되는실습보드및마이크로칩제품을무상으로제공해준본사관계자여러분께도감사의말씀드립니다. 끝으로지난 16비트기술서적출간을계기로인연을맺은이후지속적인후원과격려를보내주시는지앤북송민호사장님께도감사의말씀드립니다. 20년전후발주자로시작한마이크로칩의 8비트 PIC 마이크로컨트롤러가업계 1위를달성하기까지보여주었던눈부신성과를머지않은미래에 16비트 PIC 마이크로컨트롤러가달성할수있기를바라며부족하지만본서적이작은보탬이될수있기를바랍니다. 본서적에서부족했던점이나기타문의사항과관련한기술지원은한국마이크로칩홈페이지 ( 를통해지속적으로지원할계획이며, 실습에사용한소스코드및회로도, 기타보충자료또한지속적으로업데이트할예정이므로독자여러분의따뜻한질책과조언을부탁드립니다. 2008년 5월 9일한국마이크로칩 CAE부, 최영섭올림 서한석 4

5 CONTENTS CONTENTS Chapter 마이크로칩회사소개 마이크로칩제품군 비트 PIC 마이크로프로세서 비트 PIC 마이크로프로세서 비트 PIC 마이크로프로세서 비트 dspic Digital Signal Controllers(DSC) 아날로그및인터페이스제품 직렬 EEPROM 보안데이터제품 마이크로칩개발툴 /16비트소프트웨어개발툴 MPLAB C30 C 컴파일러(16 비트용) Assembler / Linker / Librarian MPLAB SIM Software Simulator MPLAB VDI(Visual Device Initializer) 주변장치드라이버라이브러리 수학(Math) 라이브러리 DSP 알고리즘라이브러리 /16비트하드웨어개발툴 MPLAB ICD2 (In Circuit Debugger / Programmer) MPLAB REAL ICE (In Circuit Emulation System) MPLAB PM3 (Device Programmer) Explorer 16 Development Board dspicdem 80 pin Starter Development Board dspicdem 1.1 General Purpose Development Board 모터컨트럴개발시스템 PICDEM MC LV Motor Control Development Board dspicdem SMPS Buck Development Board 30 5

6 CONTENTS dspicdem.net Connectivity Development Board dspicdem 2 Development Board dspicdem 28 pin Starter Development Board 32 2 Chapter 마이크로칩개발툴및 C 언어프로그래밍 2.1 MPLAB IDE 통합개발툴셋업하기 MPLAB IDE 통합개발툴소개 MPLAB IDE 통합개발툴다운로드방법 MPLAB IDE 통합개발툴설치하기 MPLAB ICD2 디버거개발장비 MPLAB ICD2 인써킷(In-Circuit) 디버거(Debugger) 툴소개 MPLAB ICD2 소프트웨어설치및하드웨어연결하기 MPLAB ICD2 사용하기 MPLAB ICD2 사용환경(Settings) 설정하기 마이크로칩 16비트용 MPLAB C30 C 언어프로그래밍 MPLAB C30 컴파일러소개 MPLAB C30 컴파일러다운로드방법 MPLAB C30 컴파일러설치 MPLAB C30 컴파일러기초 C30 컴파일러변수기초 C30 컴파일러데이터형 전처리문 연산자(Operators) 제어문(Control Statement) 함수 배열(Array) 포인터(Pointer) 구조체(Structure) 와공용체(Union) 나열형(Enumerated) 변수 C30 컴파일러의속성(Attribute) C30 컴파일러의 I/O 포트액세스 인터럽트함수(Interrupt Service Routine) 154 6

7 CONTENTS 2.4 PIC 용하이텍(HI-TECH) PICC C언어프로그래밍 하이텍(HI-TECH) C 컴파일러소개 하이텍(HI_TECT) C 컴파일러설치하기 하이텍(HI-TECH) PICC-Lite v9.60pl2 컴파일러설치하기 하이텍(HI-TECH) PICC 컴파일러시작하기 MPLAB IDE 와개발툴을이용한프로그램(Firmware) 개발하기 MPLAB IDE 시뮬레이터사용하기 MPLAB ICD2 디버거사용하기 MPLAB ICD2 디버거를프로그래머로사용하기 190 Chapter 3 DC 모터(Brushed DC Motor) 3.1 DC 모터의개요 DC 모터의개요 DC 모터의구조및원리 고정자(Stator) 회전자(Rotor) 브러시(Brush) 와정류자(Commutator) DC 모터의종류 영구자석형 DC 모터(Permanent Magnet Brushed DC Motor) 분권형 DC 모터 (Shunt-Wound Brushed DC Motor) 직권형 DC 모터 (Series-Wound Brushed DC Motor) 복권형 DC 모터 (Compound-Wound Brushed DC Motor) DC 모터의종류별속도 vs 토크특성 DC 모터의구동회로 초퍼구동회로 (Chopper Drive Circuit) 하프- 브리지구동회로 (Half Bridge Drive Circuit) Half Bridge 구동회로 ( 정회전구동시) Half Bridge 구동회로 ( 제동시, Braking) Half Bridge 구동회로 ( 암- 쇼트, Arm Short) 풀- 브리지구동회로 (Full Bridge Drive Circuit) Full Bridge 구동회로 ( 정회전구동시, Forward Driving) Full Bridge 구동회로 ( 역회전구동시, Reverse Driving) Full Bridge 구동회로 ( 제동시, Braking) 205 7

8 CONTENTS Full Bridge 구동회로 ( 암- 쇼트, Arm Short) DC 모터제어 DC 모터 On/Off 제어실습 DC 모터 PWM 속도제어 (No Feedback) DC 모터 PWM 속도제어 (Optical Encoder Feedback) DC 모터 PWM 속도제어 ( 역기전력피드백) DC 모터 PWM 양방향속도제어 (Full-Bridge) 결론 248 Chapter 4 스텝모터 (Stepper Motor) 4.1 스텝모터의개요 스텝모터의특징 스텝모터의구조및원리 스텝모터의구조 스텝모터의원리 스텝모터의종류 영구자석스텝모터 (Permanent Magnet Stepping Motor) 영구자석스텝모터의동작원리 가변릴럭턴스스텝모터(Variable Reluctance Stepping Motor) 가변릴럭턴스스텝모터의동작원리 하이브리드스텝모터 (Hybrid Stepping Motor) 하이브리드형스텝모터의동작원리 스텝모터의종류별비교 스텝모터의구동 바이폴라(Bipolar) 와유니폴라(Unipolar) 이해 바이폴라(Bipolar) 스텝모터구동원리 유니폴라(Unipolar) 스텝모터 스텝모터의제어 풀스텝핑 (Full Stepping) 풀스테핑(Full Stepping) - 1 상( 相, Phase) 통전( 여자) 방식이해 풀스테핑(Full Stepping) - 1 상( 相, Phase) 통전( 여자) 방식실습 풀스테핑(Full Stepping) - 2 상( 相, Phase) 통전( 여자) 이해 278 8

9 CONTENTS 풀스테핑(Full Stepping) - 2 상( 相, Phase) 통전( 여자) 방식실습 하프스텝핑 (Half Stepping) 하프스테핑(Half Stepping) 상( 相, Phase) 통전( 여자) 이해 하프스테핑(Half Stepping) 상( 相, Phase) 통전( 여자) 실습 마이크로스텝핑 (Micro Stepping) 마이크로스테핑(Micro Stepping) 이해 마이크로스테핑(Micro Stepping) 실습 결론 301 Chapter 5 브러시리스모터 (Brushless Motor) 5.1 브러시리스모터소개 브러시리스모터의개요 브러시리스모터의구조 고정자(Stator) 회전자(Rotor) 홀센서 - (Hall Sensor) BLDC 모터의특성 토크(Torque)- 속도(Speed) 특성 BLDC 모터특성비교 브러시리스 DC 모터의 6-스텝제어 dspic30f의모터컨트롤 PWM 모듈개요 PWM 출력오버라이드(Override) 실습 - Lab 스텝커뮤테이션 (Six Step Commutation) 스텝커뮤테이션의이해 스텝커뮤테이션실습 - Lab2 (No PWM : 100% Duty Cycle) 홀-센서피드백 6-스텝커뮤테이션의개요 홀-센서피드백 6-스텝커뮤테이션실습- Lab 3 (No PWM : 100% Duty Cycle) 모터컨트롤 PWM 모듈소개 PWM 듀티사이클실습 - Lab 4 ( 듀티사이클가변) BLDC 모터의 6-스텝 PID 제어 PID 제어라이브러리실습 : DSP Library Example BLDC 모터의 6-스텝 PID 속도제어실습 : LAB 브러시리스모터의정현파제어 395 9

10 CONTENTS 브러시리스모터의정현파구동개요 브러시리스모터의정현파전압 PID 제어 : Lab 결론 409 A 부록 부록 1. 마이크로칩모터컨트롤데모보드회로도 DC 모터( 스텝모터) 구동회로도 BLDC(Brushless DC) 모터구동회로도 모터컨트롤데모보드전원회로도및기타회로도 모터컨트롤데모보드부품리스트 425 부록 2. 마이크로칩모터컨트롤데모보드조립및세팅 PIC16F887 DC( 스텝) 모터용보드조립및세팅 dspic30f3010 BLDC 모터용보드조립및세팅

11 CHAPTER 마이크로칩회사소개 1.1 마이크로칩제품군 1.2 마이크로칩개발툴 1.3

12 Motor Control 1.1 마이크로칩회사소개 과거마이크로컨트롤러는시스템에설계해넣기가쉽지않았다. 이러한제품들은어느정도의통합기능을제공했지만적절한규모의경제를달성하기위해서제조중에디바이스에프로그램코드를마스킹해야했다. 마스크프로그램(mask programmed) 디바이스 는높은 NRE(Non Recurring Engineering) 비용이요구되며, 이로인해많은수의디바 이스로비용을상쇄할수있도록디바이스를대량으로생산해야했다. 이러한마스크프 로그램방식은소량애플리케이션에서사용할수없었을뿐만아니라새로운마스크를 만들지않으면코드업데이트와버그수정도불가능했다. 많은엔지니어들이여러접근방식을도입했는데, 이중가장인기있던방식은범용 마이크로컨트롤러와외부 EPROM 및 I/O 를함께사용하는방법이었다. 이방법은설계 유연성과함께소형설계에있어현실적인비용구조를제공했다. 하지만이와동시에 훨씬더많은설계노력이필요했으며보드공간을많이차지했고, 이는비용상승으로 이어졌다. 마이크로컨트롤러에 대한 엔지니어들의 인식은 1988년 마이크로칩이 PIC16C5X 의 CMOS 버전을발표하면서일대전환을맞이했다. 이디바이스는이해하기쉽고프로그 래밍이용이했으며가격도저렴했다. 무엇보다중요한점은필드프로그래밍이가능했다 는것이다. 이러한표준 1회프로그램(OTP) 마이크로컨트롤러를사용하면단순하고저렴 한프로그래머를사용해생산라인에서코드를넣을수있다. PIC16C5X제품군을 통해 기업들의제품출시가더용이해졌고, 생산에서버그수정과업그레이드를거의즉각적 으로구현할수있게되었으며, 다양한애플리케이션에서하나의범용디바이스를사용 함으로써비축해야하는부품의수를줄일수있었다. 이러한개념은곧엔지니어링커 뮤니티에널리도입됐으며 1989년마이크로칩 OTP PIC 마이크로컨트롤러출하량은 100 만개를돌파했다. 마이크로컨트롤러개발툴의비용과복잡성이화두였던 1980년대후반과 1990년대초 반, 마이크로칩은 PIC16C5X 제품군출시를통해단순하고안정적인저가용소프트웨어 개발툴을선보였다. 이어 1991년마이크로칩은세계최초의 Windows 3.0 기반개발 시스템인 MPLAB IDE(Integrated Development Environment) 를선보였다. 강력한 RISC 아키텍처, 단순한프로그래밍모델, 그리고통합 I/O를갖춘 PIC 마이크로컨트롤러는유닛당비용이낮은마스크프로그램마이크로컨트롤러의주영역이었던대량애플리케이션에서사용되기시작했다. 1992년마이크로칩은첫번째 ROM(Read 12

13 Chapter 1. Only Memory) 기반 CMOS PIC 마이크로컨트롤러를발표했다. 이로써기업들은최초생산가동에서 OTP 디바이스를사용, 비용절감을위해공장에서프로그래밍되는 ROM 마이크로컨트롤러로옮겨가기전에제품의완전한현장테스트와버그수정, 기능강화를구현할수있게됐다 년마이크로칩이업계최초로인헨스드플래시(Enhanced Flash) 마이크로컨트롤러를출시하면서유연성은한층높아졌다. 이디바이스는인쇄회로기판에납땜한후플래시메모리를통해손쉽게프로그래밍이가능했기때문에프로그래밍단계를생산공정의후반으로옮기고, 하나의보드에여러다른디바이스를함께프로그래밍하는것이가능해졌다. 또한플래시메모리덕분에 PIC 마이크로컨트롤러를현장에서재프로그래밍할수있었기때문에제품이고객에게인도된이후에도업데이트가가능했다 년대에는보드면적의중요성이갈수록커졌다. 1996년등장한더작은크기의새로운패키지를통해마이크로칩은 8핀패키지로마이크로컨트롤러를제공하는최초의기업이됐다.PIC 마이크로컨트롤러의사용은계속해서빠른속도로확장됐으며,1999년마이크로칩은 PIC 마이크로컨트롤러출하량 10 억개돌파를발표하기에이르렀다 년까지마이크로칩에서 20만개이상의 PIC 마이크로컨트롤러개발키트가판매됐다. PIC 마이크로컨트롤러제품군의개발은초기 PIC 마이크로컨트롤러아키텍처의장기간에걸친성공으로특징지을수있다. RISC 아키텍처, 별도의명령어및데이터버스 ( 하버드아키텍처) 와짧은 2단계파이프라인을통해 PIC 마이크로컨트롤러는거의매주기마다명령어를실행할수있다. 1999년에는향상된아키텍처를제시한 PIC18CXXX 제품군이출시됐다. 이전까지, 그리고이후개발된모든 PIC 마이크로컨트롤러와마찬가지로 PIC18CXXX는최초의 PIC16CXXX 제품군과완전한하위호환성을제공했다. 시장조사기관인가트너데이터퀘스트에따르면 PIC 마이크로컨트롤러의여세에힘입어마이크로칩은세계 1위의 8 비트마이크로컨트롤러공급업체로부상했다. 1996년만해도 5 위공급업체였던마이크로칩의이러한성과는불과몇년만에이뤄진것이다. 현재애널리스트들은 8비트마이크로컨트롤러애플리케이션의지속적인확장을예상하고있으며, 마이크로칩은혁신을통해다양한애플리케이션에계속해서 PIC 마이크로컨트롤러를제공하고있다. 2004년마이크로칩은세계최소형마이크로컨트롤러인 PIC10F를발표했다.6핀 SOT23 패키지로제공되는이제품은플래시메모리를탑재했고 1회용에가 까울정도로경제적인새로운지능형전자애플리케이션의개념을구현할수있게해준다. 또다른한쪽에서는 DSP와 16비트마이크로컨트롤러의장점만단일디바이스에결합한 dspic 디지털신호컨트롤러제품군이출시됐다. 13

14 Motor Control 오늘날 30억개이상의 PIC 마이크로컨트롤러가사용되고있으며, 이탁월한마이크로컨트롤러는사실상거의모든제품에내장되어있다고할수있다. 마이크로칩연역 1989 세계최초로필드프로그래머블마이컴인 OTP 출시 1990 일백만개의 PICmicro 마이컴판매달성 1994 FLASH PICmicro 마이컴출시 1996 세계최초로 8핀마이컴출시 비트마이컴시장점유율세계 2위달성 1999 고성능 8비트마이컴인 PIC18FXXX 출시 2001 세계적으로인증된 Telcom사인수및아날로그제품군확장 2002 PowerSmart 인수및 Fuel Guaging 솔루션제공 (Duracell 반도체설계회사) 비트마이컴시장점유율세계 1위달성 비트마이컴인 dspic 출시 / 6핀의 8비트마이컴출시 억개의 PICmicro 마이컴판매달성 GHz IEEE 트랜시버/ 네트워크분석툴및 ZigBee 플랫폼출시 2007 PIC 마이크로컨트롤러터치센싱애플리케이션 mtouch 솔루션발표 2007 PIC 마이크로컨트롤러제품라인을 32 비트 PIC32 제품군으로확장 2008 임베디드애플리케이션용 USB OTG 내장 32비트 PIC32 MCU 제품군출시 억번째 PIC 마이크로컨트롤러출하 현재하루 170 만개이상의마이크로컨트롤러를출하하고있다. 1.2 마이크로칩제품군 아래그림은전형적인임베디드제어보드및신호의흐름을보여주고있다. 온도센서, 압력센서, 모션센서등의아날로그센서신호들이증폭및필터링되어디지털신호로변환되어마이크로컨트롤러로의입력신호가된다. 이외에도전원관리블럭, 파워드라이버, 다양한버스구조, 주변장치및통신프로토콜등의아날로그신호등이마이크로컨트롤러와인터페이스를이루고있다. 각각의블럭들은마이크로칩에의해제공되고있는제품및기능들을개괄적으로보여주고있다. 14

15 Chapter 비트 PIC 마이크로프로세서 [ 성능] - MIPS M4K 코어(1.5 DMIPS/MHz) - 72 MHz 동작클럭 - 4 채널 DMA 지원.CRC 기능내장. 아이들모드동작기능강화 [ 메모리] - 32~512 Kbytes 플래시롬메모리 - 프리패치(Prefetch) 버퍼/ 캐쉬 - 8~32 Kbytes 데이터램 [ 인터럽트] - 하드웨어벡터인터럽트컨트롤러.63개인터럽트벡터지원 - 풀 32 레지스터쉐도우셋 자세한사항은본사웹사이트 방문해본다. 15

16 Motor Control 비트 PIC 마이크로프로세서 마이크로칩의풍부한주변장치를갖추고있는 8비트 PIC 마이크로프로세서는플래시, OTP(One-Time Programmable) 및 ROM 프로그램메모리옵션등을통해다양한제품을제공하고있다.RISC코어를기본으로설계된이들제품군은거의코드변경없이 6 핀에서 100 핀으로손쉽게마이그레이션할수있도록공통의아키텍처를채용하고있다 비트 PIC 마이크로프로세서 16비트 PIC24 마이크로프로세서는 8비트 PIC18 제품군의성능, 주변장치및기능을토대로설계되었으며최대 40MIPS 의성능을발휘한다. 16비트제품개발언어인 MPLAB C30 컴파일러를통해높은처리성능과 C 코드집적도를제공한다. PIC24F/PIC24H 시리즈는소프트웨어및 MPLAB IDE와완벽하게호환되기때문에요구사항의변화에따라손쉽게마이그레이션할수있는것은물론, 기존의리소스를그대로활용하면서애플리케이션에성능및기능을추가할수있다 비트 dspic DigitalSignalControllers(DSC) 16비트고성능 dspic DSC는마이크로프로세서가가진강점과 DSP의강점을단일코어로통합한디바이스다. 최대 40MIPS의속도를제공하는이제품은 C 프로그래밍작업의효율성을높이도록설계되었으며플래시프로그램메모리, 데이터 EEPROM, 강력한주변장치및다양한소프트웨어라이브러리를갖추고있다. 툴및디자인환경에서친숙한마이크로컨트롤러의느낌을그대로제공하고있는 dspic DSC는모터컨트롤및전력변환, 음성/ 오디오, 인터넷/ 모뎀연결, 통신, 암호화, 고속감지및자동차애플리케이션을위해개발되었다고말할수있다. 다음그림은마이크로칩의 8/16비트 MCU 및 DSC(Digital Signal Controller) 제품군요약및응용분야에따른구분을보여주고있다. 16

17 Chapter 1. [8/16비트 MCU 및 DSC 제품군요약] [ 응용분야에따른 8/16비트 MCU 및 DSC 제품군분류] 17

18 Motor Control 아날로그및인터페이스제품 마이크로칩은마이크로컨트롤러외에도임베디드시스템을위한아날로그및인터페이스제품군으로써선형, 복합신호, 전원관리, 온도관리, 배터리관리및인터페이스장비등을포함해포괄적인포트폴리오를제공하고있다. 특정유형의제품과수천개에달하는제품사양에대한보다자세한정보는마이크로칩웹사이트를통해제공받을수 있으므로, 여기에서는주요사양만소개하기로하겠다. 18

19 Chapter 1. 19

20 Motor Control 직렬 EEPROM 마이크로칩은 128비트에서 1M 비트에이르는집적도, 1.8V 까지가능한작동전압, 다양한버스프로토콜 (I 2 C, Microwire 및 SPI) 등을비롯한광범위한시리얼 EEPROM 옵션을제공하고있다. 이들제품은 40 C~ 125 C에이르는모든표준온도범위에서작동 가능하다. 20

21 Chapter 보안데이터제품 마이크로칩의 KEELOQ 코드호핑(code hopping) 기술은단어길이가긴코드와함께암호화및동기화기법을사용해고도의보안성을실현해준다. 자세한내용은마이크로칩웹사이트를통해확인할수있다. 1.3 마이크로칩개발툴 마이크로칩의 8/16비트제품을이용한개발시유용하게사용될수있는소프트웨어및하드웨어개발툴에대해살펴보자 /16 비트소프트웨어개발툴 MPLAB C30 C 컴파일러 (16 비트용 ) MPLAB C30 C Compiler는모든기능을완벽하게갖춘 ANSI 규격최적화컴파일러로써문자열조작, 동적메모리할당, 데이터변환, 타임 키핑(timekeeping) 및수학라이브 러리(math libraries) 등전체 ANSI C 표준라이브러리를포함하고있다 Assembler / Linker / Librarian MPLAB ASM30 은모든기능을갖춘매크로어셈블러로써, 사용자정의매크로, 조건부어셈블리및다양한어셈블러지시어등의강력한코드생성툴이며, 무료로제공되고 있다. MPLAB LINK30 및 MPLAB LIB30 은효율적인연결, 라이브러리생성및유지관리를지원하는 Linker 및 Librarian 모듈이다. MPLAB ASM30은무료통합개발환경툴인 MPLAB IDE 설치시해당디렉토리에자동으로설치된다 MPLAB SIM Software Simulator MPLAB SIM 소프트웨어시뮬레이터는 CPU와명령어를완벽히시뮬레이션할수있을뿐만아니라 I/O, 인터럽트, UART, A/D 모듈등과같은주요주변장치의시뮬레이션또한지원해주는이상적인알고리즘개발툴이다. 21

22 Motor Control MPLAB VDI(Visual Device Initializer) MPLAB VDI를통해전체 DSC 를도식적으로구성할수있으며, 구성이완성되면한번의마우스클릭으로어셈블리또는 C 프로그램에서사용가능한초기화코드를생성한다. MPLAB VDI 는일련의작동조건뿐만아니라핀, 메모리및인터럽트의할당및충돌에대한광범위한오류검사를실행한다. 생성된코드파일은 MPLAB Project Manager 를통해나머지애플리케이션코드와쉽게통합할수있다. 또한리소스할당및구성에대한상세한보고서를통해프로젝트문서화를단순화한다. MPLAB VDI 의주요기능: 드래그앤드롭기능선택 원클릭구성 포괄적인오류검사 초기화코드생성 MPLAB Project Manager를통해손쉽게통합 출력보고서를통해프로젝트문서화요건완화 22

23 Chapter 주변장치드라이버라이브러리 270개이상의 C 유틸리티기능으로구성된이라이브러리는하드웨어주변장치모듈을다양한모드로설정및작동할수있도록지원한다. 주변장치드라이버라이브러리에포함된기능은다음과같다. 10비트및 12비트 A/D 컨버터 UART, SPI, I²C 및코덱인터페이스 모터컨트롤 PWM 및 QEI 범용타이머 IC(Input Capture) 및 OC(Output Compare) 수학(Math) 라이브러리 이 IEEE 754 호환라이브러리는단일/ 이중정밀부동소수점 ANSI C 표준수학함수 를제공한다. 이들루틴은코드크기를최소화할수있도록최적화되었다. 수학라이브러리는어셈블리나 C 에서사용할수있으며주요함수는다음과같다. sin, cos, tan asin, acos, atan ln, log10, sqrt, power ceil, floor, mod, frexp DSP 알고리즘라이브러리 포괄적인 DSP 빌딩블록라이브러리는실행속도에맞게어셈블리코드에서완벽하게최적화되었다.DSP함수는어셈블리나 C 에서사용할수있으며,DSP알고리즘라이브러리에서지원되는주요알고리즘은다음과같다. 연속적 IIR 필터 FIR 필터및 LMS 필터 상관관계, 회귀선 FFT 및윈도우함수 행렬및벡터연산 23

24 Motor Control /16 비트하드웨어개발툴 MPLAB ICD2 (In Circuit Debugger / Programmer) MPLAB ICD 2 디버거및프로그래머로써강력한성능의저가형개발툴이다. MPLAB ICD 2는 MPLAB IDE에서작동하기때문에어셈블리또는 C 소스코드를디버그하고단일단계모드에서변수를확인및수정하며브레이크포인트를설정할수있다. 주요기능 : 고속동작 USB 또는시리얼포트를통해 PC 연결 플래시메모리프로그래머 지능형 watch 변수윈도우 고급브레이크포인트기능 MPLAB REAL ICE TM (In Circuit Emulation System) MPLAB REAL ICE In Circuit Emulator 는마이크로칩의차세대에뮬레이션및디버깅 시스템이다. PIC16 일부, PIC18, dspic33f, PIC24H, PIC24F 및 dspic30f 16비트디바이스등을지원하는이시스템은손쉽고신속한애플리케이션개발및디버깅을위해강력한회로내에뮬레이션플랫폼을제공한다. 타깃마이크로컨트롤러자체의특수하드웨어로직을통해에뮬레이션이수행되기때문에별도의에뮬레이션장비가필요하지않다. 24

25 Chapter 1. 주요기능 : 최대 최대 6개의하드웨어브레이크포인트 1,000개의소프트웨어브레이크포인트 사용자제어방식의프로그램메모리추적/ 데이터메모리로그 고속 USB 2.0 PC 인터페이스 기존의 ICSP(In-Circuit Serial Programming ) 인터페이스나 LVDS( 추가옵션) 실행(Run), 정지(Halt) 및단일단계(Single-step) 모드 로직프로브 (logic probe) 스톱워치 MPLAB PM3 (Device Programmer) MPLAB PM3 Device Programmer는양산환경을지원할수있을정도로완벽한기능을갖춘범용장비프로그래밍솔루션으로서, 상호호환되는소켓모듈을사용해프로그래밍이가능한마이크로칩의거의모든장비를지원한다.MPLABPM3는많은장비에서프로그래밍시간을단축하고강력한 ICSP 를위해내장인터페이스를제공한다. 25

26 Motor Control Explorer 16 Development Board PIC24 마이크로컨트롤러및 dspic33f 디지털신호컨트롤러제품군의기능및성능을평가하는데사용되는저가개발보드로서, 주요설계요구를신속하게개발및검증할수있도록지원하는데모보드이다. 주요기능 : PIC24F, PIC24H 및 dspic33f General Purpose 및 Motor Control 제품지원 상호호환되는 2개의 PIM(Plug In Module) : PIC24F 및 dspic33f용 PICtail Plus 애플리케이션별도터(daughter) 카드를위한모듈식설계: - SD(Secure Digital)/MMC(Multimedia Card) -SPI 인터페이스(AC164122) - Ethernet(AC164123) - 컴팩트플래시, IEEE WPAN, IrDA 프로토콜, 음성재생도터카드 dspicdem TM 80 pin Starter Development Board 이개발보드는 dspic33f 디바이스를비롯해 80핀 dspic30f General Purpose 및 Motor Control 제품군을평가할수있는개발보드이다. 26

27 Chapter 1. 주요기능 : 80핀dsPIC30F6014A General Purpose PIM(MA300014) 포함 80핀dsPIC30F6010 Motor Control PIM(MA300013) 및 80핀~100핀dsPIC33F General Purpose PIM(MA330012) 지원 9V 전원공급 LED, 스위치, 전위차계, UART 인터페이스 음성대역신호입력을위한 A/D 입력필터회로 음성대역출력을위한온보드 DAC 및필터 회로프로토타이핑영역 어셈블리언어데모프로그램및사용자가이드 3.3V로의 5개출력에대한선택형전압레귤레이터포함 dspicdem 1.1 General Purpose Development Board 이보드는음성및오디오관련애플리케이션에대한개발을지원한다. 주요기능 : dspic30f6014a PIM(MA300014) 포함 직렬통신채널(2개의 UART, SPI, CAN) Si3000 코덱(MIC IN/ 스피커 OUT 상태) 범용프로토타이핑영역및확장헤더 디지털전위차계,LED, 스위치등 27

28 Motor Control 모터컨트럴개발시스템 BLDC, ACIM, PMSM, SR 모터및 UPS 애플리케이션의신속한프로토타이핑및검증을지원하는시스템으로, dspicdem MC1 Motor Control Development Board와 2개의전원모듈옵션가운데하나로구성되어있다. dspicdem MC1H 3 Phase High Voltage Power Module(DM300021) 은 AC 전원애플리케이션을지원하는반면, dspicdem MC1L 3 Phase Low Voltage Power Module(DM300022) 은최대 48V까지 DC 전원애플리케이 션을지원한다. 주요기능 : 전원부냉각을위한열발산판 (heat sink) 완전자동화된전원회로보호 전원회로에서의절연 모터피드백신호를위한다양한옵션 28

29 Chapter PICDEM TM MC LV Motor Control Development Board Sensored 및 senserless BLDC 모터컨트롤애플리케이션을효율적으로평가및개발할수있도록지원하는개발보드로서 28핀 dspic30f3010 가사용된다. 주요기능 : I²C 인터페이스에서과전류보호및온도센서지원 3-phase 전압소스인버터브리지 9개의 LED - 3 개는상태표시용, 나머지 6개는 PWM 표시용 모터전류및역기전력(Back EMF) 감지를위한테스트지점 속도제어전위차계 48V 및 2.2A의최대모터정격지원 28핀PIC18 MCU 지원( 특히 PIC18F2431) 즉각적인사용이가능한전원공급장치및모터제공( 옵션) 29

30 Motor Control dspicdem SMPS Buck Development Board 단순한 DC/DC SMPS(Switch Mode Power Supply) 를구현하는개발보드로서, 디지털루프제어설계가처음인초보설계자들을위한데모보드이다. 주요기능 : 이중의독립형강압용컨버터 (buck converter) 강압용컨버터는동기또는비동기모드에서작동가능 입력전압의범위는 7V~15V( 공칭전압 9V) 출력전압은 0V를시작으로입력전압 - 1.5V로설정가능 사용자는동적출력로드가과도응답을조사할수있도록지원 dspicdem.net TM Connectivity Development Board 소프트모뎀및접속기반애플리케이션에대한개발을지원하는개발보드이다. 주요기능 : dspicdem.net 1 (DM ) 은 FCC/JATE PSTN 국가를지원 dspicdem.net 2 (DM ) 은 CTR 21 PSTN 국가지원 dspic30f6014 PIM(MA300011) 포함 DAA/AFE 칩셋을연결하는 10Base-T Ethernet MAC 및 PHY 인터페이스와 PSTN 인터페이스 직렬통신채널(UART 및 CAN) 상시저장을위한외장 EEPROM 및 RAM 메모리 범용프로토타이핑영역및확장헤더 LED, 스위치, 전위차계및 LCD 디스플레이 30

31 Chapter dspicdem 2 Development Board 18 핀, 28핀및 40핀 DIP 패키지 dspic DSC 장비모두를위한솔루션을효율적으로설계할수있는설계보드이다. 주요기능 : 모터컨트롤, 센서및범용제품군을포함해 18 핀, 28핀및 40핀 DIP 패키지로 11개의 dspic DSC 장비를위한개발플랫폼제공 온보드 CAN 및 UART 지원 다양한오실레이터옵션을온보드지원 모든 11개장비에서애플리케이션개발을신속하게시작할수있도록소스코드예와사용자가이드가제공 31

32 Motor Control dspicdem 28 pin Starter Development Board 모터컨트롤, 센서및전력변환제품군을포함해 28핀 dspic30f MCU에서효율적으로개발에착수할수있도록하는개발보드이다. 주요기능 : 28핀dsPIC30F2010 MCU포함 9V 전원공급장치로부터의전원입력 UART 인터페이스 MCU의모든 I/O 핀에액세스하기위한헤더 회로프로토타이핑영역 어셈블리언어데모프로그램및설명서 모든 dspic30f 28핀 DIP 또는 SOIC 장비수용 32

33 CHAPTER 마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발개발툴및마이크로칩개발툴및 C 언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어 C 언어프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍 2.1 MPLAB IDE 통합개발툴셋업하기 2.2 MPLAB ICD2 디버거개발장비 마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩마이크로칩 비트용비트용비트용비트용비트용비트용비트용비트용비트용비트용비트용비트용비트용비트용비트용비트용비트용비트용비트용비트용비트용비트용 MPLAB MPLAB MPLAB MPLAB MPLAB MPLAB MPLAB MPLAB MPLAB MPLAB MPLAB MPLAB MPLAB MPLAB MPLAB MPLAB MPLAB MPLAB MPLAB MPLAB MPLAB MPLAB C30 C30 C30 C30 C30 C30 C30 C30 C30 C30 C30 C30 C30 C30 C30 C30 C30 C30 C30 C30 C30 C30 C 언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어언어프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍프로그래밍 2.3 마이크로칩 16 비트용 MPLAB C30 C 언어프로그래밍 PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC 용하이하이하이하이하이하이하이하이하이하이하이하이하이하이하이하이하이하이하이하이하이하이 2.4 PIC 용하이텍 (HI-TECH) PICC C 언어프로그래밍

34 Motor Control 2.1 MPLAB IDE 통합개발툴셋업하기 MPLAB IDE 통합개발툴소개 MPLAB IDE(Integrated Development Environment, 마이크로칩통합개발환경 ) 는 MPASM, MPLAB C18/30등의 Language Tool과 MPLAB ICD2, Real ICE, Pickit2, ICE2000 및 ICE4000, PM3 등의디버깅및프로그래밍툴등을하나의통합환경인 MPLAB IDE라는소프트웨어안에서이루어질수있도록지원해주는통합개발환경소프트웨어이다. 이소프트웨어는개발자 PC에서코드의편집, 컴파일, 링크및다양한하드웨어개발툴과인터페이스해주는개발 Workstation 이다. 즉, 마이크로칩 MPLAB IDE를이용하여 PIC MCU 및 dspic Digital Signal Controller 개발이가능하며마이크로칩웹사이트를통해무료로제공되고있다. 따라서 MPLAB IDE에익숙해지게되면마이크로칩의 8비트및 16비트모든디바이스를개발함에있어서디바이스의변환이쉽고, 자유로워지게된다. MPLAB IDE에는툴바와다양한윈도우즈를가지고있는윈도우어플리케이션프로그램으로써현재 (2008년 3월 ) Version 8.02가제공되고있으며향후보다나은서비스를 34

35 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 위해지속적인업데이트가이루어지고있다. 프로젝트관리를위한툴인프로젝트매니저는개발자가작업중인프로젝트와연관된다양한파일들즉, 소스파일및헤더파일, 링크파일등을한눈에볼수있도록지원함으로써프로젝트관리가용이하도록지원해주는유익한툴이다. Embedded System 개발자들에게있어가장많이사용하게되는텍스트에디터는일반적으로코드를편집하는툴로써 C언어및 Assembly 코드에따라다양한색상을지원해줌으로써코딩을효과적으로할수있도록지원해주고있다. 각레지스터및데이터메모리, 프로그램메모리, Disassembly의내용확인을위한윈도우, 그리고메모리사용현황을한눈에알아볼수있도록지원하는메모리게이지기능등은개발업무에많은편의와도움을제공해주고있다 MPLAB IDE 통합개발툴다운로드방법 MPLAB IDE는마이크로칩공식홈페이지 ( 를통해무료로다운로드할수있으며, 새로운디바이스출시에따른지원및개선등을위해지속적인업데이트가이루어지고있으므로최신버전으로업데이트하는습관을갖기를추천한다. 다운로드위치 : Design MPLAB IDE 35

36 Motor Control MPLAB IDE 통합개발툴설치하기 그럼이제 MPLAB IDE 설치에대해알아보도록하자. 먼저마이크로칩공식홈페이지를통해 MPLAB IDE를다운로드받은후압축을해제하여생성된파일중인스톨파일 (setup.exe) 을실행한다. 설치과정중 MPLAB ICD2 등을위한설치옵션을물어보는창이뜨게되는데이때가능한모든옵션을선택할것을권장한다. <STEP1> 인스톨파일실행 (setup.exe) <STEP 2> 인스톨마법사실행과정 <STEP 3> 설치시작 (Next 버튼클릭 ) 36

37 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 <STEP 4> 라이센스동의 (Accept Agreement 선택후 Next 버튼클릭 ) <STEP 5> 설치타입선택 (Complete 선택후 Next 버튼클릭 ) <STEP 6> 폴더위치선택 ( 권장하는기본폴더에설치 ) 주의 : Microchip 관련어플리케이션의기본폴더인 C:\Program Files\Microchip 에설치할것을적극권장한다. 37

38 Motor Control <STEP 7> 애플리케이션마에스트로프로그램라이센스동의 (Agree 선택후 Next 버튼클릭 ) <STEP 8> 파일복사시작 (Next 버튼클릭 ) 38

39 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 <STEP 9> 설치과정 ( 실행중인응용프로그램이있으면, 아래와같이종료하라는경고를보여준다. 이때응용프로그램을종료할것을권장한다.) <STEP 10> 하이텍 (HI-TECH) C 컴파일러 LITE 버전설치시작 (Next 버튼클릭 ) MPLAB IDE 설치시에하이텍 (HI-TECH) C 컴파일러라이트버전을설치할것인지를물어본다. 만약, 이번 PIC16F887 모터실습시에, 정품또는구입한하이텍 C 컴파일러가없다면, 이후설치과정을진행하기를권장한다. 39

40 Motor Control <STEP 11> 하이텍 C 컴파일러 LITE 버전라이센스동의 ( 동의체크박스에체크 ) <STEP 12> 하이텍 C 컴파일러 LITE 버전설치위치설정 (Next 버튼클릭 ) 디폴트폴더설치권장 : C:\Program Files\HI-TECH Software\PICC\LITE\9.60 <STEP 13> 하이텍 C 컴파일러 LITE 버전설치언어 (English 권장 ) 및환경 Path 추가설정 ( 체크권장 ) 후 Next 버튼클릭 40

41 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 <STEP 14> 하이텍 C 컴파일러 LITE 버전설치완료 (Finish 버튼클릭 ) <STEP 15> MPLAB IDE 통합개발툴설치완료및시스템재시작후, 바탕화면의실행아이콘클릭하면, MPLAB IDE 통합개발프로그램이실행된다. (Finish 버튼클릭 ) 이제 MPLAB IDE의설치과정이끝났다. 끝으로 MPLAB IDE 실행에앞서컴퓨터를재시작하면 MPLAB IDE를정상적으로사용할수있게된다. MPLAB IDE 사용법은 MPLAB C30 컴파일러를다루는장에서함께설명하도록하겠다. 41

42 Motor Control 2.2 MPLAB ICD2 디버거개발장비 MPLAB ICD2 인써킷 (In-Circuit) 디버거 (Debugger) 툴소개 MPLAB ICD2 는 PIC MCU 및 dspic DSC를위한저가형실시간디버거및프로그래머이다. MPLAB ICD2를이용하여프로그램을다운로드및실시간실행이가능하며, MPLAB의디버그기능을이용하여변수등의상세한확인이가능해진다. C 또는어셈블리소스코드의심볼릭레이블로부터변수값확인및브레이크포인트설정이가능하며 C 소스라인이나어셈블리코드라인을통해싱글스텝실행이가능해진다. 뿐만아니라 MPLAB ICD2는 MCU의프로그래머툴로도사용이가능하다. ICD2는디바이스의 ICSP(In Circuit Serial Programming) 을제어하는 2개의하드웨어라인을이용하며, 온칩펌웨어를통해디버깅한다. ICD2의디버그기능은마이크로컨트롤러에내장되어있으며, 디버그코드를타켓프로세서에프로그래밍함으로써실행된다. 따라서디버그모드에서는프로그램메모리의일부영역과일부범용파일레지스터및스택레벨을점유하게된다 MPLAB ICD2 소프트웨어설치및하드웨어연결하기 MPLAB ICD2 드라이버설치방법에대해알아보자. MPLAB ICD2 이용을위해서는 PC에 USB 드라이버를설치하여야하는데이는앞서 MPLAB IDE 설치시해당 PC에이미설치되었을것이다. 그럼, 이제 MPLAB ICD2를설치해보자. 42

43 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 <STEP 1> MPLAB IDE 설치먼저 MPLAB IDE를설치하기전에 ICD2를 USB 케이블또는 Serial Cable을통해 PC 와연결해서는안된다. 즉, MPLAB IDE 설치시 ICD2를위한드라이버를 PC에설치하므로, 이과정을먼저수행한후 ICD2를 PC와연결하면자동으로해당드라이버를검색하여설치할수있게된다. <STEP 2> ICD2와 PC연결 USB 케이블또는 RS 232 케이블을통해 ICD2와 PC를연결한다. 가능하면, 통신속도향상을위해 USB 연결을사용할것을권장한다. 43

44 Motor Control USB 연결시드라이버의위치를물어보게되는데자동설치옵션을선택하거나수동으로드라이버위치를설정할수있다. 해당드라이버의위치는 MPLAB IDE가설치된폴더를참조하여아래와같이지정하면된다. ICD2 용 USB 드라이버위치 : C:\Program Files\Microchip\MPLAB IDE\ICD2\Drivers 44

45 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 [ 장치관리자에서확인가능 ] 시작 제어판 시스템 하드웨어 장치관리자 <STEP 3> 전원및타깃보드연결다음그림과같이전원연결을 ICD2 모듈또는타깃보드에연결하여준다. 이전원은타깃보드의디바이스에공급될전원을의미하므로가능하면타깃보드에전원을직접공급해주는방식을사용할것을권장한다. 만약, ICD2 전원공급소켓에전원을공급할경우, 타깃보드에과전류가발생할때, ICD2 내부가망실될수도있으므로가급적타깃보드에전원을공급하는것을권장한다. 45

46 Motor Control <STEP 4> 이제 MPLAB IDE를실행하고 Debugger 또는 Programmer 메뉴에서 MPLAB ICD2를선택하면사용할준비가끝났다. 참고사항 MPLAB ICD2와타깃보드의연결은기본적으로 5핀커넥션을이용하며, 기본적으로사용되는잭은 RJ-12 6핀잭이사용되며이와관련된사항은다음그림을참조하거나, ICD2 사용자설명서를참조하면보다자세한사항을확인할수있다. 46

47 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 - ICD2 RJ-12 잭핀설명 - 타깃보드상의 ICD2 연결커넥터핀설명 - ICD2 와타깃보드의 Device(PIC) 연결도 47

48 Motor Control - ICD2 와타깃보드의 Device 와연결시주의사항 ( 필히검토요망 ) MPLAB ICD2 사용하기 이제 MPLAB IDE 프로그램을실행해보자. <STEP 1> 디버거로사용설정할때 Debugger Select Tool MPLAB ICD2 선택 프로그래머로사용설정할때 Programmer Select Programmer MPLAB ICD2 선택 48

49 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 <STEP 2> Output Windows 확인 (View 메뉴에서 Output 팝 - 다운메뉴클릭 ) - 연결이정상일때 - 연결이비정상일때 ( 예 ) 타깃보드에전원공급이없는상태 49

50 Motor Control MPLAB ICD2 사용환경 (Settings) 설정하기 MPLAB ICD2 디버거의설정에대해알아보자. 먼저 MPLAB IDE 메뉴바에서다음과같이 Debugger Settings 또는 Programmer Settings을선택하면사용환경설정윈도우가나타난다. 이윈도우의각설정 Tab 메뉴를누르고해당옵션을선택할수있다. <Status> 현재 ICD2의연결옵션및연결상태를확인할수있다. ICD2와타깃보드가정상적으로연결되었을때 Run Selft Test 버튼을누르면모두 Pass 라는결과를얻을수있다. 50

51 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 <Communication> PC와 ICD2의연결을 USB 및시리얼통신중선택할수있는옵션을제공해준다. 빠른통신속도를위해서 USB 통신으로선택할것을권장한다. <Power> 타깃보드에공급되는전원을모니터링할수있는옵션이며, 디바이스전압인 와프로그래밍전압인 를확인할수있다. 51

52 Motor Control <Versions> MPLAB ICD2의 Firmware 버전및타깃디바이스의버전을확인할수있다. <Program> MPLAB ICD2를이용해타깃디바이스를프로그래밍옵션을선택할수있으며, 일반적으로그림과같이자동옵션을선택하여사용하면특별한문제가없다. 52

53 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 <Warnings> 특정경고메시지를활성또는비활성화할수있는옵션을제공해준다. 참고사항 MPLAB ICD2의디버거사용법에대한자세한사항은 MPLAB ICD2 사용자설명서를참조하기바란다.(DS51331B MPLAB ICD2 In-Circuit Debugger User s guide) 2.3 마이크로칩 16 비트용 MPLAB C30 C 언어프로그래밍 MPLAB C30 컴파일러소개 MPLAB C30 컴파일러는마이크로칩의 16비트 MCU인 PIC24, dspic30f 및 dspic33f 임베디드소프트웨어개발을위한 ANSI 호환 C 컴파일러로써 MPLAB IDE와완벽하게호환이됨으로써, MPLAB ICE(In-Circuit Emulator), MPLAB ICD2(In-Circuit Debugger) 및 MPLAB SIM(Simulator) 와함께소스레벨디버깅을지원해준다. C30 컴파일러는 C 소스파일을컴파일하여어셈블리언어파일을생성한다. 이렇게생성된파일은다른오브젝트파일및라이브러리와함께링크되어실행가능한 COFF 또는 ELF 파일포맷으로최종어플리케이션프로그램을생성한다. COFF 또는 ELF 파일 53

54 Motor Control 은 MPLAB IDE에로링되어테스트또는디버그될수있으며, 시뮬레이터나디바이스프로그래머에로딩가능한 Intel Hex 포맷으로변환될수있다 MPLAB C30 컴파일러다운로드방법 MPLAB C30 컴파일러를설치해보자. 마이크로칩공식홈페이지 ( 을통해제공되고있는 MPLAB C30 컴파일러 Student Edition은 60일간모든기능을무료로이용할수있으며, 이후사용시는최적화레벨 1에한해무제한사용할수있다. 즉, 코드사이즈가다소증가하게되는것을감수하여야하므로, 필요시정품을구입하여사용할것을권장한다. 54

55 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 또한신규디바이스출시및성능향상등을목적으로지속적으로업그레이드되고있으므로최신버전으로유지하는습관을갖도록하자. 참고로, C30 컴파일러의다운로드를위해서는로그인을필수로요구하고있다. 다운로드위치 : Design Development Tools Software MPLAB C30 dspic30/33 and PIC MPLAB C30 컴파일러설치 앞에서설명한다운로드파일을실행하여다음절차에따라 C30 컴파일러를설치해보자. <STEP 1> 파일실행 <STEP 2> 라이센스동의 55

56 Motor Control <STEP 3> 해당폴더설정 ( 기본폴더사용권장 ) 폴더위치 ; C:\Program Files\Microchip\MPLAB C30 <STEP 4> 사용자지정 ( 사용 PC의상황에따라설정 ) <STEP 5> 파일복사 56

57 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 <STEP 6> 환경설정자동경로설정을위해 Yes를클릭한다. <STEP 7> 설치완료 이제 MPLAB C30 컴파일러를사용할준비가완료되었다. 참고로 MPLAB C30 컴파일러는 MPLAB IDE에서사용이지원되므로, 특별한컴파일러명령어를익힐필요는없다 MPLAB C30 컴파일러기초 C30 컴파일러변수기초 C30 컴파일러식별자다음예제에서와같이 C프로그램의구성요소들의이름을식별자라하며, 여기에서는변수 a, c, 상수 b, 함수명 main이식별자에해당한다. 57

58 Motor Control 이러한모든식별자의이름을지정하기위해서는특별한규칙을갖고있다. 첫글자는반드시밑줄 (_) 및알파벳대문자 (A~Z) 또는알파벳소문자 (a~z) 만가능하며, 숫자는위치할수없지만이후나머지글자는숫자 (0~9) 도가능하다 C30 컴파일러키워드 MPLAB C30 컴파일러는 GCC 컴파일러를기반으로하고있으며, 다음그림과같이 32개의 ANSI C 키워드뿐만아니라 12개의추가적인키워드를갖고있다. 이들키워드는다음에소개하도록하겠다. 58

59 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 C30컴파일러코멘트사용법코멘트는컴파일러에의해코드가아닌일반텍스트로인식되는부분을말한다. 흔히훌륭한프로그램밍은코드가의도하고자하는바를코멘트를이용해잘설명한것을말하기도한다. 따라서코드작성시다소귀찮더라도코멘트를잘이용하는습관을갖도록하자. 코멘트사용에는단 1줄을코멘트로처리하도록하는싱글라인코멘트와특정부분을코멘트로처리할수있는블록코멘트로분류할수있다. 싱글라인코멘트사용법 : // This is a single line comment 블록코멘트사용법 : /* This is a block comment */ 59

60 Motor Control C30컴파일러변수 C 프로그램에서의변수선언및사용예를보여주고있다. 변수선언은메모리의저장위치를할당하는것이라말할수있다. 즉, 아래예는데이터메모리에워드 (2바이트) 메모리 2개를할당하고, 그이름을각각 a, b라부르기로하자는일종의명령이라고볼수있다. 또다른예를살펴보자. 정수형 (2바이트) 변수, 캐릭터형 (1바이트) 변수, 실수형 (4바이트) 변수를각각하나씩선언하고그이름을 warp_factor, first_letter, length라정했을때컴파일러에의해실제데이터메모리에는다음그림과같이각변수들에대한메모리를할당한다. 다시말해서, 변수는메모리에저장되는위치를가리키는이름이며, 고유의식별자 ( 이름 ) 로선언되어야하며, 또한데이터형을통해사이즈를할당받게된다. 60

61 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 C30 컴파일러데이터형 C 프로그래밍언어에는다음과같이 4개의기본데이터형을갖고있으며, char 및 int 데이터형을정수형데이터라부르며, float 및 double을실수형데이터라부르기도한다. 각각의데이터형이의미하는데이터사이즈가다르므로임베디드프로그래밍에서는사용하는컴파일러의데이터형을반드시숙지하고있어야한다. 참고로, CCS C 컴파일러를사용했던경험이있는독자라면다소생소한것을발견했을것이다. CCS C 컴파일러에서는 int가 8비트즉, 1바이트의데이터사이즈를갖기때문에여타의 C 컴파일러와는차이가있었다. 이는 CCS C 컴파일러가주로 8비트 PIC 마이크로컨트롤러를위한기본데이터형으로 int를사용했기때문으로생각된다. 하지만, ANSI C 뿐만아니라, MPLAB C30, C18 컴파일러및 Hi Tech PICC 컴파일러는 int 데이터형은 16비트즉, 2바이트의데이터사이즈를갖고있으므로기존의 CCS C 컴파일러사용자는이점에주의하길당부한다. C30 컴파일러에서사용하는데이터형의한정어 (Qualifier) 에는 unsigned, signed, short, long이있으며, 이들은특정데이터형의범위및양수또는음수여부등을한정하기위해사용된다. 따라서변수선언시해당변수가갖는데이터사이즈및범위에따라서아래수식어를이용할수있다. 다음그림의한정어가붙은데이터형에서회색의이탤릭체로표기된 int는생략하여사용할수있다. 즉 long과 long int는 32비트의동일한데이터형을갖게된다. 61

62 Motor Control 참고로, MPLAB C30 컴파일러는 IEEE 754 실수형포맷 (Floating Point Format) 을사용한다. 또한, 컴파일러옵션 fno short double 를사용할경우 double과 long double은동일하게 32비트데이터형을갖게된다. 변수선언에따라데이터가메모리에할당되는예를살펴보자. 일반적으로컴파일러에정렬 (Aligne) 옵션을주지않으면, 첫번째의예와같이선언된순서대로메모리가할당되며이로인해메모리에갭 (Gap) 이발생할수있다. 이경우, 두번째의예와같이같은데이터형의변수를함께선언해주면, 위에서발생했던메모리갭을최소화할수있다 C30 컴파일러변수및데이터형실습 MPLAB IDE를이용하여실습을해보도록하자. 절차 1.MPLAB IDE 실행 2. 디바이스선택 1 Menu Configure Select Device 클릭 2 Select Device 윈도우 : Device PIC24FJ128GA010 선택 3 OK 버튼클릭 62

63 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 3. 프로젝트생성 1 - Menu Project New 클릭 2 - Project Name : Demo1 입력 3 - Project Directory : C:\Temp\Demo1 입력 4 - OK 버튼클릭 63

64 Motor Control 4. C30 컴파일러선택 1 Menu Project Select Language Toolsuit : MPLAB C30 선택 5. 디바이스링커스크립트파일추가 1 프로젝트매니저윈도우의 Linker Scripts 폴더에서마우스우측버튼클릭 Add Files... 항목선택 2 p24fj128ga010.gld 파일클릭후열기 (Open) 버튼클릭 3 링커스크립트파일위치 : C:\Program Files\Microchip\MPLAB C30\Support\gld 64

65 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 6. C 소스코드생성하기 1 Menu File New 클릭 2 Menu File Save As 클릭 3 파일이름 : Demo1.c 입력후저장버튼클릭 65

66 Motor Control 7. 프로젝트에 C 소스코드추가 1 프로젝트매니저윈도우의 Source Files 폴더에서마우스우측버튼클릭 Add Files 선택 2 C:\Temp\Demo1\Demo1.c 선택후열기 (Open) 버튼클릭 66

67 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 8. C 소스코드입력 이제에디터윈도우의 Demo1.c 파일에다음과같이 C 소스코드를입력하자. //#include <p24fj128ga010.h> #include <stdio.h> #define CONSTANT1 0x50 // decimal 80 char charvariable; short shortvariable; int intvariable; long longvariable; float floatvariable; double doublevariable; // short int // long int int main(void) { charvariable = CONSTANT1; shortvariable = CONSTANT1; intvariable = CONSTANT1; 67

68 Motor Control longvariable = CONSTANT1; floatvariable = CONSTANT1; doublevariable = CONSTANT1; printf("a char variable requires %d byte.\n", sizeof(char)); printf("a short variable requires %d bytes.\n", sizeof(short)); printf("an int variable requires %d bytes.\n", sizeof(int)); printf("a long variable requires %d bytes.\n", sizeof(long)); printf("a float variable requires %d bytes.\n", sizeof(float)); printf("a double variable requires %d bytes.\n", sizeof(double)); } while(1); 68

69 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 9. Build Option 설정 1 Menu Project Build Options Project 선택 2 Menu Project Build Options Project General Library Path 설정 : C:\Program Files\Microchip\MPLAB C30\lib 3 Menu Project Build Options Project MPLAB LINK 30 Heap Size : 256 입력 69

70 Motor Control 10. MPLAB SIM 설정 1 Menu Debugger Select Tool MPLAB SIM 클릭 2 Menu Debugger Settings 클릭 3 Menu Debugger Settings Uart1 IO 클릭 : Enable Uart1 IO, Rewind Input, Window 선택 11. Build All 1 Menu Project Build All 클릭 (Ctrl + F10) 2 Output Window Build 탭에서메시지확인 : BUILD SUCCEEDED 확인 70

71 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 12. MPLAB SIM 실행 1 Menu Debugger Run (F9) 클릭 2 Output Window SIM Uart1 탭에서메시지확인 71

72 Motor Control 13. File Register 를통한변수확인 1 Menu View File Register 클릭 2 ctrl+f 클릭후 charvariable 입력후엔터를누르면, File Register 즉, 데이터메모리에변수가할당된것을확인할수있다. 3 변수가할당된어드레스와값을확인해보자 전처리문 상수선언 C 프로그래밍에서다음과같이선언하면, float PI = ; 이경우컴파일러는데이터메모리의 32비트 (4바이트) 영역을할당하여 PI라는이름으로지정하게된다. const float PI = ; 72

73 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 PI라는변수는 const 라는키워드로인해프로그램메모리에할당이되며그값은읽기만가능한상수값이된다. 하지만, 임베디드프로그래밍에서이들사용법은데이터메모리또는프로그램메모리를불필요하게사용하고있기때문에효율적이지못한방법이될수있다. 이러한경우 #define 을이용하여사용하게된다. [ 선언법 ] #define PI 이경우컴파일러는 PI라는텍스트를 이라는상수값으로대체하게되며, 컴파일시소스코드에서 PI라는텍스트를만나게되면 이라는상수값으로대체하게된다. 즉, 어떠한메모리영역을사용하지않고사용될수있다는말이된다. 그러면, #define의사용법에대해알아보자. [ 사용법 ] #define name text [ 선언예 ] #define PI #define FOSC 10.0e6 #define BAUDRATE 9600 또한다음과같이파라미터를이용하여매크로로정의할수도있다. [ 선언예 ] #define PI #define area(r) PI * r * r #define multiply(a,b) a * b 73

74 Motor Control [ 사용예 ] AreaOfCircle = area(5); MyVar3 = multiply(myvar1, MyVar2); 다음과같이한줄이아닌여러줄을통해선언하는것도가능하다. [ 선언예 ] #define loop(n) for(i=1; i<=n; i++) { printf( %d\n,i); } [ 사용예 ] loop(5); loop(myvariable); #define 문사용시주의할점은문장의끝이세미콜론즉, ; 로끝나서는안된다는것이다. 만약아래와같이선언하게되면어떻게되는지살펴보자. #define MyConst 5; c = MyConst + 3; 이경우 MyConst 는 5; 와동일한텍스트로간주하게되므로, 결과적으로다음과같이사용한결과가된다. 즉, 컴파일시에러를발생시키게될것이다. c = 5; 전처리문사용실습앞절에서수행했던것과동일한방법으로 Demo2라는프로젝트를만들어보자. 74

75 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 절차 1. MPLAB IDE 실행 2. 디바이스선택 1 Menu Configure Select Device 클릭 2 Select Device 윈도우 : Device PIC24FJ128GA010 선택 3 OK 버튼클릭 3. 프로젝트생성 1 Menu Project New 클릭 2 Project Name : Demo2 입력 3 Project Directory : C:\Temp\Demo2 입력 4 OK 버튼클릭 4. C30 컴파일러선택 1 Menu Project Select Language Toolsuit : MPLAB C30 선택 5. 디바이스링커스크립트파일추가 1 프로젝트매니저윈도우의 Linker Scripts 폴더에서마우스우측버튼클릭 Add Files... 항목선택 2 p24fj128ga010.gld 파일클릭후열기 (Open) 버튼클릭 - 링커스크립트파일위치 : C:\Program Files\Microchip\MPLAB C30\Support\gld 6. C 소스코드생성하기 - Menu File New 클릭 - Menu File Save As 클릭 - 파일이름 : Demo2.c 입력후저장버튼클릭 7. 프로젝트에 C 소스코드추가 - 프로젝트매니저윈도우의 Source Files 폴더에서마우스우측버튼클릭 Add Files 선택 - C:\Temp\Demo2\Demo2.c 선택후열기 (Open) 버튼클릭 75

76 Motor Control 8. C 소스코드입력 이제에디터윈도우의 Demo2.c 파일에다음과같이실습할 C 소스코드를입력하자. //#include <p24fj128ga010.h> #include <stdio.h> #define CONSTANT1 0x33 const CONSTANT2 = 0xCC; int variable1 = CONSTANT1; int variable2; //int variable2 = CONSTANT2; //This cannot be done with a constant defined with "const" int main(void) { variable2 = CONSTANT2; printf("the first constant is 0x%X\n", CONSTANT1); printf("the second constant is 0x%X\n", CONSTANT2); } while(1); 9. Build Option 설정 - Menu Project Build Options Project 선택 - Menu Project Build Options Project General : Library Path 설정 : C:\Program Files\Microchip\MPLAB C30\lib - Menu Project Build Options Project MPLAB LINK 30 : Heap Size : 256 입력 10. MPLAB SIM 설정 1 Menu Debugger Select Tool MPLAB SIM 클릭 2 Menu Debugger Settings 클릭 3 Menu Debugger Settings Uart1 IO 클릭 : Enable Uart1 IO, Rewind Input, Window 선택 76

77 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 11. Build All 1 Menu Project Build All 클릭 (Ctrl + F10) 2 Output Window Build 탭에서메시지확인 : BUILD SUCCEEDED 확인 12. MPLAB SIM 실행 - Menu Debugger Run (F9) 클릭 - Output Window SIM Uart1 탭에서메시지확인 13. Watch 윈도우사용하기 - Menu View Watch 클릭 - 그림과같이 Symbol Name 컬럼의하단의빈칸을마우스로클릭한후하나씩입력한다. - variable1, variable2, CONSTANT1, CONSTANT2 - 각각의심벌이름과그값을소스코드와비교하여확인한다. - 각각의심벌이름과 Address 컬럼의내용을확인한다. * variable1, variable2 : 데이터메모리영역의 0x08C2, 0x08C4 에할당되었다. 77

78 Motor Control * CONSTANT2 : 프로그램메모리영역의 0x011D0에할당되었다. P 라는마크는프로그램메모리를의미함. * CONSTANT1 : 어떠한메모리할당도하지않았다는것을의미한다 C30 컴파일러의상수 (literal) C30 컴파일러는정수형, 실수형 (Floating Point), 문자 (Character), 문자열 (String) 총 4 가지기본상수형을갖고있다. 정수형과실수형은콤마 (,) 와빈공간 (space) 를사용할수없으며, 그값은자신의형이가질수있는범위를초과할수없고, 음수부호 (-) 가앞에올수있다. 78

79 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 정수형상수 <10진수표기 > 0 값을제외한다른값은 0 으로시작해서는안되며사용할수있는문자는 0~9이다. - 올바르게사용한예 : 잘못사용한예 : 32, <16진수표기 > 0x (zero x) 또는 0X 로시작해야하며, 사용할수있는문자는 0~9와 A~F 또는 a~f이다. - 올바르게사용한예 : 0x 0x1 0x1A2B 0xBEEF - 잘못사용한예 : 0x5.3 0EA12 0xEG 53h <8진수표기 > 0 (zero) 로시작해야하며사용할수있는문자는 0~7이다. - 올바르게사용한예 : 잘못사용한예 : o o * 8진수표기법은 ANSI C 표준이지만, 요즘은거의사용되지않고있다. <2진수표기 > 0b 또는 0B 로시작해야하며사용할수있는문자는 0~1이다. - 올바르게사용한예 : 0b 0b1 0b 잘못사용한예 : 0b b12 10b * 2진수표기법은 ANSI C 에서명시하고있지않지만, 유용하게사용될수있기때문에 대부분의컴파일러에서지원이되고있다. 79

80 Motor Control < 한정어 > 변수와유사하게상수값도숫자의끝에첨자를사용하여특정데이터형으로변환할수있다. unsigned ( U 또는 u 사용 ) : 25U long ( L 또는 l 사용 ) : 25L unsigned long( UL 또는 ul 이용 ) : 0xF5UL * 첨자가없는숫자는 signed short 로간주한다 실수형상수 10진수정수형상수와동일하게표기하며, 소수점 (.) 과급수를표기하기위한 e 를사 용할수있다. - 올바르게사용한예 : 2.56e e 잘못사용한예 : 0x5Ae F 문자형상수단일인용부호 ( ) 를사용하여표기해야하며, 한글자의프린트가능한문자또는 \ 을사용한확장문자중단일문자즉, 한글자만사용해야한다. - 올바르게사용한예 : a T \n ( 스페이스 ) - 잘못사용한예 : me 문자열상수 이중인용부호 ( ) 를사용하여표기해야하며, 프린트가능한문자및 \ 을사용한 확장문자들을이용할수있고, 문자열의끝은널문자 ( \0 ) 가자동으로채워진다. - 올바르게사용한예 : Microchip\0, Hi\n, PIC, 2500, - 잘못사용한예 : He said, Hi 80

81 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 ex) char color[3] = RED ; color[0] = R color[1] = E color[2] = D ex) char color[] = RED ; color[0] = R color[1] = E color[2] = D color[3] = \0 < 확장문자예 > printf() 함수 printf() 함수는 C 언어표준라이브러리함수로써일반적으로텍스트를모니터또는프린터에출력하기위해사용하며, 임베디드시스템에서는 UART를통한출력으로사용되기도한다. 이미앞의실습에서사용한바와같이 MPLAB IDE의 MPLAB SIM에서는 Uart1 윈도우를통해그출력값을확인할수있도록지원하고있다. - 사용법 : printf( ControlString, arg_1, arg_2,..., arg_n); 81

82 Motor Control - 사용예 : printf( LoopCount = %d, i); printf( a = %d \n b = %d\n, a, b); < 출력포맷을위한변환문자 > 디버깅을위한유용한문자열포맷사용예 1) 16진수 4자리값출력 ( 예 : 0x00F8) printf( Address of x = %#06x\n, x_ptr); - # : 16진수값앞에 0x 붙이는옵션 - 06 : 6글자출력옵션 (0 포함 ) - x : 16진수출력옵션 2) 16진수대문자출력 printf( Address of x = 0x%#04X\n, x_ptr); - 04 : 4글자출력옵션 (0 포함 ) - X : 16진수대문자로출력옵션 82

83 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 printf() 함수실습 전처리문사용실습앞절에서수행했던것과동일한방법으로 Demo3라는프로젝트를만들어보자. 절차 1. MPLAB IDE 실행 2. 디바이스선택 - Menu Configure Select Device 클릭 - Select Device 윈도우 : Device PIC24FJ128GA010 선택 - OK 버튼클릭 3. 프로젝트생성 - Menu Project New 클릭 - Project Name : Demo3 입력 - Project Directory : C:\Temp\Demo3 입력 - OK 버튼클릭 4. C30 컴파일러선택 - Menu Project Select Language Toolsuit : MPLAB C30 선택 5. 디바이스링커스크립트파일추가 - 프로젝트매니저윈도우의 Linker Scripts 폴더에서마우스우측버튼클릭 Add Files... 항목선택 - p24fj128ga010.gld 파일클릭후열기 (Open) 버튼클릭 * 링커스크립트파일위치 : C:\Program Files\Microchip\MPLAB C30\Support\gld 6. C 소스코드생성하기 - Menu File New 클릭 - Menu File Save As 클릭 - 파일이름 : Demo3.c 입력후저장버튼클릭 7. 프로젝트에 C 소스코드추가 - 프로젝트매니저윈도우의 Source Files 폴더에서마우스우측버튼클릭 Add Files 선택 - C:\Temp\Demo3\Demo3.c 선택후열기 (Open) 버튼클릭 83

84 Motor Control 8. C 소스코드입력 이제에디터윈도우의 Demo3.c 파일에다음과같이실습할 C 소스코드를입력하자. //#include <p24fj128ga010.h> #include <stdio.h> int main(void) { printf("25 as decimal (d): %d\n", 25); printf("'a' as character (c): %c\n", 'a'); printf("'a' as decimal (d): %d\n", 'a'); printf("2.55 as float (f): %f\n", 2.55); printf("2.55 as decimal (d): %d\n", 2.55); printf("6.02e23 as exponent (e): %e\n", 6.02e23); printf("6.02e23 as decimal (d): %d\n", 6.02e23); printf("'microchip' as string (s): %s\n", "Microchip"); printf("'microchip' as decimal (d): %d\n", "Microchip"); } while(1); 9. Build Option 설정 - Menu Project Build Options Project 선택 - Menu Project Build Options Project General : Library Path 설정 : C:\Program Files\Microchip\MPLAB C30\lib - Menu Project Build Options Project MPLAB LINK 30 : Heap Size : 256 입력 10. MPLAB SIM 설정 3 Menu Debugger Select Tool MPLAB SIM 클릭 4 Menu Debugger Settings 클릭 5 Menu Debugger Settings Uart1 IO 클릭 : Enable Uart1 IO, Rewind Input, Window 선택 11. Build All 6 Menu Project Build All 클릭 (Ctrl+F10) 7 Output Window Build 탭에서메시지확인 : BUILD SUCCEEDED 확인 84

85 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 12. MPLAB SIM 실행 1 Menu Debugger Run(F9) 클릭 2 Output Window SIM Uart1 탭에서메시지확인 연산자 (Operators) 산술연산자 C30 컴파일러의산술연산자는다음표와같으며, 산술연산자사용시피연산자의데이터형에따라그결과값이결정되므로주의를필요로한다. 다음예를살펴보자. 85

86 Motor Control 다음예에서보는바와같이동일한값으로나누기연산을하지만그결과값은다르게되는것을알수있다. 즉, c = a / b; 연산을수행할때우측항부터연산을한후그결과값을좌측항의변수에저장하게되는데두개의피연산자가정수형데이터일때는그결과값이정수형이되고, 하나또는두개의피연산자가실수형일때는그결과값이실수형이되기때문이다. 따라서이러한연산을사용할때는데이터형에주의해서사용하도록해야한다 대입연산자대입연산자는특정값을특정저장공간에저장또는대입하는연산자이다. 즉, x += 5; 는 x = x + 5; 와같은표현이되며, 연산순서는우측항을먼저계산한후그결과값을좌측항에대입하게된다 증감연산자증감연산자는다음예에서보는바와같이전치 (Postfix) 및후치 (Prefix) 연산자로사용함에따라서그결과값이달라질수있으므로주의해서사용해야한다. 86

87 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 관계연산자관계연산자는두개의피연산자를비교하여그결과값이참 (TRUE) 이면 1, 거짓 (FALSE) 이면 0 을발생하게된다. C 프로그래밍에익숙하지않은엔지니어들이흔히범하는오류중한가지가대입연산자 (=) 와관계연산자 (==) 사용에있다. 참고로, 조건문에서 0이아닌값은항상참 (TRUE), 0은거짓 (FALSE) 으로해석된다. 다음예를통해한번살펴보자. 87

88 Motor Control x = 2; if ( x == 5 ) // x가 5와같은지테스트를한후 False 이므로 printf() 미실행 { printf( OK! x is equal to 5 ); } x = 2; if ( x = 5 ) // x에 5를대입한후 x는 0이아니므로, True 발생, 따라서 printf() 실행 { printf( Oops! ); } 이미설명했듯이조건문에서대입연산자를쓸때는위와같은오류를범하기쉬우며, 수천라인이상되는코딩에서이와같은오류를찾는것은상당히어려운일이아닐수없다 논리연산자다음과같이논리연산자에는논리곱 (AND) 및논리합 (OR) 연산자가있으며, 단항연산자로써논리부정 (NOT) 연산자가있다. 이들연산자의결과값은참일때 1(TRUE), 거짓일때 0(FALSE) 를발생시킨다 진논리연산자 2진논리연산자는각각의비트와비트가대응하여연산된결과값을발생하는연산자이다. 88

89 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 쉬프트연산자쉬프트연산자는왼쪽및오른쪽으로쉬프트하기위한연산자가있다. 왼쪽쉬프트연산자의경우, 왼쪽으로쉬프트되어밀려난왼쪽최상위비트 (MSB) 는사라지게되며, 오른쪽최하위비트 (LSB) 는 0 로채워진다. 오른쪽쉬프트연산자의경우, 데이터형에따라서그결과값이달라질수있으므로주의를요한다. 최하위비트 (LSB) 는사라지게되고 unsigned로선언된데이터의경우최상위비트는 0 로채워지게되고, sign으로선언된경우는부호 (0/1) 에따라서결정된다. 89

90 Motor Control 메모리어드레싱연산자메모리연산자는다음표와같이포인터, 배열, 구조체및공용체사용을위한어드레싱연산자가지원된다 기타연산자지금까지설명한연산자외에함수호출, 형변환연산자, 삼항연산자, 콤머연산자등이지원되고있다. 다음예에서보는바와같이특정연산에있어서형변환연산자는유용하게사용될수있는연산자이다. 90

91 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 연산자우선순위연산자를여러개사용하였을경우괄호가가장최우선하므로, 아래우선순위를암기하는것보다는괄호연산자를적절히사용하여오류를방지하는것이최선의방법이라할수있다. 91

92 Motor Control 다음의예는일부연산에대한컴파일러의연산우선순위에의해결정된실제연산순위를보여주고있다 연산자실습앞절에서수행했던것과동일한방법으로 Demo4라는프로젝트를만들어보자. 92

93 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 절차 1. MPLAB IDE 실행 2. 디바이스선택 - Menu Configure Select Device 클릭 - Select Device 윈도우 : Device PIC24FJ128GA010 선택 - OK 버튼클릭 3. 프로젝트생성 - Menu Project New 클릭 - Project Name : Demo4 입력 - Project Directory : C:\Temp\Demo4 입력 - OK 버튼클릭 4. C30 컴파일러선택 - Menu Project Select Language Toolsuit : MPLAB C30 선택 5. 디바이스링커스크립트파일추가 - 프로젝트매니저윈도우의 Linker Scripts 폴더에서마우스우측버튼클릭 Add Files... 항목선택 - p24fj128ga010.gld 파일클릭후열기 (Open) 버튼클릭 * 링커스크립트파일위치 : C:\Program Files\Microchip\MPLAB C30\Support\gld 6. C 소스코드생성하기 - Menu File New 클릭 - Menu File Save As 클릭 - 파일이름 : Demo4.c 입력후저장버튼클릭 7. 프로젝트에 C 소스코드추가 - 프로젝트매니저윈도우의 Source Files 폴더에서마우스우측버튼클릭 Add Files 선택 - C:\Temp\Demo4\Demo4.c 선택후열기 (Open) 버튼클릭 93

94 Motor Control 8. C 소스코드입력 이제에디터윈도우의 Demo4.c 파일에다음과같이실습할 C 소스코드를입력하자. //#include <p24fj128ga010.h> #include <stdio.h> int main(void) { int x = 10; int y, z; float a, b, c, d; int i = 1, j = 0, k = 5; char m, n = 255; a = x + 5; b = x / 4; c = (float)x / 4; d = x ; y = a + b; z = a ; j = i++; k += i; m = n + 2; } while(1); 9. Build Option 설정 - Menu Project Build Options Project 선택 - Menu Project Build Options Project General : Library Path 설정 : C:\Program Files\Microchip\MPLAB C30\lib - Menu Project Build Options Project MPLAB LINK 30 : Heap Size : 256 입력 94

95 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 10. MPLAB SIM 설정 H. Menu Debugger Select Tool MPLAB SIM 클릭 I. Menu Debugger Settings 클릭 J. Menu Debugger Settings Uart1 IO 클릭 : Enable Uart1 IO, Rewind Input, Window 선택 11. Build All K. Menu Project Build All 클릭 (Ctrl + F10) L. Output Window Build 탭에서메시지확인 : BUILD SUCCEEDED 확인 12. Watch Window 설정 - Menu View Watch Window 클릭 - Symbol Name에변수추가하기 : 아래그림을참조하여 x, y, z, a, b, c, d, i, j, k, m, n 각각의변수를추가 - 변수들의해당값들은컴파일후에디스플레이되므로, 화면과다를수있음 13. MPLAB SIM 실행 A. Menu Debugger Run (F9) 클릭 14. Watch Window 변수값확인 - 각각의변수값확인 95

96 Motor Control 제어문 (Control Statement) 제어문은흔히알고있는 if~else 문과같이실행순서를제어하기위한문을말한다 if 문조건문이참 (True) 면다음문즉, 중괄호 ({}) 안의문을수행하고, 거짓 (False) 이면실행하지않는다 if~else문이중조건문을이용하여두가지실행문을선택적으로실행할수있는제어문이다 if~else if~else문다중 if문을이용하여실행문을선택적으로실행할수있는제어문이다. 96

97 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 switch case 문다중 if 문과유사한효율적인제어문이다 for 문특정회수동안블록안의코드를반복하기위한제어문이다 while 문조건문이참 (True) 인동안블록안의코드를반복하기위한제어문이며, 조건문에따라서단한번도블록안의코드를실행하지않을수있다. 97

98 Motor Control do while 문블록안의코드를수행한후조건문이참 (True) 인지판단하여반복을수행하는제어문이다. 다만, while 문과는달리블록안의코드를무조건한번은실행하고조건문에따라서단한번도블록안의코드를실행하지않을수있다 break 문 break문은루프 (Loop) 문에서즉시빠져나오기위한명령어로사용이되며, break를만나게되면현재의카운팅을중지하고, 루프문을탈출하게된다. 또한앞에서설명한 switch case 에서사용되기도한다. 아래예에서는변수 i는 0~5까지만카운팅을하고, while 문을빠져나가게된다 continue 문 continue문은현재의블록안의나머지부분실행을생략하고, break와는달리카운팅을계속적으로수행하기위해다시루프 (loop) 문으로돌아간다. 98

99 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 조건문및루프문실습앞절에서수행했던것과동일한방법으로 Demo5라는프로젝트를만들어보자. 절차 1. MPLAB IDE 실행 2. 디바이스선택 - Menu Configure Select Device 클릭 - Select Device 윈도우 : Device PIC24FJ128GA010 선택 - OK 버튼클릭 3. 프로젝트생성 - Menu Project New 클릭 - Project Name : Demo5 입력 - Project Directory : C:\Temp\Demo5 입력 - OK 버튼클릭 4. C30 컴파일러선택 - Menu Project Select Language Toolsuit : MPLAB C30 선택 5. 디바이스링커스크립트파일추가 - 프로젝트매니저윈도우의 Linker Scripts 폴더에서마우스우측버튼클릭 Add Files... 항목선택 - p24fj128ga010.gld 파일클릭후열기 (Open) 버튼클릭 99

100 Motor Control * 링커스크립트파일위치 : C:\Program Files\Microchip\MPLAB C30\Support\gld 6. C 소스코드생성하기 - Menu File New 클릭 - Menu File Save As 클릭 - 파일이름 : Demo5.c 입력후저장버튼클릭 7. 프로젝트에 C 소스코드추가 - 프로젝트매니저윈도우의 Source Files 폴더에서마우스우측버튼클릭 Add Files 선택 - C:\Temp\Demo5\Demo5.c 선택후열기 (Open) 버튼클릭 8. C 소스코드입력이제에디터윈도우의 Demo5.c 파일에다음과같이실습할 C 소스코드를입력하자. //#include <p24fj128ga010.h> #include <stdio.h> int i; int main(void) { for (i=0; i < 5; i++) { printf("for loop iteration #%d\n", i); } i = 0; //Try i = 0 and i = 5 while(i < 5) { printf("while loop iteration #%d\n", i++); } i = 0; //Try i = 0 and i = 5 100

101 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 do { printf("do loop iteration #%d\n", i++); } while(i < 5); } //Loop forever while(1); 9. Build Option 설정 - Menu Project Build Options Project 선택 - Menu Project Build Options Project General : Library Path 설정 : C:\Program Files\Microchip\MPLAB C30\lib - Menu Project Build Options Project MPLAB LINK 30 : Heap Size : 256 입력 10. MPLAB SIM 설정 A. Menu Debugger Select Tool MPLAB SIM 클릭 B. Menu Debugger Settings 클릭 C. Menu Debugger Settings Uart1 IO 클릭 : Enable Uart1 IO, Rewind Input, Window 선택 11. Build All D. Menu Project Build All 클릭 (Ctrl + F10) E. Output Window Build 탭에서메시지확인 : BUILD SUCCEEDED 확인 12. MPLAB SIM 실행 A. Menu Debugger Run (F9) 클릭 B. Output Window에서출력값확인 101

102 Motor Control switch 문실습앞절에서수행했던것과동일한방법으로 Demo6라는프로젝트를만들어보자. 절차 1. MPLAB IDE 실행 2. 디바이스선택 - Menu Configure Select Device 클릭 - Select Device 윈도우 : Device PIC24FJ128GA010 선택 - OK 버튼클릭 3. 프로젝트생성 - Menu Project New 클릭 - Project Name : Demo6 입력 - Project Directory : C:\Temp\Demo6 입력 - OK 버튼클릭 102

103 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 4. C30 컴파일러선택 - Menu Project Select Language Toolsuit : MPLAB C30 선택 5. 디바이스링커스크립트파일추가 - 프로젝트매니저윈도우의 Linker Scripts 폴더에서마우스우측버튼클릭 Add Files... 항목선택 - p24fj128ga010.gld 파일클릭후열기 (Open) 버튼클릭 * 링커스크립트파일위치 : C:\Program Files\Microchip\MPLAB C30\Support\gld 6. C 소스코드생성하기 - Menu File New 클릭 - Menu File Save As 클릭 - 파일이름 : Demo6.c 입력후저장버튼클릭 7. 프로젝트에 C 소스코드추가 - 프로젝트매니저윈도우의 Source Files 폴더에서마우스우측버튼클릭 Add Files 선택 - C:\Temp\Demo6\Demo6.c 선택후열기 (Open) 버튼클릭 8. C 소스코드입력이제에디터윈도우의 Demo6.c 파일에다음과같이실습할 C 소스코드를입력하자. //#include <p24fj128ga010.h> #include <stdio.h> int channel; int main(void) { channel = 7; switch(channel) { 103

104 Motor Control } case 2: printf("wbbm Chicago\n"); break; case 3: printf("dvd Player\n"); break; case 4: printf("wtmj Milwaukee\n"); break; case 5: printf("wmaq Chicago\n"); break; case 6: printf("witi Milwaukee\n"); break; case 7: printf("wls Chicago\n"); break; case 9: printf("wgn Chicago\n"); break; case 10: printf("wmvs Milwaukee\n"); break; case 11: printf("wttw Chicago\n"); break; case 12: printf("wisn Milwaukee\n"); break; case 8: case 13: printf("weak signals from South Bend\n"); break; case : printf("uhf Station\n"); break; default: printf("no Signal Available\n"); } while(1); // NOTE: case values must be of an integer type (char, int, short, long) 9. Build Option 설정 - Menu Project Build Options Project 선택 - Menu Project Build Options Project General : Library Path 설정 : C:\Program Files\Microchip\MPLAB C30\lib - Menu Project Build Options Project MPLAB LINK 30 : Heap Size : 256 입력 10. MPLAB SIM 설정 F. Menu Debugger Select Tool MPLAB SIM 클릭 G. Menu Debugger Settings 클릭 H. Menu Debugger Settings Uart1 IO 클릭 : Enable Uart1 IO, Rewind Input, Window 선택 11. Build All I. Menu Project Build All 클릭 (Ctrl + F10) J. Output Window Build 탭에서메시지확인 104

105 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 : BUILD SUCCEEDED 확인 12. MPLAB SIM 실행 A. Menu Debugger Run (F9) 클릭 B. Output Window에서출력값확인 함수모든 C 프로그램은하나이상의함수들로구성되어있다. 가장흔히볼수있는프로그램의시작부분인 main() 함수를그예로들수있다. 프로그래밍에서코딩을하다보면반복적으로사용되는연산또는명령어들을만나게되는데, 이와같은부분을모듈화하여필요할때마다불러서사용할수있도록지원해주는기능을함수라말할수있다. 이들함수는프로그래밍업무를효율적으로관리할수있도록지원할뿐만아니라모듈화된이들함수를재사용할수있기때문에불필요한시간을경감시켜주기도한다. 일례로우리가실습에서자주사용한표준 C 라이브러리함수인 printf() 함수는컴파일러제조사에의해이미만들어졌기때문에쉽게사용할수있었다. 만약이러한함수가없었다면사용자가직접이함수의기능을프로그래밍해야하는번거로움이있었을것이다. 105

106 Motor Control 함수의선언문함수의선언은변수선언문과매우흡사하다. 함수는데이터반환수행시반환될데이터의형과동일한데이터형을갖고있어야하며, 변수와마찬가지로함수의이름을갖고있어야한다. 끝으로호출시함수에전달될파라미터를갖고있어야한다. 또한함수내부에추가적인변수를선언할수있는데이를지역변수라부르며이들지역변수들은함수의내부에서만액세스가가능하며, 함수의블록을벗어나는순간소멸된다. 끝으로함수사용시주의할사항은함수의내부에서는함수를선언할수없다는것이다. 106

107 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 함수의반환형함수이름의앞에붙이는함수반환형은함수내의 return문에사용되는반환되는데이터의형과동일하게사용하여야한다. 만약함수에의해반환되는값이없다면, 함수의반환형은 void가된다 함수의파라미터함수의헤더에서선언된파라미터의이름은함수에서만사용가능한파라미터이다. 따라서이들이름은메인프로그램및다른함수에서사용되는변수와동일한이름의사용이가능하다. 만약함수가파라미터를필요로하지않는경우, void 키워드로대체되어야한다 함수선언및호출예다음예는두수중큰수를반환하는사용자함수로써함수의반환형은반환값인변수 z의데이터형인 int와동일하게사용하였음에주목하자. 107

108 Motor Control 이제사용자함수를호출하기위해서는다음그림과같이함수명과함께함수의인자인파라미터값을지정해주면된다 함수의저장클래스 (Storage Class) C30에서모든함수는기본적으로전역함수로처리된다. 따라서프로젝트의모든파일에서참조가능한전역함수는키워드 extern이불필요하며해당파일에서만참조할수있는지역함수로사용할때는키워드 static을사용해야한다 함수실습앞절에서수행했던것과동일한방법으로 Demo7라는프로젝트를만들어보자. 절차 1. MPLAB IDE 실행 2. 디바이스선택 - Menu Configure Select Device 클릭 - Select Device 윈도우 : Device PIC24FJ128GA010 선택 - OK 버튼클릭 108

109 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 3. 프로젝트생성 - Menu Project New 클릭 - Project Name : Demo7 입력 - Project Directory : C:\Temp\Demo7 입력 - OK 버튼클릭 4. C30 컴파일러선택 - Menu Project Select Language Toolsuit : MPLAB C30 선택 5. 디바이스링커스크립트파일추가 - 프로젝트매니저윈도우의 Linker Scripts 폴더에서마우스우측버튼클릭 Add Files... 항목선택 - p24fj128ga010.gld 파일클릭후열기 (Open) 버튼클릭 * 링커스크립트파일위치 : C:\Program Files\Microchip\MPLAB C30\Support\gld 6. C 소스코드생성하기 - Menu File New 클릭 - Menu File Save As 클릭 - 파일이름 : Demo7.c 입력후저장버튼클릭 7. 프로젝트에 C 소스코드추가 - 프로젝트매니저윈도우의 Source Files 폴더에서마우스우측버튼클릭 Add Files 선택 - C:\Temp\Demo7\Demo7.c 선택후열기 (Open) 버튼클릭 8. C 소스코드입력이제에디터윈도우의 Demo7.c 파일에다음과같이실습할 C 소스코드를입력하자. 109

110 Motor Control //#include <p24fj128ga010.h> #include <stdio.h> typedef struct { float re; float im; } complex; // Real part // Imaginary part complex a, b, c; int i, j; complex ComplexAdd(complex x, complex y); int IntegerAdd(int v, int w); int main(void) { a.re = 2.5; a.im = 5.0; b.re = 1.5; b.im = 2.0; i = 3; j = 2; c = ComplexAdd(a,b); printf("c = %f + j%f\n", c.re, c.im); } printf("k = %d\n", i + j); while(1); complex ComplexAdd(complex x, complex y) { complex z; z.re = x.re + y.re; z.im = x.im + y.im; return z; } int IntegerAdd(int v, int w) 110

111 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 { } return (v + w); 9. Build Option 설정 - Menu Project Build Options Project 선택 - Menu Project Build Options Project General : Library Path 설정 : C:\Program Files\Microchip\MPLAB C30\lib - Menu Project Build Options Project MPLAB LINK 30 : Heap Size : 256 입력 10. MPLAB SIM 설정 K. Menu Debugger Select Tool MPLAB SIM 클릭 L. Menu Debugger Settings 클릭 M. Menu Debugger Settings Uart1 IO 클릭 : Enable Uart1 IO, Rewind Input, Window 선택 11. Build All N. Menu Project Build All 클릭 (Ctrl + F10) O. Output Window Build 탭에서메시지확인 : BUILD SUCCEEDED 확인 12. MPLAB SIM 실행 A. Menu Debugger Run (F9) 클릭 B. Output Window에서출력값확인 111

112 Motor Control 배열 (Array) 배열은동일한데이터형으로된다중데이터의저장소를말한다. 이들다중데이터는배열의인덱스라불리는순차적으로매겨진번호에의해순차적으로저장되며, 배열의인덱스는 0부터매겨진다 배열 (Array) 과문자열 (String) C는음수형문자열을가지고있지않기때문에문자열은항상 char 형배열로취급된다. 또한문자열의끝은널문자 ( \0 ) 로끝나야한다. 112

113 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 배열의시작주소는배열의이름과같으므로이를이용하여문자열전체를참조할수가있다. 일예로 %s 를이용하면 printf() 함수로문자열전체를출력할수있다 다중배열배열은얼마든지다중배열즉, 2차원이상으로사용될수있지만, 일반적으로 3차원배열까지만주로사용한다. 다음예를통해다중배열의결과값을직접확인해보기를바란다 배열실습앞절에서수행했던것과동일한방법으로 Demo8라는프로젝트를만들어보자. 113

114 Motor Control 절차 1. MPLAB IDE 실행 2. 디바이스선택 - Menu Configure Select Device 클릭 - Select Device 윈도우 : Device PIC24FJ128GA010 선택 - OK 버튼클릭 3. 프로젝트생성 - Menu Project New 클릭 - Project Name : Demo8 입력 - Project Directory : C:\Temp\Demo8 입력 - OK 버튼클릭 4. C30 컴파일러선택 - Menu Project Select Language Toolsuit : MPLAB C30 선택 5. 디바이스링커스크립트파일추가 - 프로젝트매니저윈도우의 Linker Scripts 폴더에서마우스우측버튼클릭 Add Files... 항목선택 - p24fj128ga010.gld 파일클릭후열기 (Open) 버튼클릭 * 링커스크립트파일위치 : C:\Program Files\Microchip\MPLAB C30\Support\gld 6. C 소스코드생성하기 - Menu File New 클릭 - Menu File Save As 클릭 - 파일이름 : Demo8.c 입력후저장버튼클릭 7. 프로젝트에 C 소스코드추가 - 프로젝트매니저윈도우의 Source Files 폴더에서마우스우측버튼클릭 Add Files 선택 114

115 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 - C:\Temp\Demo8\Demo8.c 선택후열기 (Open) 버튼클릭 8. 소스코드입력이제에디터윈도우의 Demo8.c 파일에다음과같이실습할 C 소스코드를입력하자. //#include <p24fj128ga010.h> #include <stdio.h> char str1[9] = "Microchip"; char str2[] = "Technology"; int main(void) { printf("%s\n", str1); printf("%s\n", str2); //What's wrong with this definition? //Why does this not do what you might expect? } while(1); 9. Build Option 설정 - Menu Project Build Options Project 선택 - Menu Project Build Options Project General : Library Path 설정 : C:\Program Files\Microchip\MPLAB C30\lib - Menu Project Build Options Project MPLAB LINK 30 : Heap Size : 256 입력 10. MPLAB SIM 설정 P. Menu Debugger Select Tool MPLAB SIM 클릭 Q. Menu Debugger Settings 클릭 R. Menu Debugger Settings Uart1 IO 클릭 : Enable Uart1 IO, Rewind Input, Window 선택 11. Build All S. Menu Project Build All 클릭 (Ctrl + F10) 115

116 Motor Control T. Output Window Build 탭에서메시지확인 : BUILD SUCCEEDED 확인 12. MPLAB SIM 실행 A. Menu Debugger Run (F9) 클릭 B. Output Window에서출력값확인 포인터 (Pointer) 포인터는변수또는함수의어드레스를기억하는변수라말할수있다. 포인터변수의선언은일반변수와동일하게사용하지만이름앞에 * 를붙여서해당변수가포인터임을컴파일러에게알려준다. 한가지주의할사항은포인터의데이터형은이것이가리키는변수의데이터형과동일해야한다는것이다. 포인터변수는일반변수의앞에번지연산자인 & 를추가하여그변수의어드레스를가리키게할수도있다. 포인터는매우중요하게사용되지만 C언어초보자에게는이해하기가쉽지가않다. 포인터에대한이해가부족한독자는필히 C언어기초서적등을통해포인터에대한충분한지식을쌓을수있기를당부한다 포인터변수의사용예그럼, 포인터변수의사용에대해살펴보자. int *p = &x; printf( The value of x : %d\n, *p); printf( The address of x : %d\n, p); // 포인터변수 p = 변수 x의어드레스 // 변수 x의값을출력 // 변수 x의어드레스를출력 또다른예를살펴보자. 다음예제는두변수 x,y의어드레스및값을포인터변수 p를이용하여알수있는예이다. 116

117 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 어셈블리에익숙한분들은다음과같이 C언어의포인터사용을이해할수있을것이다 포인터변수의연산포인터변수는증 / 감연산자 + 또는 - 연산자를이용하여자신의데이터형에대해어드레스를증가또는감소할수있다. 다음예제를보면좀더이해하기쉬울것으로믿는다. 즉, 실수형포인터변수로선언된 p는 1 증 / 감시어드레스가 1이증 / 감하는것이아니고데이터형만큼, 즉, 4번지씩증 / 감하게된다. 따라서앞에서도말했듯이포인터변수는반드시사용할데이터변수의데이터형과동일하게선언해주어야한다. 117

118 Motor Control 포인터연산시흔히사용하게되는증 / 감연산자사용시선처리및후처리연산자사용에따라그결과가다르게되므로주의하기를바란다. *p++ : 데이터를가리킨후포인터변수 p를증가한다. [ *(p++) 과동일 ] (*p)++ : 포인터변수 p가가리키는데이터의값을증가시킨다. [ 포인터변수 p는변화없음 ] 잘이해가되지않으면, 다음예를한번살펴보자. 먼저변수 y는포인터변수 p가가리키는주소의데이터즉, x[0] 값이저장되며, 이후포인터변수 p가 1증가하게된다. 즉, 어드레스는 4번지가증가하게되어 x[1] 의어드레스를가리키게된다. 여기서눈치가빠른독자라면포인터변수 p가가리키는배열의값은전혀바뀌지않는다는것을알아냈을것이다. 즉, 포인터를이용해특정메모리의데 118

119 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 이터를참조할수있다는점이다. 또다른예를한번살펴보자. 다음예에서는포인터변수 p의값을 1 증가한후이값을 y에저장하게된다. 하지만포인터변수 p는증가하지않았다. 즉, 포인터변수 p가가리키는어드레스의데이터값만증가시킬수있다는말이다 포인터와배열앞장에서설명했듯이배열의각구성요소즉, 데이터들은연속적으로메모리영역에저장되며이들데이터의최초시작어드레스는배열의이름과같다. 즉, 배열의이름은배열의첫번째데이터가저장되는메모리영역의어드레스와같다는것이다. 따라서아래와같이세가지표현이모두가능하다는말이된다 함수인자로써의포인터일반적으로함수의인자는일반적인변수를이용하지만, 다음예와같이포인터를이용하여불필요한메모리사용을제거할수있다. 여기에서사용한 square() 함수는포인터인자가가리키는변수의값을제곱으로변경해주는결과를얻게된다. 119

120 Motor Control 포인터의기타사용예포인터변수도필요시다음예와같이배열의형태로이용할수있다. 다음예는시리얼통신또는 LCD 디스플레이등에서문자열을출력하기위해흔히사용하는방법중하나이다. 120

121 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 포인터실습앞절에서수행했던것과동일한방법으로 Demo9라는프로젝트를만들어보자. 절차 1. MPLAB IDE 실행 2. 디바이스선택 - Menu Configure Select Device 클릭 - Select Device 윈도우 : Device PIC24FJ128GA010 선택 - OK 버튼클릭 3. 프로젝트생성 - Menu Project New 클릭 - Project Name : Demo9 입력 - Project Directory : C:\Temp\Demo9 입력 - OK 버튼클릭 4. C30 컴파일러선택 - Menu Project Select Language Toolsuit : MPLAB C30 선택 121

122 Motor Control 5. 디바이스링커스크립트파일추가 - 프로젝트매니저윈도우의 Linker Scripts 폴더에서마우스우측버튼클릭 Add Files... 항목선택 - p24fj128ga010.gld 파일클릭후열기 (Open) 버튼클릭 * 링커스크립트파일위치 : C:\Program Files\Microchip\MPLAB C30\Support\gld 6. C 소스코드생성하기 - Menu File New 클릭 - Menu File Save As 클릭 - 파일이름 : Demo9.c 입력후저장버튼클릭 7. 프로젝트에 C 소스코드추가 - 프로젝트매니저윈도우의 Source Files 폴더에서마우스우측버튼클릭 Add Files 선택 - C:\Temp\Demo9\Demo9.c 선택후열기 (Open) 버튼클릭 8. C 소스코드입력이제에디터윈도우의 Demo9.c 파일에다음과같이실습할 C 소스코드를입력하자. //#include <p24fj128ga010.h> #include <stdio.h> int x,y; int *p; int main(void) { x = 5; p = &x; printf("the variable x is located at address 0x%X\n", &x); printf("the value of x is %d\n", x); 122

123 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 printf("the pointer p is located at address 0x%X\n", &p); printf("the value of p is 0x%X\n", p); printf("the value pointed to by *p = %d\n", *p); *p = 10; printf("the variable x is located at address 0x%X\n", &x); printf("the value of x is %d\n", x); } while(1); 9. Build Option 설정 - Menu Project Build Options Project 선택 - Menu Project Build Options Project General : Library Path 설정 : C:\Program Files\Microchip\MPLAB C30\lib - Menu Project Build Options Project MPLAB LINK 30 : Heap Size : 256 입력 10. MPLAB SIM 설정 U. Menu Debugger Select Tool MPLAB SIM 클릭 V. Menu Debugger Settings 클릭 W. Menu Debugger Settings Uart1 IO 클릭 : Enable Uart1 IO, Rewind Input, Window 선택 11. Build All X. Menu Project Build All 클릭 (Ctrl + F10) Y. Output Window Build 탭에서메시지확인 : BUILD SUCCEEDED 확인 12. MPLAB SIM 실행 A. Menu Debugger Run (F9) 클릭 B. Output Window에서출력값확인 123

124 Motor Control 배열과포인터실습앞절에서수행했던것과동일한방법으로 Demo10라는프로젝트를만들어보자. 절차 1. MPLAB IDE 실행 2. 디바이스선택 - Menu Configure Select Device 클릭 - Select Device 윈도우 : Device PIC24FJ128GA010 선택 - OK 버튼클릭 3. 프로젝트생성 - Menu Project New 클릭 - Project Name : Demo10 입력 - Project Directory : C:\Temp\Demo10 입력 - OK 버튼클릭 124

125 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 4. C30 컴파일러선택 - Menu Project Select Language Toolsuit : MPLAB C30 선택 5. 디바이스링커스크립트파일추가 - 프로젝트매니저윈도우의 Linker Scripts 폴더에서마우스우측버튼클릭 Add Files... 항목선택 - p24fj128ga010.gld 파일클릭후열기 (Open) 버튼클릭 * 링커스크립트파일위치 : C:\Program Files\Microchip\MPLAB C30\Support\gld 6. C 소스코드생성하기 - Menu File New 클릭 - Menu File Save As 클릭 - 파일이름 : Demo10.c 입력후저장버튼클릭 7. 프로젝트에 C 소스코드추가 - 프로젝트매니저윈도우의 Source Files 폴더에서마우스우측버튼클릭 Add Files 선택 - C:\Temp\Demo10\Demo10.c 선택후열기 (Open) 버튼클릭 8. 소스코드입력이제에디터윈도우의 Demo10.c 파일에다음과같이실습할 C 소스코드를입력하자. //#include <p24fj128ga010.h> #include <stdio.h> char x[7] = {'a', 'b', 'c', 'd', 'e', 'f', '\0'}; char *p; int y[7] = {0, 1, 2, 3, 4, 5, 6}; int *q; int i; 125

126 Motor Control int main(void) { p = &x; //also p = &x[0] while (*p!= '\0') { printf("%c\n", *p); p++; //Watch the value of p incrementing in the watch window } q = &y; for (i = 0; i < 7; i++) { (*q)++; printf("y[%d] = %d\n", i, *q); q++; //Watch the value of q incrementing in the watch window } /* for (i = 0; i< 7; i++) { printf("y[%d] = %d\n", i, *q); (*q++)++; } */ while(1); } 9. Build Option 설정 - Menu Project Build Options Project 선택 - Menu Project Build Options Project General : Library Path 설정 : C:\Program Files\Microchip\MPLAB C30\lib - Menu Project Build Options Project MPLAB LINK 30 : Heap Size : 256 입력 10. MPLAB SIM 설정 Z. Menu Debugger Select Tool MPLAB SIM 클릭 AA. Menu Debugger Settings 클릭 126

127 Chapter 2. 마이크로칩개발툴및 C 언어프로그래밍 BB. Menu Debugger Settings Uart1 IO 클릭 : Enable Uart1 IO, Rewind Input, Window 선택 11. Build All CC. Menu Project Build All 클릭 (Ctrl + F10) DD. Output Window Build 탭에서메시지확인 : BUILD SUCCEEDED 확인 12. MPLAB SIM 실행 A. Menu Debugger Run (F9) 클릭 B. Output Window에서출력값확인 구조체 (Structure) 와공용체 (Union) 데이터를일괄적으로관리하는방법에는앞에서배운배열외에도구조체를이용할수있다. 배열은동일한데이터형으로이루어진데이터들의집합인반면, 구조체는동일한자료형은물론서로다른자료형까지도일괄적으로관리할수있다. 127

Motor Control Solution

Motor Control Solution Motor Control Solution 마이크로칩에서는 Stepper, Brushed-DC, AC Induction, Switched Reluctance Brushless-DC 등모터종류별특성및동작방식에맞는 MCU가준비되어있어, User가 Motor를이용한 Application을개발하려할때에가장적절한 Solution을제시해줄수있다. 이중 FFT나 PID연산등정밀한모터제어를실행하기위해꼭해주어야하는빠른

More information

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074> Chap #2 펌웨어작성을위한 C 언어 I http://www.smartdisplay.co.kr 강의계획 Chap1. 강의계획및디지털논리이론 Chap2. 펌웨어작성을위한 C 언어 I Chap3. 펌웨어작성을위한 C 언어 II Chap4. AT89S52 메모리구조 Chap5. SD-52 보드구성과코드메모리프로그래밍방법 Chap6. 어드레스디코딩 ( 매핑 ) 과어셈블리어코딩방법

More information

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향

More information

Microsoft PowerPoint - chap01-C언어개요.pptx

Microsoft PowerPoint - chap01-C언어개요.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을

More information

Microsoft PowerPoint - chap03-변수와데이터형.pptx

Microsoft PowerPoint - chap03-변수와데이터형.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num %d\n", num); return 0; } 1 학습목표 의 개념에 대해 알아본다.

More information

(Microsoft PowerPoint - \270\266\300\314\305\251\267\316\304\250USB_Host_Device_\272\316\306\256\267\316\264\365\275\307\275\300_Philip.ppt)

(Microsoft PowerPoint - \270\266\300\314\305\251\267\316\304\250USB_Host_Device_\272\316\306\256\267\316\264\365\275\307\275\300_Philip.ppt) 마이크로칩 USB Host & Device 부트로더기능실습 한국마이크로칩서한석부장 (CAE) 2009-09-07 마이크로칩 16 비트 USB 데모보드세팅 Explorer 16 + USB PICtail Plus Daughter Board + USB PIMs Part #: DM240001 Part #: AC164131 Part #: MA240014(PIC24FJ256GB11)

More information

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

More information

ISP and CodeVisionAVR C Compiler.hwp

ISP and CodeVisionAVR C Compiler.hwp USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler http://www.avrmall.com/ November 12, 2007 Copyright (c) 2003-2008 All Rights Reserved. USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

<4D F736F F F696E74202D C61645FB3EDB8AEC7D5BCBA20B9D720C5F8BBE7BFEBB9FD2E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D C61645FB3EDB8AEC7D5BCBA20B9D720C5F8BBE7BFEBB9FD2E BC8A3C8AF20B8F0B5E55D> VHDL 프로그래밍 D. 논리합성및 Xilinx ISE 툴사용법 학습목표 Xilinx ISE Tool 을이용하여 Xilinx 사에서지원하는해당 FPGA Board 에맞는논리합성과정을숙지 논리합성이가능한코드와그렇지않은코드를구분 Xilinx Block Memory Generator를이용한 RAM/ ROM 생성하는과정을숙지 2/31 Content Xilinx ISE

More information

Microsoft Word - PEB08_USER_GUIDE.doc

Microsoft Word - PEB08_USER_GUIDE.doc 0. PEB08 이란? PEB08(PIC EVALUATION BOARD 8bits) 은 Microchip 8bit Device 개발을쉽고편리하게할수있는보드입니다. 1. 다양한 8bit Device 지원 기존대부분의 8bit 보드의경우일부 Pin-Count만지원을하였지만, PEB08은 PIC10, PIC12, PIC16, PIC18의 DIP Type Package의모든

More information

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt 변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short

More information

Microsoft PowerPoint - chap04-연산자.pptx

Microsoft PowerPoint - chap04-연산자.pptx int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); } 1 학습목표 수식의 개념과 연산자, 피연산자에 대해서 알아본다. C의 를 알아본다. 연산자의 우선 순위와 결합 방향에

More information

MPLAB C18 C

MPLAB C18 C MPLAB C18 C MPLAB C18 MPLAB C18 C MPLAB C18 C #define START, c:\mcc18 errorlevel{0 1} char isascii(char ch); list[list_optioin,list_option] OK, Cancel , MPLAB IDE User s Guide MPLAB C18 C

More information

슬라이드 1

슬라이드 1 CCS v4 사용자안내서 CCSv4 사용자용예제따라하기안내 0. CCS v4.x 사용자 - 준비사항 예제에사용된 CCS 버전은 V4..3 버전이며, CCS 버전에따라메뉴화면이조금다를수있습니다. 예제실습전준비하기 처음시작하기예제모음집 CD 를 PC 의 CD-ROM 드라이브에삽입합니다. 아래안내에따라, 예제소스와헤더파일들을 PC 에설치합니다. CD 드라이브 \SW\TIDCS\TIDCS_DSP80x.exe

More information

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드] Chapter 03 변수와자료형 2009 한국항공대학교항공우주기계공학부 (http://mercury.kau.ac.kr/sjkwon) 1 변수와자료유형 변수 프로그램에서자료값을임시로기억할수있는저장공간을변수 (variables) 변수 (Variables) 는컴퓨터의메모리인 RAM(Random Access Memory) 에저장 물건을담는박스라고생각한다면박스의크기에따라담을물건이제한됨

More information

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,

More information

untitled

untitled 시스템소프트웨어 : 운영체제, 컴파일러, 어셈블러, 링커, 로더, 프로그래밍도구등 소프트웨어 응용소프트웨어 : 워드프로세서, 스프레드쉬트, 그래픽프로그램, 미디어재생기등 1 n ( x + x +... + ) 1 2 x n 00001111 10111111 01000101 11111000 00001111 10111111 01001101 11111000

More information

슬라이드 1

슬라이드 1 Delino EVM 용처음시작하기 - 프로젝트만들기 (85) Delfino EVM 처음시작하기앞서 이예제는타겟보드와개발홖경이반드시갖추어져있어야실습이가능합니다. 타겟보드 : Delfino EVM + TMS0F85 초소형모듈 개발소프트웨어 : Code Composer Studio 4 ( 이자료에서사용된버전은 v4..입니다. ) 하드웨어장비 : TI 정식 JTAG

More information

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F > 10주차 문자 LCD 의인터페이스회로및구동함수 Next-Generation Networks Lab. 5. 16x2 CLCD 모듈 (HY-1602H-803) 그림 11-18 19 핀설명표 11-11 번호 분류 핀이름 레벨 (V) 기능 1 V SS or GND 0 GND 전원 2 V Power DD or V CC +5 CLCD 구동전원 3 V 0 - CLCD 명암조절

More information

2. Step 2 : Select Device Step 2 에서는 Device 드롭 - 다운리스트에서사용자가자신의프로젝트에서사용할디바이스를선택할수있다. 선택가능한디바이스의범위를줄이려면디바이스의제품군 (Family) 를먼저선택하는편이좋다. < 그림 > 프로젝트마법사 Se

2. Step 2 : Select Device Step 2 에서는 Device 드롭 - 다운리스트에서사용자가자신의프로젝트에서사용할디바이스를선택할수있다. 선택가능한디바이스의범위를줄이려면디바이스의제품군 (Family) 를먼저선택하는편이좋다. < 그림 > 프로젝트마법사 Se MPLAB X IDE User Guide 새프로젝트만들기 MPLAB X IDE 는프로젝트를기반으로모든동작이이루어진다. 따라서 MPLAB X IDE 의사용자는프로젝트를생성및설정할수있어야한다. 새프로젝트는아래의방법들중에서한가지를선택함으로해서만들어진다. Start Page 의 Learn and Discover tab 에서생성하는방법 : Dive In Create

More information

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 Eclipse (IDE) JDK Android SDK with ADT IDE: Integrated Development Environment JDK: Java Development Kit (Java SDK) ADT: Android Development Tools 2 JDK 설치 Eclipse

More information

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074> SIMATIC S7 Siemens AG 2004. All rights reserved. Date: 22.03.2006 File: PRO1_17E.1 차례... 2 심벌리스트... 3 Ch3 Ex2: 프로젝트생성...... 4 Ch3 Ex3: S7 프로그램삽입... 5 Ch3 Ex4: 표준라이브러리에서블록복사... 6 Ch4 Ex1: 실제구성을 PG 로업로드하고이름변경......

More information

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

More information

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - ch07 - 포인터 pm0415 2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자

More information

슬라이드 1

슬라이드 1 마이크로컨트롤러 2 (MicroController2) 2 강 ATmega128 의 external interrupt 이귀형교수님 학습목표 interrupt 란무엇인가? 기본개념을알아본다. interrupt 중에서가장사용하기쉬운 external interrupt 의사용방법을학습한다. 1. Interrupt 는왜필요할까? 함수동작을추가하여실행시키려면? //***

More information

목차 다운로드및설치 1. 다운로드 2. 설치 3. MPLAB TM X IDE 데스크탑 기본사용법 1. 새프로젝트만들기 2. 프로젝트속성 (Properties) 조정 3. 디버거, 프로그램, 프로그램언어옵션설정 4. 프로그램언어위치설정 5. 기타툴옵션설정 6. 새파일만들

목차 다운로드및설치 1. 다운로드 2. 설치 3. MPLAB TM X IDE 데스크탑 기본사용법 1. 새프로젝트만들기 2. 프로젝트속성 (Properties) 조정 3. 디버거, 프로그램, 프로그램언어옵션설정 4. 프로그램언어위치설정 5. 기타툴옵션설정 6. 새파일만들 MPLAB TM X IDE 한글사용설명서 본문서에서사용되는이미지는 MPLAB X IDE 의버전에따라다소상이할수 있습니다. 목차 다운로드및설치 1. 다운로드 2. 설치 3. MPLAB TM X IDE 데스크탑 기본사용법 1. 새프로젝트만들기 2. 프로젝트속성 (Properties) 조정 3. 디버거, 프로그램, 프로그램언어옵션설정 4. 프로그램언어위치설정 5.

More information

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음 프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음 CHAPTER 9 둘중하나선택하기 관계연산자 두개의피연산자를비교하는연산자 결과값은참 (1) 아니면거짓 (0) x == y x 와 y 의값이같은지비교한다. 관계연산자 연산자 의미 x == y x와 y가같은가? x!= y

More information

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D> 리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1

More information

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 3 장 : 변수와데이터형 2012 년 이은주 학습목표 변수와상수의개념에대해알아본다. 리터럴상수, 매크로상수, const 변수에대해알아본 다. C 언어의데이터형에대해알아본다. 2 목차 변수와상수 변수 상수 데이터형 문자형 정수형 실수형 sizeof 연산자 3 변수와상수 변수 : 값이변경될수있는데이터 상수 : 값이변경될수없는데이터

More information

Install stm32cubemx and st-link utility

Install stm32cubemx and st-link utility STM32CubeMX and ST-LINK Utility for STM32 Development 본문서는 ST Microelectronics 의 ARM Cortex-M 시리즈 Microcontroller 개발을위해제공되는 STM32CubeMX 와 STM32 ST-LINK Utility 프로그램의설치과정을설명합니다. 본문서는 Microsoft Windows 7

More information

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다. Eclipse 개발환경에서 WindowBuilder 를이용한 Java 프로그램개발 이예는 Java 프로그램의기초를이해하고있는사람을대상으로 Embedded Microcomputer 를이용한제어시스템을 PC 에서 Serial 통신으로제어 (Graphical User Interface (GUI) 환경에서 ) 하는프로그램개발예를설명한다. WindowBuilder:

More information

Microsoft Word - ICD2PLUS_2003.doc

Microsoft Word - ICD2PLUS_2003.doc 제품요약 USB ICD2 PLUS 는다음과같은특성을가지고있습니다. 1. In-Circuit Debugger (ICD) 및 In-Circuit Serial Programmer (ICSP) 기능 2. USB (Fullspeed 2Mbits/s) 를통한 PC Interface 3. MPLAB IDE GUI 지원 4. PC 를통한펌웨어업그레이드 5. 실시간또는단계별코드실행기능

More information

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과 1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과 학습내용 1. Java Development Kit(JDK) 2. Java API 3. 자바프로그래밍개발도구 (Eclipse) 4. 자바프로그래밍기초 2 자바를사용하려면무엇이필요한가? 자바프로그래밍개발도구 JDK (Java Development Kit) 다운로드위치 : http://www.oracle.com/technetwork/java/javas

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

4S 1차년도 평가 발표자료

4S 1차년도 평가 발표자료 모바일 S/W 프로그래밍 안드로이드개발환경설치 2012.09.05. 오병우 모바일공학과 JDK (Java Development Kit) SE (Standard Edition) 설치순서 Eclipse ADT (Android Development Tool) Plug-in Android SDK (Software Development Kit) SDK Components

More information

Microsoft PowerPoint - additional01.ppt [호환 모드]

Microsoft PowerPoint - additional01.ppt [호환 모드] 1.C 기반의 C++ part 1 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 함수 Jong Hyuk Park 함수오버로딩 (overloading) 함수오버로딩 (function overloading) C++ 언어에서는같은이름을가진여러개의함수를정의가능

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

PowerPoint Presentation

PowerPoint Presentation #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 변수와상수의개념에대해알아본다.

More information

Microsoft Word - Armjtag_문서1.doc

Microsoft Word - Armjtag_문서1.doc ARM JTAG (wiggler 호환 ) 사용방법 ( IAR EWARM 에서 ARM-JTAG 로 Debugging 하기 ) Test Board : AT91SAM7S256 IAR EWARM : Kickstart for ARM ARM-JTAG : ver 1.0 ( 씨링크테크 ) 1. IAR EWARM (Kickstart for ARM) 설치 2. Macraigor

More information

11장 포인터

11장 포인터 누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3

More information

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc NTAS and FRAME BUILDER Install Guide NTAS and FRAME BUILDER Version 2.5 Copyright 2003 Ari System, Inc. All Rights reserved. NTAS and FRAME BUILDER are trademarks or registered trademarks of Ari System,

More information

윈도우시스템프로그래밍

윈도우시스템프로그래밍 데이터베이스및설계 MySQL 을위한 MFC 를사용한 ODBC 프로그래밍 2012.05.10. 오병우 컴퓨터공학과금오공과대학교 http://www.apmsetup.com 또는 http://www.mysql.com APM Setup 설치발표자료참조 Department of Computer Engineering 2 DB 에속한테이블보기 show tables; 에러발생

More information

11장 포인터

11장 포인터 Dynamic Memory and Linked List 1 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것 메모리의크기는프로그램이시작하기전에결정 int i, j; int buffer[80]; char name[] = data structure"; 처음에결정된크기보다더큰입력이들어온다면처리하지못함

More information

DE1-SoC Board

DE1-SoC Board 실습 1 개발환경 DE1-SoC Board Design Tools - Installation Download & Install Quartus Prime Lite Edition http://www.altera.com/ Quartus Prime (includes Nios II EDS) Nios II Embedded Design Suite (EDS) is automatically

More information

Microsoft PowerPoint - Chapter_04.pptx

Microsoft PowerPoint - Chapter_04.pptx 프로그래밍 1 1 Chapter 4. Constant and Basic Data Types April, 2016 Dept. of software Dankook University http://embedded.dankook.ac.kr/~baeksj 이장의강의목표 2 기본자료형문자표현방식과문자자료형상수자료형변환 기본자료형 (1/8) 3 변수 (Variables)

More information

표제지용

표제지용 MicroChip bit MicroController 머리말 1988년세계최초로상업용 OTP타입의 8비트마이크로컨트롤러인 PICC5X 를출시한이래로마이크로칩은차별화된제품의성능, 신뢰성및솔루션을바탕으로현재시장점유율및매출규모에있어서세계 1위의 8비트마이크로컨트롤러공급업체의입지를달성하고있습니다. 이러한 8비트마이크로컨트롤러시장에서단기간에이뤄낸눈부신성과를바탕으로최근마이크로컨트롤러시장의고사양요구를반영하여,

More information

Microsoft PowerPoint - 03_(C_Programming)_(Korean)_Pointers

Microsoft PowerPoint - 03_(C_Programming)_(Korean)_Pointers C Programming 포인터 (Pointers) Seo, Doo-Ok Clickseo.com clickseo@gmail.com 목 차 포인터의이해 다양한포인터 2 포인터의이해 포인터의이해 포인터변수선언및초기화 포인터연산 다양한포인터 3 주소연산자 ( & ) 포인터의이해 (1/4) 변수와배열원소에만적용한다. 산술식이나상수에는주소연산자를사용할수없다. 레지스터변수또한주소연산자를사용할수없다.

More information

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론 이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론 2. 관련연구 2.1 MQTT 프로토콜 Fig. 1. Topic-based Publish/Subscribe Communication Model. Table 1. Delivery and Guarantee by MQTT QoS Level 2.1 MQTT-SN 프로토콜 Fig. 2. MQTT-SN

More information

금오공대 컴퓨터공학전공 강의자료

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include

More information

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우. 소프트웨어매뉴얼 윈도우드라이버 Rev. 3.03 SLP-TX220 / TX223 SLP-TX420 / TX423 SLP-TX400 / TX403 SLP-DX220 / DX223 SLP-DX420 / DX423 SLP-DL410 / DL413 SLP-T400 / T403 SLP-T400R / T403R SLP-D220 / D223 SLP-D420 / D423

More information

Windows 8에서 BioStar 1 설치하기

Windows 8에서 BioStar 1 설치하기 / 콘텐츠 테이블... PC에 BioStar 1 설치 방법... Microsoft SQL Server 2012 Express 설치하기... Running SQL 2012 Express Studio... DBSetup.exe 설정하기... BioStar 서버와 클라이언트 시작하기... 1 1 2 2 6 7 1/11 BioStar 1, Windows 8 BioStar

More information

Studuino소프트웨어 설치

Studuino소프트웨어 설치 Studuino 프로그래밍환경 Studuino 소프트웨어설치 본자료는 Studuino 프로그래밍환경설치안내서입니다. Studuino 프로그래밍 환경의갱신에따라추가 / 수정될수있습니다. 목차 1. 소개... 1 2. Windows... 2 2.1. 프로그래밍환경설치... 2 2.1.1. 웹설치버전설치방법... 2 2.2. Studuino 프로그래밍환경실행...

More information

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

Microsoft PowerPoint 자바-기본문법(Ch2).pptx 자바기본문법 1. 기본사항 2. 자료형 3. 변수와상수 4. 연산자 1 주석 (Comments) 이해를돕기위한설명문 종류 // /* */ /** */ 활용예 javadoc HelloApplication.java 2 주석 (Comments) /* File name: HelloApplication.java Created by: Jung Created on: March

More information

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 비트연산자 1 1 비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 진수법! 2, 10, 16, 8! 2 : 0~1 ( )! 10 : 0~9 ( )! 16 : 0~9, 9 a, b,

More information

금오공대 컴퓨터공학전공 강의자료

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 13. 포인터와배열! 함께이해하기 2013.10.02. 오병우 컴퓨터공학과 13-1 포인터와배열의관계 Programming in C, 정재은저, 사이텍미디어. 9 장참조 ( 교재의 13-1 은읽지말것 ) 배열이름의정체 배열이름은 Compile 시의 Symbol 로서첫번째요소의주소값을나타낸다. Symbol 로서컴파일시에만유효함 실행시에는메모리에잡히지않음

More information

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)- 1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다. 1.2.1 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-1 연산범위이유 : 00000000 00000000 00000000 00000000의 32

More information

À̵¿·Îº¿ÀÇ ÀÎÅͳݱâ¹Ý ¿ø°ÝÁ¦¾î½Ã ½Ã°£Áö¿¬¿¡_.hwp

À̵¿·Îº¿ÀÇ ÀÎÅͳݱâ¹Ý ¿ø°ÝÁ¦¾î½Ã ½Ã°£Áö¿¬¿¡_.hwp l Y ( X g, Y g ) r v L v v R L θ X ( X c, Yc) W (a) (b) DC 12V 9A Battery 전원부 DC-DC Converter +12V, -12V DC-DC Converter 5V DC-AC Inverter AC 220V DC-DC Converter 3.3V Motor Driver 80196kc,PWM Main

More information

Infinity(∞) Strategy

Infinity(∞) Strategy 반복제어 표월성 passwd74@cherub.sungkyul.edu 개요 for() 문 break문과 continue문 while문 do-while문 for() 문 for() 문형식 for( 표현식1; 표현식2; 표현식3) 여러문장들 ; 표현식 1 : 초기화 (1 번만수행 ) 표현식 2 : 반복문수행조건 ( 없으면무한반복 ) 표현식 3 : 반복문수행횟수 for()

More information

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 개발환경구조및설치순서 JDK 설치 Eclipse 설치 안드로이드 SDK 설치 ADT(Androd Development Tools) 설치 AVD(Android Virtual Device) 생성 Hello Android! 2 Eclipse (IDE) JDK Android SDK with

More information

<4D F736F F F696E74202D20C1A632C0E520C7C1B7CEB1D7B7A5B0B3B9DFB0FAC1A4>

<4D F736F F F696E74202D20C1A632C0E520C7C1B7CEB1D7B7A5B0B3B9DFB0FAC1A4> 쉽게풀어쓴 C 언어 Express 제 2 장프로그램개발과정 통합개발환경 통합개발환경 (IDE: integrated development environment) 에디터 + 컴파일러 + 디버거 Visual C++: 이클립스 (eclipse): Dev-C++: 마이크로소프트제작 오픈소스프로젝트 오픈소스프로젝트 통합개발환경의종류 비주얼 C++(Visual C++)

More information

Microsoft Word doc

Microsoft Word doc 2. 디바이스드라이버 [ DIO ] 2.1. 개요 타겟보드의데이터버스를이용하여 LED 및스위치동작을제어하는방법을설명하겠다. 2.2. 회로도 2.3. 준비조건 ARM 용크로스컴파일러가설치되어있어야한다. 하드웨어적인점검을하여정상적인동작을한다고가정한다. NFS(Network File System) 를사용할경우에는 NFS가마운트되어있어야한다. 여기서는소스전문을포함하지않았다.

More information

PowerPoint Template

PowerPoint Template 16-1. 보조자료템플릿 (Template) 함수템플릿 클래스템플릿 Jong Hyuk Park 함수템플릿 Jong Hyuk Park 함수템플릿소개 함수템플릿 한번의함수정의로서로다른자료형에대해적용하는함수 예 int abs(int n) return n < 0? -n : n; double abs(double n) 함수 return n < 0? -n : n; //

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 06 반복문 01 반복문의필요성 02 for문 03 while문 04 do~while문 05 기타제어문 반복문의의미와필요성을이해한다. 대표적인반복문인 for 문, while 문, do~while 문의작성법을 알아본다. 1.1 반복문의필요성 반복문 동일한내용을반복하거나일정한규칙으로반복하는일을수행할때사용 프로그램을좀더간결하고실제적으로작성할수있음.

More information

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729> 8주차중간고사 ( 인터럽트및 A/D 변환기문제및풀이 ) Next-Generation Networks Lab. 외부입력인터럽트예제 문제 1 포트 A 의 7-segment 에초시계를구현한다. Tact 스위치 SW3 을 CPU 보드의 PE4 에연결한다. 그리고, SW3 을누르면하강 에지에서초시계가 00 으로초기화된다. 동시에 Tact 스위치 SW4 를 CPU 보드의

More information

Microsoft PowerPoint - chap-03.pptx

Microsoft PowerPoint - chap-03.pptx 쉽게풀어쓴 C 언어 Express 제 3 장 C 프로그램구성요소 컴퓨터프로그래밍기초 이번장에서학습할내용 * 주석 * 변수, 상수 * 함수 * 문장 * 출력함수 printf() * 입력함수 scanf() * 산술연산 * 대입연산 이번장에서는 C프로그램을이루는구성요소들을살펴봅니다. 컴퓨터프로그래밍기초 2 일반적인프로그램의형태 데이터를받아서 ( 입력단계 ), 데이터를처리한후에

More information

슬라이드 1

슬라이드 1 Pairwise Tool & Pairwise Test NuSRS 200511305 김성규 200511306 김성훈 200614164 김효석 200611124 유성배 200518036 곡진화 2 PICT Pairwise Tool - PICT Microsoft 의 Command-line 기반의 Free Software www.pairwise.org 에서다운로드후설치

More information

Microsoft PowerPoint - es-arduino-lecture-03

Microsoft PowerPoint - es-arduino-lecture-03 임베디드시스템개론 : Arduino 활용 Lecture #3: Button Input & FND Control 2012. 3. 25 by 김영주 강의목차 디지털입력 Button switch 입력 Button Debounce 7-Segment FND : 직접제어 7-Segment FND : IC 제어 2 디지털입력 : Switch 입력 (1) 실습목표 아두이노디지털입력처리실습

More information

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning C Programming Practice (I) Contents 변수와상수 블록과변수의범위 수식과연산자 제어문과반복문 문자와문자열 배열, 포인터, 메모리관리 구조체 디버거 (gdb) 사용법 2/17 Reference The C Programming language, Brian W. Kernighan, Dennis M. Ritchie, Prentice-Hall

More information

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - [2009] 02.pptx 원시데이터유형과연산 원시데이터유형과연산 원시데이터유형과연산 숫자데이터유형 - 숫자데이터유형 원시데이터유형과연산 표준입출력함수 - printf 문 가장기본적인출력함수. (stdio.h) 문법 ) printf( Test printf. a = %d \n, a); printf( %d, %f, %c \n, a, b, c); #include #include

More information

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

Microsoft Word - windows server 2003 수동설치_non pro support_.doc Windows Server 2003 수동 설치 가이드 INDEX 운영체제 설치 준비과정 1 드라이버를 위한 플로피 디스크 작성 2 드라이버를 위한 USB 메모리 작성 7 운영체제 설치 과정 14 Boot Sequence 변경 14 컨트롤러 드라이버 수동 설치 15 운영체제 설치 17 운영체제 설치 준비 과정 Windows Server 2003 에는 기본적으로

More information

JDK이클립스

JDK이클립스 JDK 와이클립스설치 A. JDK 다운로드, 설치및환경설정 지금부터 JDK를다운로드받아설치하고 JDK를윈도우에서활용할수있도록환경을설정하는전과정을소개한다. 다운로드 www.oracle.com 사이트에접속하여 Downloads 메뉴를선택한후 [ 그림 1] 과같이 "Java for Developers" 를클릭한다. [ 그림 1] www.oracle.com 사이트

More information

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자 SQL Developer Connect to TimesTen 유니원아이앤씨 DB 팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 2010-07-28 작성자 김학준 최종수정일 2010-07-28 문서번호 20100728_01_khj 재개정이력 일자내용수정인버전

More information

윤성우의 열혈 TCP/IP 소켓 프로그래밍

윤성우의 열혈 TCP/IP 소켓 프로그래밍 C 프로그래밍프로젝트 Chap 22. 구조체와사용자정의자료형 1 2013.10.10. 오병우 컴퓨터공학과 구조체의정의 (Structure) 구조체 하나이상의기본자료형을기반으로사용자정의자료형 (User Defined Data Type) 을만들수있는문법요소 배열 vs. 구조체 배열 : 한가지자료형의집합 구조체 : 여러가지자료형의집합 사용자정의자료형 struct

More information

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770> 연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.

More information

슬라이드 1

슬라이드 1 핚국산업기술대학교 제 14 강 GUI (III) 이대현교수 학습안내 학습목표 CEGUI 라이브러리를이용하여, 게임메뉴 UI 를구현해본다. 학습내용 CEGUI 레이아웃의로딩및렌더링. OIS 와 CEGUI 의연결. CEGUI 위젯과이벤트의연동. UI 구현 : 하드코딩방식 C++ 코드를이용하여, 코드내에서직접위젯들을생성및설정 CEGUI::PushButton* resumebutton

More information

<4D F736F F D D31312D30312D53572D30312DBBE7BFEBC0DABCB3B8EDBCAD5FBFDCBACEB9E8C6F7BFEB2E646F63>

<4D F736F F D D31312D30312D53572D30312DBBE7BFEBC0DABCB3B8EDBCAD5FBFDCBACEB9E8C6F7BFEB2E646F63> SAM4S Printer Driver Installer 달리명시하지않은한, 인쇄또는복사된문서는통제하지않는문서임 목 차 1. 1. WINDOWS DRIVER INSTALLER 설치 설치...... 2 2. 프린터추가...... 5 3. 프린터제거...... 19 4. 프린터추가 / 제거선택...... 21 5. 프로그램추가 / 제거...... 21 SHC- 11-01-

More information

(SW3704) Gingerbread Source Build & Working Guide

(SW3704) Gingerbread Source Build & Working Guide (Mango-M32F4) Test Guide http://www.mangoboard.com/ http://cafe.naver.com/embeddedcrazyboys Crazy Embedded Laboratory www.mangoboard.com cafe.naver.com/embeddedcrazyboys CRZ Technology 1 Document History

More information

tut_modelsim(student).hwp

tut_modelsim(student).hwp ModelSim 사용법 1. ModelSim-Altera 를이용한 Function/RTL 시뮬레이션 1.1. 테스트벤치를사용하지않는명령어기반시뮬레이션 1.1.1. 시뮬레이션을위한하드웨어 A B S C 그림 1. 반가산기 1.1.2. 작업디렉토리 - File - Change Directory 를클릭하여작업디렉토리지정. 1.1.3. 소스파일작성 - 모델심편집기나기타편집기가능

More information

C++ Programming

C++ Programming C++ Programming 연산자다중정의 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 연산자다중정의 C++ 스타일의문자열 2 연산자다중정의 연산자다중정의 단항연산자다중정의 이항연산자다중정의 cin, cout 그리고 endl C++ 스타일의문자열 3 연산자다중정의 연산자다중정의 (Operator

More information

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 제 8 장. 포인터 목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 포인터의개요 포인터란? 주소를변수로다루기위한주소변수 메모리의기억공간을변수로써사용하는것 포인터변수란데이터변수가저장되는주소의값을 변수로취급하기위한변수 C 3 포인터의개요 포인터변수및초기화 * 변수데이터의데이터형과같은데이터형을포인터 변수의데이터형으로선언 일반변수와포인터변수를구별하기위해

More information

untitled

untitled int i = 10; char c = 69; float f = 12.3; int i = 10; char c = 69; float f = 12.3; printf("i : %u\n", &i); // i printf("c : %u\n", &c); // c printf("f : %u\n", &f); // f return 0; i : 1245024 c : 1245015

More information

윈도우시스템프로그래밍

윈도우시스템프로그래밍 데이타베이스 MySQL 을위한 MFC 를사용한 ODBC 프로그래밍 2013.05.15. 오병우 컴퓨터공학과금오공과대학교 http://www.apmsetup.com 또는 http://www.mysql.com APM Setup 설치발표자료참조 Department of Computer Engineering 2 DB 에속한테이블보기 show tables; 에러발생

More information

BY-FDP-4-70.hwp

BY-FDP-4-70.hwp RS-232, RS485 FND Display Module BY-FDP-4-70-XX (Rev 1.0) - 1 - 1. 개요. 본 Display Module은 RS-232, RS-485 겸용입니다. Power : DC24V, DC12V( 주문사양). Max Current : 0.6A 숫자크기 : 58mm(FND Size : 70x47mm 4 개) RS-232,

More information

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2 제 17 장동적메모리와연결리스트 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다.

More information

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout <<  양수입력 : ; cin >> *p; if (*p <= 0) cout <<  양수를입력해야합니다  << endl; return; 동적할 15 장기타주제들 auto_ptr 변환함수 cast 연산자에의한명시적형변환실행시간타입정보알아내기 (RTTI) C++ 프로그래밍입문 1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout > *p; if (*p

More information

Microsoft PowerPoint - Lesson2.pptx

Microsoft PowerPoint - Lesson2.pptx Computer Engineering g Programming g 2 제 3 장 C 프로그래밍구성요소 Lecturer: JUNBEOM YOO jbyoo@konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 * 주석 * 변수, 상수 * 함수 * 문장 * 출력함수 printf() * 입력함수 scanf() *

More information

Microsoft PowerPoint - chap-02.pptx

Microsoft PowerPoint - chap-02.pptx 쉽게풀어쓴 C 언어 Express 제 2 장프로그램개발과정 컴퓨터프로그래밍기초 프로그램작성과정 에디터 (editer) 컴파일러 (compiler) 링커 (linker) 로더 (loader) 소스파일 test.c 오브젝트파일 test.obj 실행파일 test.exe 통합개발환경 (IDE) 컴퓨터프로그래밍기초 2 프로그램작성단계 편집 (edit) 에디터를이용하여원하는작업의내용을기술하여소스코드작성

More information

Microsoft PowerPoint - e pptx

Microsoft PowerPoint - e pptx Import/Export Data Using VBA Objectives Referencing Excel Cells in VBA Importing Data from Excel to VBA Using VBA to Modify Contents of Cells 새서브프로시저작성하기 프로시저실행하고결과확인하기 VBA 코드이해하기 Referencing Excel Cells

More information

1. 제품소개및설명 제품특징 그림. 개발장비사진 - AVR FLASH READ/WRITE 가능 - AVR ISP 프로그래밍방식을지원하는 ATmega8, ATmega16, ATmega32, ATmega64, ATmega128, ATmega 등다수의 AVR MC

1. 제품소개및설명 제품특징 그림. 개발장비사진 - AVR FLASH READ/WRITE 가능 - AVR ISP 프로그래밍방식을지원하는 ATmega8, ATmega16, ATmega32, ATmega64, ATmega128, ATmega 등다수의 AVR MC USB AVR ISP 개발장비매뉴얼 (Model: V02) WWW.LKEMBEDDED.CO.KR 2010 LK EMBEDDED User Guide Version 1.0 페이지 1 1. 제품소개및설명 제품특징 그림. 개발장비사진 - AVR FLASH READ/WRITE 가능 - AVR ISP 프로그래밍방식을지원하는 ATmega8, ATmega16, ATmega32,

More information

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드] Google Map View 구현 학습목표 교육목표 Google Map View 구현 Google Map 지원 Emulator 생성 Google Map API Key 위도 / 경도구하기 위도 / 경도에따른 Google Map View 구현 Zoom Controller 구현 Google Map View (1) () Google g Map View 기능 Google

More information

Microsoft PowerPoint - chap11.ppt [호환 모드]

Microsoft PowerPoint - chap11.ppt [호환 모드] 2010-1 학기프로그래밍입문 (1) 11 장입출력과운영체제 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr k 0 특징 printf() - 임의의개수의인자출력 - 간단한변환명세나형식을사용한출력제어 A Book on C, 4ed. 11-1 printf() printf(control_string, other_argument) -

More information

<C7A5C1A6C1F62E687770>

<C7A5C1A6C1F62E687770> Motor Control 2.3.4.9.1 일반구조체의사용법구조체의사용법에대해알아보자. 다음예와같이 complex라는구조체는 4바이트의실수형데이터 re( 실수부변수 ) 와 im( 허수부변수 ) 즉, 8바이트로구성이되며구조체 a라는이름으로메모리영역에할당하게된다. 또한, main() 함수에서상기 complex라는구조체의형태로 8바이트로구성된구조체 b를메모리영역에할당하게된다.

More information

PowerPoint Presentation

PowerPoint Presentation 컴퓨터프로그래밍 Computer Programming 08 포인터기초 목차 1. 포인터변수와선언 2. 간접연산자 * 와포인터연산 3. 포인터형변환과다중포인터 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 3 1. 포인터변수와선언 주소개념 주소 address 메모리공간은 8비트인 1 바이트마다순차적인고유한번호 메모리주소는저장장소인변수이름과함께기억장소를참조하는또다른방법

More information

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조 - Part2- 제 2 장다차원배열이란무엇인가 학습목차 2.1 다차원배열이란 2. 2 2 차원배열의주소와값의참조 2.1 다차원배열이란 2.1 다차원배열이란 (1/14) 다차원배열 : 2 차원이상의배열을의미 1 차원배열과다차원배열의비교 1 차원배열 int array [12] 행 2 차원배열 int array [4][3] 행 열 3 차원배열 int array [2][2][3]

More information

목차 1. 시스템요구사항 암호및힌트설정 ( 윈도우 ) JetFlash Vault 시작하기 ( 윈도우 ) JetFlash Vault 옵션 ( 윈도우 )... 9 JetFlash Vault 설정... 9 JetFlash Vault

목차 1. 시스템요구사항 암호및힌트설정 ( 윈도우 ) JetFlash Vault 시작하기 ( 윈도우 ) JetFlash Vault 옵션 ( 윈도우 )... 9 JetFlash Vault 설정... 9 JetFlash Vault 사용자매뉴얼 JetFlash Vault 100 ( 버전 1.0) 1 목차 1. 시스템요구사항... 3 2. 암호및힌트설정 ( 윈도우 )... 3 3. JetFlash Vault 시작하기 ( 윈도우 )... 7 4. JetFlash Vault 옵션 ( 윈도우 )... 9 JetFlash Vault 설정... 9 JetFlash Vault 찾아보기... 10 JetFlash

More information

Microsoft PowerPoint - Perpect C 02.ppt [호환 모드]

Microsoft PowerPoint - Perpect C 02.ppt [호환 모드] 02 C 프로그래밍기초 충남대학교이형주 1 C 프로그램구조 콘솔응용프로그램 2 프로그램실행순서 C 프로그램은여러함수의조합으로구성 함수란정해진규칙에의하여일련의작업을수행하는프로그램의단위 실행순서 main 함수는프로그램이실행되면가장먼저시작되는부분 모든함수내부에서는위에서아래로, 좌에서우로, 문장이위치한순서대로실행 3 전처리기 전처리기 (preprocessor) 미리처리하는프로그램으로,

More information

Microsoft PowerPoint - chap05-제어문.pptx

Microsoft PowerPoint - chap05-제어문.pptx int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); 1 학습목표 제어문인,, 분기문에 대해 알아본다. 인 if와 switch의 사용 방법과 사용시 주의사항에 대해 알아본다.

More information

Stepper Motors

Stepper Motors tepper Motor 제어 28 Microchip Technology Incorporated. All Rights Reserved. tepper Motor Control lide 1 Agenda 1. 스텝모터기초 2. Full tep 제어 (1상/2 상제어 ) 3. Half tep 제어 (1-2 상제어 ) 4. Micro tepping 제어 28 Microchip

More information