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

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

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

Microsoft PowerPoint - MSP430_Firmware Design_Develop_V11.ppt

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

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

슬라이드 1

KEY 디바이스 드라이버

Microsoft PowerPoint - es-arduino-lecture-03

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >


<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

(6)

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

HBE-MCU-Multi 로배우는 마이크로컨트롤러 (AVR 편 ) 마이크로컨트롤러기능 제 6 장타이머와카운터

PowerPoint 프레젠테이션

[8051] 강의자료.PDF

디지털공학 5판 7-8장

Microsoft Word - FS_ZigBee_Manual_V1.3.docx

전자실습교육 프로그램

Microsoft Word - SRA-Series Manual.doc

API 매뉴얼

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

1. 제품소개 그림. 1.1 이란? DC 모터구동시하드웨어제작에소요되는시간을단축시켜프로그래밍연구개발및학습효과를극대화시켜주는 입니다. 또한당사 DEV 보드와 1P 점퍼클립케이블을이용하여연동이가능하며, 산업용 DC 모터의정회전, 역회전구동및속도제어시유용하게사용되는 입니다.

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

AN2629

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

Microsoft Word - PEB08_USER_GUIDE.doc

untitled

T100MD+

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

MicrocontrollerAcademy_Lab_ST_040709

MAX+plus II Getting Started - 무작정따라하기

HX - Operation Manual MC / TC / CUT / QT HX Series(V2.x) Operation Manual for MC / TC / CUT / QT CSCAM

IAR_IDE_LM3S8962_Config_v3.doc

AVR Atmega128

ez-md+_manual01

논리회로설계 6 장 성공회대학교 IT 융합학부 1

PowerPoint 프레젠테이션

<4D F736F F F696E74202D2037C0E55FC0CEC5CDB7B4C6AEC0C720B5BFC0DB2E707074>

IoT FND8 7-SEGMENT api

LCD Display

K&R2 Reference Manual 번역본

Microsoft Word - logic2005.doc

歯FDA6000COP.PDF

Microsoft Word - Encoder Trigger Controller 사양서_ _.doc

한글사용설명서

MPLAB C18 C

UART.h #ifndef _UART_H_ #define _UART_H_ #define DIR_TXD #define DIR_RXD sbi(portd,4) cbi(portd,4) #define CPU_CLOCK_HZ UL UART PORT1 void UAR

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

0.1-6

2주차: 입출력 제어 복습

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

PowerPoint Presentation

4 CD Construct Special Model VI 2 nd Order Model VI 2 Note: Hands-on 1, 2 RC 1 RLC mass-spring-damper 2 2 ζ ω n (rad/sec) 2 ( ζ < 1), 1 (ζ = 1), ( ) 1

슬라이드 1

歯동작원리.PDF

Chapter ...

PowerPoint 프레젠테이션

슬라이드 1

UI TASK & KEY EVENT

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202831C1D6C2F72C2032C1D6C2F729>

Microsoft PowerPoint - 제5장 인터럽트 (HBE-MCU-Multi AVR).ppt [호환 모드]

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

hd1300_k_v1r2_Final_.PDF

airDACManualOnline_Kor.key

Formatvorlage für Arbeitsanweisungen

1. 제품소개 1.1 제품소개 < 그림 1.1> 도트매트릭스모듈 하드웨어제작에소요되는시간을단축시켜프로그래밍연구개발및학습효과를극대화시켜주는 16x16 도트매트릭스모듈입니다. 또한당사 AVR, PIC, ARM(STM32F) 개발보드와 1P 점퍼클립케이블을이용하여연동이가능하

PowerPoint 프레젠테이션

untitled

(72) 발명자 정진곤 서울특별시 성북구 종암1동 이용훈 대전광역시 유성구 어은동 한빛아파트 122동 1301 호 - 2 -

PowerPoint 프레젠테이션

歯설명서_020925_.PDF

강의10

PowerPoint 프레젠테이션

9장 순차논리 회로

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

<BDC7C7E83520BFB9BAF1BAB8B0EDBCAD2E687770>

DDX4038BT DDX4038BTM DDX4038 DDX4038M 2010 Kenwood Corporation All Rights Reserved. LVT A (MN)

example code are examined in this stage The low pressure pressurizer reactor trip module of the Plant Protection System was programmed as subject for

PowerPoint 프레젠테이션

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

한국기술교육대학교장영조 한국기술교육대학교전기전자통신공학부 1

Motor

OCW_C언어 기초

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

Microsoft PowerPoint - polling.pptx

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A636C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

ºÎ·ÏB

정보보안 개론과 실습:네트워크

CSCAM 800S Operation Manual for MC / TC / CUT / QT Serial No. : OP

Section 03 인터럽트활성화와인터럽트서비스루틴연결 34/82 장치에대한인터럽트설정과활성화 내부장치에대한특수레지스터존재 장치의특성을반영한동작설정용또는상태관찰용비트로구성 인터럽트사건의발생패턴을설정해야함 인터럽트활성화비트를 1 로셋하여, 인터럽트발생을허락» 전제, 전역

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

hlogin2

ez-shv manual

untitled

untitled

SRC PLUS 제어기 MANUAL

ATmega128

MR-3000A-MAN.hwp

INDUCTION MOTOR 표지.gul

Transcription:

임베디드시스템기초 (#514115 ) #5. Timer A 한림대학교전자공학과이선우

MSP430x4xx 타이머종류 MSP430x4xx series 는다음과같은 3 종의타이머내장 Basic Timer1 Two independent, cascadable 8-bit timers Selectable clock source Interrupt capability LCD control signal generation Timer A, Timer B 16-bit timer/counter with 3 or 5 capture/compare registers Multiple capture/compares, PWM outputs, interval timing 2

Features of Timer A 4 개의동작모드를가지는비동기 16-bit timer/counter 클럭소스선택 / 설정가능 칩에따라 3 개혹은 5 개의 capture/compare regs. 가짐 의미 : 변하는카운터값과비교하여동작하는제어장치가 3/5 개있음을뜻함. MSP430FG4618: Timer_A3 (3 개의 CCRs 이있음 ) PWM 기능을가지는설정가능한출력기능 Pin 을통해 H/L 출력가능 비동기입 / 출력레칭 (latching) Timer_A 관련인터럽트발생소스에대한빠른해석을위한 Interrupt vector reg.(taiv) 를가짐. 3

Block diagram MSP430xG461x 의경우 CCR0~CCR2 까지 3 개의제어장치만존재 TAR 값을이용하여별도 3 개의 TACCR0/1/2 를이용 4

Related control registers Timer block 을제어하는레지스터. 즉 TAR 동작제어 Rising edge clock signal 입력에따라값증가 / 감소 Compare/Capture 제어블록 #0 제어레지스터 Compare/Capture 관련데이터레지스터 (16bit). 동작설정에따라 TAR 과비교 /TAR 값캡쳐된결과저장 TACTL,TA0CTL 의차이점 : 일부장치 (430x415/417,xW42x) 는동일한 TimerA 를 2 개가짐. 430x461x 장치는 1 개의 TA 를가지므로 TA 만사용함. 2 개 Timer_A 를가지는장치는 TA0/1 을구별하기위해 TA0CTRL/TA1CTL 로다른이름의레지스터를가짐. ( 표 15-4 참조 ) 5

동작방식 Timer block 일반적인 16 비트 up/down 카운터로동작 클럭소스 : 3 개중하나 (ACLK, SMCLK, TACLK) TACLK: 외부에서공급하는클럭신호 (x461x 장치 :P1.5) Divider 제공 : /2,/4,/8 중하나선택가능 (Idx bits) Reset 기능 : TACLR bit=1 로 TAR, Idx, MCx clear. Automatic reset. 4 개 Mode MCx bit(in TACTL reg.) 로설정 00: Stop Timer_A 정지, 저전력위해사용하지않을때사용 MCx>0: Running 01:Up, 10:continuous, 11:Up/down 6

UP MODE 작동방식 : TAR 값이증가하다 CCR0 reg. 에써있는값 (>0) 이되면인터럽트를발생시킴 정확하게는다른종류의 2 개인터럽트 (CCIFG 7

Up mode 이용하여특정인터벌만들기 #include <msp430xg46x.h> #pragma vector=timera0_vector interrupt void timer_handler(void) { P1OUT ^= 0x01; //toggle P1.0 } void main(void) { WDTCTL = WDTPW + WDTHOLD P1DIR = 0x01; //setup Timer_A TACCTL0 = 0x0010; // 0000 0000 0001 0000 TACCR0 = 13180; //13180 usec TACTL = 0x0210 ; //0000 0010 0001 0000 enable_interrupt(); low_power_mode_0(); } 요구사항 : 13.18msec 의인터벌마다 P1.0 출력 toggle 시켜클럭신호발생 8

Timer_A3 관련 Interrupts 2 개의인터럽트소스 TACCR0 CCIFG0 (IAR C 에선 TIMERA0_VECTOR) CCIFG1, CCIFG2, TAIFG 는모두하나의인터럽트로처리됨. (P1/2 와동일 ) (TIMERA1_VECTOR) CCIFG1/2 및 TAIFG 는순서대로우선순위를가지며 ISR 에서어떤소스인가를보다빠르게파악할수있도록 TAIV reg. 를제공함. 9

Continuous Mode 의이용방법 하나의 TAR(free-running counter) 과여러개의 CCRx에저장된값과의비교를이용하여복수개의인터벌발생이가능 CCR0 ISR 에서어떤작업을해야동일한시간간격후에다시인터럽트가발생할까? 현재 TACCR0 += TAR+INTERVAL 10

복수인터벌만들기 ( 연속모드이용법 ) #include <msp430xg46x.h> #define CCR1INTVAL 8000 #define CCR2INTVAL 3000 #pragma vector=timera1_vector interrupt void ccr_handler(void) { switch (TAIV) { case 10: break; //TAIFG not used case 2: //use TACCR1 P1OUT ^= 0x01; //toggle P1.0 TACCR1 += CCR1INTVAL; break; } } case 4: //use TACCR2 P1OUT ^= 0x02; //toggle P1.1 TACCR2 += CCR2INTVAL; break; //8msec //3msec 현재의 CCR2 값에원하는인터벌의크기를더하여다음 CCR2 값을갱신함. Ex. 현재 TAR=3000 이상태에서 TACCR2=6000 이되어 3000usec 후에 CCR2 IRQ 발생! 요구사항 : CCR1 이용 8msec 인터벌마다 P1.0 출력 toggle, CCR2 이용 3msec 마다 P1.1 toggle 함 void main(void) { WDTCTL = WDTPW + WDTHOLD P1DIR = 0x03; //setup Timer_A TACCTL1 = 0x0010; // CCR1 Interrupt Enable TACCR1 = 8000; //8ms TACCTL2 = 0x0010; // CCR2 Interrupt Enable TACCR2 = 3000; //8ms TACTL = 0x0220 ; //SSEL=SMCLK, MCx=continuous enable_interrupt(); low_power_mode_0(); } 11

Up/down mode Square pulse 를만들고자할때이용 TAR 이증가후감소함 12

TA3 의입출력핀 & Output Mode MSP430FG461x 의 timer_a3 의입출력핀사양 입력 : P1.5(TACLK), P1.0(CCI0A), P1.2(CCI1A), P2.0(CCI2A) 출력 : P1.0(TA0), P1.2(TA1), P2.0(TA2) 각 CC block 은 Output Unit 이라는장치를가지며, 이를통해연결된핀의값을주어진설정에따라 set/clear 하여원하는신호를만들어낼수있다. 13

Output Unit 이용법 : UP Mode 7 개모드 Set Toggle/Reset Set/Reset Toggle Reset Toggle/Set Reset/Set 14

Output example: up/down mode 15

Example codes: Output unit 이용클럭신호발생 /* * Just use OUTPUT mode, even not use IRQ. * Use UP mode, CCR0 * * Result in P1.0/TA0 = 32768/200 Hz signal. */ void main(void) { WDTCTL = WDTPW + WDTHOLD P1DIR = 0x01; P1SEL = 0x01; //set P1.0 to TA0 //setup Timer_A TACCTL0 = 0x0080; // OUTMODE=4 (Toggle) TACCR0 = 100-1; //32768Hz/100 TACTL = 0x0110 ; //SSEL=ACLK, MCx=Up low_power_mode_3(); } /* * Just use OUTPUT mode, even not use IRQ. * Use UP/DOWN mode, CCR0 * * Result in P1.0/TA0 = SMCLK/1000 Hz signal. */ void main(void) { WDTCTL = WDTPW + WDTHOLD P1DIR = 0x01; P1SEL = 0x01; //set P1.0 to TA0 //setup Timer_A TACCTL0 = 0x0080; // OUTMODE=4 (Toggle) TACCR0 = 250; TACTL = 0x0230 ; //SSEL=SMCLK, MCx=Up/Down mode } 16

Pulse Width Modulation 이란? PWM: Pulse Width Modulation ON/OFF만을이용하여중간크기의에너지를전달할수있는효과적인방법 Duty cycle (duty ratio): ON 시간 / 주기의비율로 0~100%( 혹은 0~1) 로나타냄. D T PWM 에의한모터속도제어원리 모터구동에너지 펄스듀티비 17

Example code: PWM 신호발생 void main(void) { WDTCTL = WDTPW + WDTHOLD P1DIR = 0x04; /P1.2 Output P1SEL = 0x04; //set P1.2 to TA1 P2DIR = 0x01; /P2.0 Output P2SEL = 0x01; //set P2.0 to TA2 //setup Timer_A TACCR0 = 512-1; //PWM Period TACCTL1 = 0x00E0; // OUTMODE=7 (reset/set) TACCR1 = 384; //duty cycle=75% TACCTL2 = 0x00E0; // OUTMODE=7 (reset/set) TACCR2 = 128; //duty cycle =25% TACTL = 0x0110 ; //SSEL=ACLK, MCx=Up mode low_power_mode_3(); OUTMODE=reset/set 이용 -EQU1 에서 RESET: 주기시작 -CCR0 overflow 에서 SET: ON Timer End Duty cycle=384/512 = 75% 만약 set/reset OUTMODE 를이용한다면?? } 18

Capture mode Capture mode 는시간이벤트를기록하기위해이용됨. 즉, MCU 내 / 외부신호의변화시간간격을측정할수있다. How? 내부타이머의값을특정시간에일시저장하여.. 외부클럭신호의주기측정 rising edge 사이측정 외부신호의 ON/OFF time 측정 rising/falling edge 사이측정 19 TACCRx TAR time

Timer_A3 입력핀 MSP430FG461x 의 timer_a3 의입출력핀사양 입력 : P1.5(TACLK), P1.0(CCI0A), P1.1(CCI0B), P1.2(CCI1A), P2.0(CCI2A) CAP=1 CCISx: 측정대상선택 CMx: input signal 의 capture edge 선택 rising, falling, both 지정된신호입력되면 (Capture occurs! 캡쳐 ON) TAR 값이 TACCRx reg. 로 copy CCIFGx =1 (IRQ. 발생 ) 20

Capture mode timing diagram SCS: TACCTLx[11] Synchronize capture source 입력신호변화를타이머클럭과동기화시킴. Capture Overflow 문제 캡쳐발생후일시저장된값을읽지않은상태에서다시캡쳐 ON 되어기존값을잃어버리는경우 overflow 라고함. 이경우 HW 가자동적으로찾아 COV=1 로설정함. COV clearing 은반드시 SW 에서실행되야함. 21

Example code: 외부신호주기측정 Int prev_cnt, Period; int main( void ) { WDTCTL = WDTPW + WDTHOLD; //setup TA0 output P2SEL = 0x01; //P2.0 --> CCI2A P2DIR &= ~0x01; P2DIR = 0x08; //P2.3 ouput //setup TACTL0 for clock generation TACCTL0 = CCIE; TACCR0 = 3000; //3ms //setup TTACTL2 for capturing TACCTL2 =0x4910; TACCR2 = 0; TACTL = 0x0220 ; //continuous mode, SMCLK prev_cnt = 0; enable_interrupt(); low_power_mode_0(); return 0; } #pragma vector=timera0_vector interrupt void ta0_isr(void) { P2OUT ^= BIT3; TACCR0 += INTVL1; } #pragma vector=timera1_vector interrupt void ta_isr(void) { switch(taiv) { case 2: break; case 10: break; case 4: Period = TACCR2 -prev_cnt; prev_cnt = TACCR2; } } Capture mode 이용 IRQ 발생시점 : P2.3 clock rising edge TAR 은연속모드이므로클럭주기측정을위해서는사이값을계산해야함. 22

Timer_A3 관련 Interrupts 2 개의인터럽트소스 TACCR0 CCIFG0 (IAR C 에선 TIMERA0_VECTOR) CCIFG1, CCIFG2, TAIFG 는모두하나의인터럽트로처리됨. (P1/2 와동일 ) (TIMERA1_VECTOR) CCIFG1/2 및 TAIFG 는순서대로우선순위를가지며 ISR 에서어떤소스인가를보다빠르게파악할수있도록 TAIV reg. 를제공함. 23

지금까지배운 IRQ. sources FG4618 user s manual p.13 24