개요 본작품의목적은 MCU 를처음접하는사용자가정해진커리큘럼에맞추어학습할수있는키트를만드는것이다. 사용자는본작품을통해저성능이지만사용및학습이쉽고현재가장많이사용되는 MCU 인 AVR 과현존하는가장고성능 MCU 인 C2000 프로세서를사용해봄으로서 MCU 를사용하는로봇엔지니어로

Similar documents
슬라이드 1

TMS320F28335 칩과 SYNCWORKS 사에서제작한 SMC150 기판을사용하기로결정하였다. 마지막으로소리출력부분에대해서는 MP3 모듈과스피커를사용, 해당구간에해당하는음원파일을재생하기위한장치로네오틱스사에서나온 NA-EMP3 보드와 NA-EMP3M 칩을사용하여소리를

K&R2 Reference Manual 번역본

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

Microsoft PowerPoint - es-arduino-lecture-03

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

인터럽트 (Interrupt) 범용입출력포트에서입출력의내용을처리하기위해매번입출력을요구하는플래그를검사하는일 (Pollong) 에대하여마이크로컨트롤러에게는상당한시간을소비하게만든다. 인터럽트란 CPU가현재처리하고있는일보다급하게처리해야할사건이발생했을때, 현재수행중인일을중단하고

(6)

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

가. 도트매트릭스제어하기 단일 LED와는다르게도트매트릭스를구동시는구동전류가프로세서에서출력되는전류보다사용량을더많이필요하기때문에 TTL 계열의 IC로구동시키기에는무리가따른다. 이러한문제를해결하기위해서사용전압, 전류정격이높은달링턴트랜지스터가어레이형태로들어있는 ULN2803을

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

TDB 3000 Series Full Closed Loop STEP DRIVER의특징 Feedback-Loop로인한진동이없음 감속기없이높은토크구현 높은정밀도 정확한속도제어 SERVO DRIVER의특징 위치유지력 탈조가없음 토크제어가능 STEP DRIVER 와 SERVO

Æí¶÷4-¼Ö·ç¼Çc03ÖÁ¾š

Microsoft Word - EastSocket매뉴얼_ _.doc

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

XDS100S V3 Entry-level JTAG Emulator. Revision XDS100S V3 ( 사용매뉴얼 ) Rev TEL , FAX , .

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

Motor Control Solution

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

[8051] 강의자료.PDF

S O L U T I O N I N N O V A T I O N T P C M E C H A T R O N I C S TPC TPC SERVO & STEP MOTOR, DRIVER Series TDB2000 (일체형/분리형,

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -

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

[ 융합과학 ] 과학고 R&E 결과보고서 뇌파를이용한곤충제어 연구기간 : ~ 연구책임자 : 최홍수 ( 대구경북과학기술원 ) 지도교사 : 박경희 ( 부산일과학고 ) 참여학생 : 김남호 ( 부산일과학고 ) 안진웅 ( 부산일과학고 )

KEY 디바이스 드라이버

Microsoft Word doc

Microsoft PowerPoint - ch07 - 포인터 pm0415

*Revision History 날짜 내용 최초작성 Tel Fax [2] page

목차 1. 키패드 (KeyPAD) 2. KeyPAD 를이용한비밀번호입력기

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

(b) 미분기 (c) 적분기 그림 6.1. 연산증폭기연산응용회로

The Pocket Guide to TCP/IP Sockets: C Version

PowerPoint 프레젠테이션

Chapter. 14 DAC 를이용한 LED 밝기제어 HBE-MCU-Multi AVR Jaeheung, Lee

Microsoft Word - PEB08_USER_GUIDE.doc

1. 제품규격및특징 구분 규격및특징 입력전압 DC 12~30V 모터구동방식 Bipolar 방식 최대모터전류 Max 3.0A 초기설정정지전류 :4(0.46A), 구동전류 :18(1.75A) 분주비 0(x256), 1(x128), 2(x64), 3(x32), 4(x16),

구성품 - UMD 2808 모듈 - JTAG 커넥터 - 젂원 케이블 주요 특징 모듈의 부품화 : 고신뢰성의 DSP 모듈을 최적화된 시스템에 적용 용이 TMS320F2808 ZGMS - 100MHz 탑재 : 확장된 온도규격 (-40 도 ~ 125 도) 적용 Ultralo

11장 포인터

untitled

PowerPoint 프레젠테이션

제8장 자바 GUI 프로그래밍 II

b027_2005_3462.hwp

C 프로그래밊 개요

Delfino 실습장비 매뉴얼

2015 개정교육과정에따른정보과평가기준개발연구 연구책임자 공동연구자 연구협력관

2009년2학기 임베디드시스템 응용

슬라이드 1

C 언어 프로그래밊 과제 풀이

Section 03 트랜지스터를이용한스위칭동작 16/45 트랜지스터의직류특성 활성 직류상황에서전류 I C 는전류 I B 보다 h FE 배만큼더많은전류가흐름» 베이스와이미터가순방향으로바이어스» 컬렉터와베이스가역방향으로바이어스 차단 만일 I B 가 0[A] 이면컬렉터전류

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

Index

Microsoft PowerPoint - [2009] 02.pptx

Chap 6: Graphs

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

실험 5

Chap 6: Graphs

6_5상 스테핑 모터_ _OK.indd

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

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

슬라이드 1

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

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

Ä¡¿ì³»ÁöÃÖÁ¾

PowerPoint 프레젠테이션

Microsoft Word - PLC제어응용-2차시.doc

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

PowerPoint Presentation

Microsoft Word - logic2005.doc

Microsoft Word - DCMD-1000 사용자 메뉴얼.docx

API 매뉴얼

2 PX-8000과 RM-8000/LM-8000등의 관련 제품은 시스템의 간편한 설치와 쉬운 운영에 대한 고급 기술을 제공합니다. 또한 뛰어난 확장성으로 사용자가 요구하는 시스템을 손쉽게 구현할 수 있습니다. 메인컨트롤러인 PX-8000의 BGM입력소스를 8개의 로컬지

C++-¿Ïº®Çؼ³10Àå

CAN-fly Quick Manual

PowerPoint 프레젠테이션


<BFACBDC0B9AEC1A6C7AEC0CC5F F E687770>

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

untitled

Microsoft PowerPoint - SY-A3PSK-V1.pptx

Chap 6: Graphs

Microsoft PowerPoint - 제11장 포인터(강의)

슬라이드 1

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

PowerPoint 프레젠테이션

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

ATmega128

Microsoft PowerPoint - 제11장 포인터

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

Microsoft Word - AM-GYRO-P V02 메뉴얼.doc

11장 포인터

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

1장. 유닉스 시스템 프로그래밍 개요

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

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

Flowchart 작성법

1. 구성품 - TMS320F280x 소켓모듈 - 몰렉스 2 핀전원케이블 mm 간격의 2x20 핀해더 - PCB 지지대 2. 주의사항 - 입력전압 : 5V 전류눈금이나와있는파워서플라이를권장 모듈의전원이공급상태에서, 소켓이열리지않도록주의해주시고 모든정전기를배제

<4D F736F F D C6AFBAB0BACEB7CF2D322E204D4F544F52C8B8C0FC20BCD3B5B520C3F8C1A420B9E6B9FD20B1B8C7F62E444F43>

Transcription:

Texas Instruments innovation challenge Korean MCU design contest 2013 최종리포트 TMDX28069USB 를이용한 2 종 MCU 학습키트

개요 본작품의목적은 MCU 를처음접하는사용자가정해진커리큘럼에맞추어학습할수있는키트를만드는것이다. 사용자는본작품을통해저성능이지만사용및학습이쉽고현재가장많이사용되는 MCU 인 AVR 과현존하는가장고성능 MCU 인 C2000 프로세서를사용해봄으로서 MCU 를사용하는로봇엔지니어로서의기초소양을갖추게된다. 키트의구성요건은첫째, 보급가능하도록저가여야하며둘째, 로봇엔지니어를위한키트인만큼하드웨어와의연동이가능해야한다. 이를위해하드웨어는점퍼스위치를통한 AVR 과 C2000 간의하드웨어호환이되어야하며, 모터제어가가능한회로와구조를포함하고 PC 와의연동이가능해야한다. 또한소프트웨어는기초학습을위해제공되는기본코드와이를응용하여학습자가스스로작성가능한응용코드로구성되어야한다. 이키트는테스트를거쳐현재직접작성한교재와함께충남대메카트로닉스공학과에서 2013 년 2 학기부터마이크로프로세서실험과목에정식도입되었다. 본문 - 목적본작품은대학이나공업고등학교, 직업학교등에서로봇을학습하는곳에서처음 MCU 를접하는사용자가기초적인범용 MCU 에서고성능 MCU 까지두루체험할수있게도와주는것을목적으로하고있다. 이를통해사용자는자신이사용해본 MCU 를현장에나가응용하는데유리해질것이다. 이러한목적의달성을위해본작품은다음과같은 2 가지조건을만족해야한다. 개인구매나교육기관구매가용이하도록키트와그개발장비까지의구성요소들의가격이저렴해야한다. 로봇공학과관련된학습이목표이기때문에제어공학의학습이가능하도록모터와그제어회로, 그리고 PC 와의연동이가능해야한다. 하드웨어는 2 종의 MCU 가하나의하드웨어를점퍼스위치등을통해공유하게하고, 에뮬레이터가포함된 C2000 키트를응용하여단가를절감하였고, PCB 제작등을통해생산및보급이용이하게하였다. 소프트웨어는학습의용이성과효율성을위해기초학습을위한기본코드와응용학습을위한응용코드를제작하였다.

- 하드웨어 하드웨어선정 하드웨어구성을위한각종부품선정에있어서주안점은단가가저렴해야한다는것이다. 여기서말하는단가는개발환경까지포함하는포괄적개념으로해당 MCU 를가지고개발할때예상되는총비용이다. 이런점을고려하여선정된모델이 TMDX28069USB 다. <TMDX28069USB> TMDX28069 는 Piccolo 계열의 TMX320F28069 를탑재한학습용 ControlStick 이다. 이모델은 XDS100 계열의저가형에뮬레이터가내장되어있기때문에 CCS 역시무료로사용가능하다. 단가는 $39 로이를구매하면 DSP Core MCU 의개발환경구성에별도의추가비용이발생하지않는다. 또한대학지원프로그램의일환으로일부대학에무료로지원되고있다는점도장점이다. 저성능기초학습용 MCU 는 AVR 이선정되었다. MSP430 도좋은대안이될수있지만시장보급률과한글참조자료의양으로판단하였을때초급자의교육용으로가장알맞다. 또한대부분의대학교과목에서 AVR 을활용한수업이아직도많다는점이선정이유로작용하였다. 모터제어회로부분에는보급률이높고 H- 브릿지가내장되어있으며단가또한여타일체형모터드라이버보다저렴한 L298 이선정되었다. 모터는국내산저가형을선정하였으며, 이외에 PC 연동을위한 RS-232 회로, 28069 보호를위한 3-State Buffer, 써지회로, 스위칭레귤레이터회로, LED, 스위치등이추가되었다.

회로설계 회로설계에서의주안점은첫째, 모터동작에의한노이즈및역기전력으로인해 MCU 가파손되지않도록보호할것, 둘째 LED, 스위치, 모터구동부등 2 종의 MCU 가모두사용하는회로의경우점퍼스위치를통해한종의 MCU 를임의로정해서동작가능하도록할것이다. 모터노이즈및역기전력방지를위해다이오드를이용한써지회로와 3-State Buffer 를탑재하였다. 역방향바이어스로배치된 4 개의다이오드는모터의회전에의한역기전력발생시이를 MCU 로흘러가지않게전원으로빼주는역할을한다. 모터드라이버입력신호선에 MCU 와모터드라이버회로사이에배치한 3-State Buffer 는혹시모를회로상의타격이 MCU 에영향을미치지않게해주며, 특히 3.3V 시스템인 28069 의신호가성공적으로 5V 시스템인 L298 이나전류소모가많을수있는 LED 로전달되도록도와준다. 또한모터와드라이버가연결된 Analog GND 와 MCU 등이연결된 Digital GND 를비드를통해분리시켰다. 추가로 MCU 간의통신실습을위해 AVR 과 28069 간에 SCI 통신선을연결하였다. QEP 핀이외부로노출되어있지않은 TMDX28069USB 의특성으로인해 28069 가자체적으로모터제어를위한엔코더값을받아들이는것이불가능하다. 따라서엔코더카운팅을 AVR 이해서 28069 에 SCI 통신으로값을넘기게되었다. <Kit 회로도 >

PCB 설계 양산을위해 PCB 를설계할필요가있다. PCB 설계전회로동작검토를위해테스트보드를제작하여테스트하였다. < 테스트보드 > 이를바탕으로확정된회로를 PCB 설계로옮겨작업하였다. <PCB 설계 > PCB 설계에는현재현역군인이기때문에대회참가가불가능했던김필호군이참여하였다.

키트최종구성모터고정과키트의회로보호를위한아크릴판제작및서포트를이용한조립이완료되었다. < 최종키트구성 > 하나의키트에는제작된본 Kit 와 AVR 용다운로더, 232-USB 컨버터, TMDX28069USB, 박스등이포함되어있다.

- 소프트웨어 커리큘럼프로그램선정 실습용프로그램선정에있어서주안점은기본적인기능과자주사용하는기능의사용이다. 커리큘럼은 1 주 1 회실험에총 10 주로구성되며, 이중 28069 를이용한실습은 5 주로계획되었다. 총 5 회의실험은다음과같이구성되었다. 주차내용 1 주차 CCS 사용법 2 주차 GPIO 실습 3 주차 epwm 실습 4 주차 SCI 실습 5 주차모터제어모든실습의최종목표는모터제어다. 따라서모터의정역전환제어를위한 GPIO Control 실습, 속도제어를위한 epwm 실습이포함되어있다. 모터위치및속도 FeedBack 은엔코더를통해하게되는데 TMDX28069USB 에는엔코더카운팅전용주변장치인 QEP 가외부로노출되어있지않다. 따라서 SCI 실습에서 AVR 과의통신을학습하고이를이용하여 AVR 에서카운팅한엔코더값을 28069 에서 SCI 를통해받아제어하는방식으로되어있다. 추가로기본적인개발환경에대한이해를돕기위해 CCS 의다운로드, 설치방법및실시간디버깅을이용한기본적인 28069 사용법에대해첫주차에실습하게된다. CCS 사용법 28069 는단순히삼각함수연산만실행하고이를배열에저장하는작업만한다. 사용자는 CCS 의실시간디버깅기능을이용하여그래프로그려본다. 이를통해사용자는프로젝트열기, DSP 연결, 실시간디버깅등 CCS 의기본적인사용법을학습한다. 응용실습은시간도메인이아닌주파수도메인으로그래프를그려보도록한다. #include "DSP28x_Project.h" #include "math.h" float graph[100]; unsigned int index = 0; void main(void) InitSysCtrl(); DINT; InitPieCtrl(); IER = 0x0000; IFR = 0x0000; InitPieVectTable(); EINT; ERTM;

for(;;) graph[index] = (float)sin((double)index / 10); index ++; if(index > 99) index = 0; DSP28x_usDelay(1000); <CCS 사용법기본실험코드 > GPIO 실습 스위치와 LED 를 GPIO 로입출력하여시각적으로볼수있게학습한다. 이실습은 2 가지실험으로구성되어있다. 첫번째기본실험은스위치입력을통해 LED 를제어한다. 사용자는이를통해기본적인 GPIO 사용법을익힐수있다. 이때스위치입력시채터링방지를위하여강제적인프로그램딜레이를사용한다. Input Qualifier 를사용하는방법도있지만키트의목적이어디까지나기본적인기능의습득을목표로하고있기때문에각주변장치에있는부가적인기능은이후로도많은부분생략하였다. 두번째기본실험에서는 CpuTimer Interrupt 를사용하여 LED 의깜빡임을제어한다. 이를통해사용자는 TI MCU 의기본적인 Interrupt 설정및사용법을학습할수있다. 응용실험은이둘을합쳐실습해본다. #include "DSP28x_Project.h" #define LEFT_SW_ON (!GpioDataRegs.GPADAT.bit.GPIO16) #define RIGHT_SW_ON (!GpioDataRegs.GPADAT.bit.GPIO18) signed char counter = 0; void Init_Gpio(void); void main(void) InitSysCtrl(); DINT; InitPieCtrl(); IER = 0x0000; IFR = 0x0000; InitPieVectTable(); Init_Gpio(); EINT; ERTM; for(;;) if(left_sw_on) counter ++; if(right_sw_on) counter --; if(counter > 3) counter = 0; else if(counter < 0) counter = 3; GpioDataRegs.GPACLEAR.all = 0x0000001C;

GpioDataRegs.GPASET.all = 1 << (2 + counter); DELAY_US(100000); DELAY_US(100000); DELAY_US(100000); DELAY_US(100000); DELAY_US(100000); void Init_Gpio(void) GpioCtrlRegs.GPADIR.all = 0x0000001C; GpioCtrlRegs.GPAMUX2.all = 0; GpioDataRegs.GPACLEAR.all = 0xFFFFFFFF; <GPIO 실습첫번째기본실험코드 > #include "DSP28x_Project.h" interrupt void cpu_timer0_isr(void); void Init_Gpio(void); void main(void) InitSysCtrl(); DINT; InitPieCtrl(); IER = 0x0000; IFR = 0x0000; InitPieVectTable(); Init_Gpio(); PieVectTable.TINT0 = &cpu_timer0_isr; InitCpuTimers(); ConfigCpuTimer(&CpuTimer0, 80, 1000000); CpuTimer0Regs.TCR.all = 0x4000; IER = M_INT1; PieCtrlRegs.PIEIER1.bit.INTx7 = 1; EINT; ERTM; for(;;) interrupt void cpu_timer0_isr(void) CpuTimer0.InterruptCount++; GpioDataRegs.GPATOGGLE.all = 0x0000001C; PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;

void Init_Gpio(void) GpioCtrlRegs.GPADIR.all = 0x0000001C; GpioCtrlRegs.GPAMUX2.all = 0; GpioDataRegs.GPACLEAR.all = 0xFFFFFFFF; <GPIO 실습두번째기본실험코드 > epwm 실습 앞서실습한 GPIO 기능과새로학습하는 epwm 을이용하여모터의속도를스위치입력을통해바꾸는실습을진행한다. 이를통해사용자는 epwm 의기본적인사용법을학습한다. epwm 에는이외에도 DeadBand, TripZone 등다양한부가기능이있으나역시기본적인기능수행과는별개의기능이므로생략하였다. 응용실습은방향까지바꾸어본다. #include "DSP28x_Project.h" #define LEFT_SW_ON (!GpioDataRegs.GPADAT.bit.GPIO18) #define RIGHT_SW_ON (!GpioDataRegs.GPADAT.bit.GPIO16) signed long counter = 0; void Init_Epwm(void); void Init_Dir_Gpio(void); void main(void) InitSysCtrl(); DINT; InitPieCtrl(); IER = 0x0000; IFR = 0x0000; InitPieVectTable(); InitEPwm1Gpio(); Init_Dir_Gpio(); Init_Epwm(); EINT; ERTM; for(;;) if(left_sw_on) EPwm1Regs.CMPA.half.CMPA++;; if(right_sw_on) EPwm1Regs.CMPA.half.CMPA--;; DSP28x_usDelay(1000); void Init_Epwm(void)

SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0; EPwm1Regs.TBCTL.bit.CTRMODE = 0x0; EPwm1Regs.TBPRD = 0xFFFF; EPwm1Regs.TBCTL.bit.PHSEN = 0; EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0x1; EPwm1Regs.TBCTL.bit.CLKDIV = 0x1; EPwm1Regs.CMPCTL.bit.SHDWAMODE = 0x0; EPwm1Regs.CMPCTL.bit.LOADAMODE = 0x0; EPwm1Regs.CMPA.half.CMPA = 0x00000; EPwm1Regs.AQCTLA.bit.PRD = 0x2; EPwm1Regs.AQCTLA.bit.CAU = 0x1; SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1; void Init_Dir_Gpio(void) GpioCtrlRegs.GPADIR.bit.GPIO1 = 1; GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 0x0; <epwm 실습기본실험코드 > SCI 실습 이실습에서는 AVR 에서보내오는엔코더카운트값을실시간디버깅을통해확인하는작업을한다. 이를통해사용자는 28069 의기본적인 SCI 사용법을학습하고서로다른 MCU 간의데이터교환을체험할수있다. #include "DSP28x_Project.h" void Init_Sci(void); void main(void) InitSysCtrl(); DINT; InitPieCtrl(); InitSciaGpio(); Init_Sci(); IER = 0x0000; IFR = 0x0000; InitPieVectTable(); EINT; ERTM; for(;;)

void Init_Sci(void) SciaRegs.SCICCR.all =0x0007; SciaRegs.SCICTL1.all =0x0001; SciaRegs.SCIHBAUD =0x0001; SciaRegs.SCILBAUD =0x0003; SciaRegs.SCICTL1.all =0x0021; SciaRegs.SCIFFTX.all=0xE040; SciaRegs.SCIFFCT.all=0x0; 모터제어실습 <SCI 실습기본실험코드 > 앞서실습했던내용들을종합하여하나의모터제어를실습해본다. GPIO 에서실습했던내용으로제어주기와모터방향을조정한다. epwm 에서실습했던내용으로모터의속도를조정한다. SCI 에서실습했던내용으로 AVR 을통해모터의 FeedBack Data 를수집한다. 이를통합하여하나의 PID 위치제어기를구성한다. #include "DSP28x_Project.h" #define PWM_MAX 5000 #define CW GpioDataRegs.GPACLEAR.bit.GPIO1 = 1 #define CCW GpioDataRegs.GPASET.bit.GPIO1 = 1 void Init_Sci(void); void Init_Epwm(void); void Init_Dir_Gpio(void); interrupt void cpu_timer0_isr(void); char encoder_data_int_buff = 0; float encoder_data = 0; float desired = 0; float error = 0; float Pgain = 0; float output = 0; void main(void) InitSysCtrl(); DINT; InitPieCtrl(); IER = 0x0000; IFR = 0x0000; InitPieVectTable(); InitSciaGpio(); Init_Sci(); InitEPwm1Gpio(); Init_Dir_Gpio(); Init_Epwm();

PieVectTable.TINT0 = &cpu_timer0_isr; InitCpuTimers(); ConfigCpuTimer(&CpuTimer0, 80, 10000); CpuTimer0Regs.TCR.all = 0x4000; IER = M_INT1; PieCtrlRegs.PIEIER1.bit.INTx7 = 1; EINT; ERTM; for(;;) interrupt void cpu_timer0_isr(void) CpuTimer0.InterruptCount++; encoder_data_int_buff = SciaRegs.SCIRXBUF.bit.RXDT; encoder_data = (float)encoder_data_int_buff; error = desired - encoder_data; output = error * Pgain; if(output < 0) CW; output *= -1; else CCW; if(output > PWM_MAX) output = PWM_MAX; EPwm1Regs.CMPA.half.CMPA = (unsigned int)output; PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; void Init_Sci(void) SciaRegs.SCICCR.all =0x0007; SciaRegs.SCICTL1.all =0x0001; SciaRegs.SCIHBAUD =0x0001; SciaRegs.SCILBAUD =0x0003; SciaRegs.SCICTL1.all =0x0021; SciaRegs.SCIFFTX.all=0xE040; SciaRegs.SCIFFCT.all=0x0; void Init_Epwm(void) SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0; EPwm1Regs.TBCTL.bit.CTRMODE = 0x0; EPwm1Regs.TBPRD = PWM_MAX; EPwm1Regs.TBCTL.bit.PHSEN = 0; EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0x1; EPwm1Regs.TBCTL.bit.CLKDIV = 0x1; EPwm1Regs.CMPCTL.bit.SHDWAMODE = 0x0; EPwm1Regs.CMPCTL.bit.LOADAMODE = 0x0; EPwm1Regs.CMPA.half.CMPA = 0x00000;

- 결론 EPwm1Regs.AQCTLA.bit.PRD = 0x2; EPwm1Regs.AQCTLA.bit.CAU = 0x1; SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1; void Init_Dir_Gpio(void) GpioCtrlRegs.GPADIR.bit.GPIO1 = 1; GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 0x0; < 모터제어실습기본실험코드 > 소프트웨어에첨부된모든코드들은분량관계상주석을삭제하였다. 본작품을통해 MCU 학습자들은 TI 사의고성능프로세서를체험하고학습할수있다. 일반적으로 TI 사의고성능 MCU 가학습현장에서사용되지못하는이유는비싼개발환경구성과복잡하고많은기능때문에처음사용자가접근하기어렵기때문이다. 이키트는 TI 사의기본솔루션을응용, 확장하여실교육현장에서필요로하는부분과조건을만족시켰으며, MCU 의사용난이도역시기존에사용이많은타사의 MCU 를먼저학습하고사용해봄으로써낮추어주었다. 본작품은 TI 사의 MCU 저변확대에기여하였으며, 고성능 MCU 의보급으로더질좋고창의적인로봇의개발이가능해졌다. 참고문헌 - TMS320x2806x Piccolo Technical Reference Guide (Rev. D) TI - 마이크로컨트롤러의기초및활용 이지홍, 유용길외 5 명, GS 인터비젼