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

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

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

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

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

슬라이드 1

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

ATmega128

Microsoft PowerPoint - MSP430_Firmware Design_Develop_V11.ppt

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - es-arduino-lecture-03

[8051] 강의자료.PDF

Microsoft Word - logic2005.doc

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

Microsoft PowerPoint - polling.pptx

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

Microsoft Word - PEB08_USER_GUIDE.doc

API 매뉴얼

MicrocontrollerAcademy_Lab_ST_040709

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

lecture4(6.범용IO).hwp

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

BY-FDP-4-70.hwp

Chapter ...

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

인터럽트 * 인터럽트처리메커니즘 ATmega128 인터럽트 2

KEY 디바이스 드라이버

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


Microsoft PowerPoint - 부호기와 복호기.PPT

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>


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

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

<4D F736F F F696E74202D2037C0E55FC0CEC5CDB7B4C6AEC0C720B5BFC0DB2E707074>

IoT FND8 7-SEGMENT api

PowerPoint 프레젠테이션

T100MD+

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

untitled

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

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202831C1D6C2F72C2032C1D6C2F729>

MPLAB C18 C

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

-. Data Field 의, 개수, data 등으로구성되며, 각 에따라구성이달라집니다. -. Data 모든 의 data는 2byte로구성됩니다. Data Type는 Integer, Float형에따라다르게처리됩니다. ( 부호가없는 data 0~65535 까지부호가있는

// 변수선언 unsigned char i; unsigned char FONT[]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xD8, 0x80, 0x98}; //PORTA 를출력으로설정하고초기값은모두 0 PORTA = 0x00; DD

1217 WebTrafMon II

AN2629

슬라이드 1

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

CPX-E-EC_BES_C_ _ k1

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

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

PowerPoint 프레젠테이션

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

PowerPoint 프레젠테이션

K&R2 Reference Manual 번역본

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

2주차: 입출력 제어 복습

Formatvorlage für Arbeitsanweisungen

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

PowerPoint 프레젠테이션

Chapter #01 Subject

untitled

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

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

Microsoft PowerPoint - 08-MP-4-interrupt

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

Microsoft Word - FS_ZigBee_Manual_V1.3.docx

슬라이드 1

untitled

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

PowerPoint 프레젠테이션

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

UI TASK & KEY EVENT

LCD Display

PowerPoint 프레젠테이션

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

<BDC7C7E83520BFB9BAF1BAB8B0EDBCAD2E687770>

untitled

The C++ Programming Language 5 장포인터, 배열, 구조체 5.9 연습문제 다음의선언문을순서대로작성해보자. 문자에대한포인터, 10개정수의배열, 10개정수의배열의참조자, 문자열의배열에대한포인터, 문자에대한포인터에대한포인터, 상수정수, 상수

Mango-IMX6Q mfgtool을 이용한 이미지 Write하기

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

SRC PLUS 제어기 MANUAL

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

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

AVR Atmega128

ºÎ·ÏB

9

전자실습교육 프로그램

Microsoft PowerPoint os2.ppt [호환 모드]

PowerPoint 프레젠테이션

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

hlogin2

IAR_IDE_LM3S8962_Config_v3.doc

6주차.key

슬라이드 1

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

Microsoft PowerPoint 앞표지겉속-응용-SCAFA[V.00].ppt

Formatvorlage für Arbeitsanweisungen

Transcription:

임베디드시스템기초 (#514115 ) #4. BT1 Review & Real Time Clock 한림대학교전자공학과이선우

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

Basic Timer 1 Block diagram 2 개의별도카운터 (1&2) BTCNT1: incremented with ACLK, LCD controller 의다이나믹구동을위한주파수를제공함. BTCNT2: source ACLK,SMCLK, ACLK/256 ACLK: auxiliary clock 보드 :32768Hz 3

BT1 Registers 4

BTCNT1 operation: Signal F Lcd 적당한 LCD 용클럭신호생성방법 BTCNT1 제공가능클럭 : ACLK/256,128,64,32 4 종류 알맞은신호주파수 : f LCD = 2 x mux x f Frame 일례, 4-mux LCD 사용, frame freq. 가 30~100Hz 라면 : f LCD = 2*4*30 (100) = 240Hz(min), 800Hz(max) 따라서 f LCD = 32768/128(64)=256 (512)Hz LCD_A 모듈을내장하고있는모델의경우는별도 F LCD 내장회로를가지므로이기능이필요없음. 5

BTCNT2 operation 일반적인 8bit up counter 로작동 클럭소스가 CNT1 이 ACLK 에비해 3 종류 (ACLK, ACLK/256, SMCLK) 선택가능 ACLK/256 을선택하면 16bit counter 로사용가능 BTIPx bit 설정을통해 8 종류의시간간격지난후에인터럽트발생 (BT Timeout event: BTIFG) f CLK2 /(2,4,8,16,32,64,128,256) 6

기본적인이용방법 BT1 의경우일반적인이용방법 Ex. LCD 컨트롤러용클럭생성기본적인시간간격타이머로이용 평가보드 ACLK=32768Hz, SMCLK=ACLK*32=1048576Hz ( 1MHz) 긴간격생성은? ACLK/256=128Hz 128Hz/2,4,8,16,31,64,128,256 64Hz, 32Hz, 16Hz,8Hz,4Hz,2Hz,1Hz, 0.5Hz 시간간격마다인터럽트발생 ( 이를이용 ) 짧은시간간격은? ACLK을선택하면위보다 256배짧은간격생성가능 더짧은간격은? SMCLK 사용함! 7

C 언어이용설정방법 #pragma vector=basictimer_vector interrupt void bt1_handler(void) P2OUT ^= 0x02; //toggle LED1 void main(void) WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer P2DIR = 0x06; P2OUT = 0x02; //setup Basic Timer1 // BTCNT1 <- f_lcd = 512Hz // BTCNT2 <- slow interval 2Hz BTCTL = 0x2d; //; // 001 01 101 -> 0x2D BTCNT1 = 0; BTCNT2 = 0; IE2 = 0x80; enable_interrupt(); //intrinsic ftn. while(1); BTCTL 설정 가장중요! 전체동작설정 BTSEL=0, BTHOLD=0, BTDIV=1 f LCD freq. = faclk/64 <= 0 1 BT Irq. Interval = /64 <= 101 CNT reg. 초기화 대개 RESET 되면 0 이되나초기화할필요가있다. Interrupt enable IE2.7 (BTIE bit) = 1 해야만 IRQ. 동작실행. 8

BT1 활용방법 기본기능 : 특정인터벌마다인터럽트발생시킴 활용 : 기본소프트웨어타이머로활용 모든 OS 에서필요한 system tick 을만드는데사용. 즉일정한인터 벌에서특정작업수행가능예1: 스위치입력기능 기존무한루프에딜레이사용방법 : 불필요한자원 ( 전력 ) 을낭비 BT1 이용일정간격마다스위치상태읽어반응하게함. Matrix keypad scanning 할때이용. 예 2: 디지털시계구현 1 초인터벌설정, 이를적절하게 count 하여시계구현함. 부가기능 : LPM3 이용저전력동작가능하게함 LPM3 는 ACLK 사용가능하므로타이머동작하고, BT1 에의해발생하는인터럽트는 sleep 상태의 MCU 를깨워 (awaking) 어떤작업을할수있다. 9

Example code #1: LPM & BT1 일정시간간격으로 BT1 이인터럽트를발생시키고이를이용하여 LED 를점멸시키는응용예 #define LED1 void main(void) //port and BT1 초기화 // BT1 irq. Enable BIT1 LP 모드 (LPM3) 로진입초기설정이후이명령을사용하여 LPM3 로설정 ACLK 이외다른클럭신호 OFF, CPU 는현재상태에서멈춤 (sleep 상태 ) *IRQ. 발생하면깨어남. low_power_mode_3(); //LPM3; ACLK만유효 #pragma vector=basictimer_vector interrupt void BT1_ISR(void) P2OUT ^= LED1; 정해진시간간격이지나 BT1 이 IRQ. 를발생시키면 sleep 상태에서깨어나 ISR 을실행함. 즉, LED 토글하고 main 루틴으로돌아감. * 되돌아갈때스택에저장했던 SR 값을복원 LPM 모드세팅이적용 ( 즉 LMP3 상태유지 ) 10

Example code #3: LPM & BT1 & SW1 저전력상태에서일정시간마다 SW1 상태읽어 (debouncing 적용 ) 이값이변할때마다 LED 를 toggle 시키는프로그램 unsigned char firstread, swpush; void main(void) // GPIO port 설정 : SW1 입력, LED 출력설정 // BT1 설정 : 약 20~40msec 정도인터벌 // BT1 irq. Enable 설정 firstread = 0; low_power_mode_3(); //LPM3; ACLK 만유효 #pragma vector=basictimer_vector interrupt void BT1_ISR(void) //SW1 읽음 swpush = PxIN & SW1BIT; if(!swpush) //SW1 눌렸나? if(firstread) // 이번이두번째누름? P2OUT ^= LED1; //Toggling firstread = 0; else firstread = 1; // 첫번째눌림 11

Real Time Clock 시계란? 1Hz clock 을분 (60)/ 시 (60)/ 날 (24) 단위로개수를세어표시하는장치 RTC module Calendar Mode: 캘린터 / 시계기능 자동적인시 / 분 / 초및날짜 ( 년 / 월 / 일 / 요일 ) 계산기능 BCD format 가능 Counter Mode: 일반적인 32-bit 타이머 / 카운터기능 3 개클럭소스 (ACLK, SMCLK, BTCNT2.Q6) 선택가능 4 개 8-bit 카운터레지스터 (RTCNT1~4) 의개별 R/W 가능, 연속연결하여 32-bit 카운터로도동작 8/16/24/32-bit overflow 발생시인터럽트발생 12

RTC block diagram 13

RTC 동작 : calendar mode 일반적인시계정보 ( 년, 달, 일, 요일, 시, 분초제공 ) 윤년계산알고리즘내장 (1901~2099) BCD (Binary Coded Decimal) format 제공 10 진수의각자리를 4bit 의 2 진수로별도로표시하는방법. Ex) 10 0x0A (X), 0x10(O), 32 0x10(X), 0x32(O) 10 진수숫자의디스플레이장치 (7 세그먼트등 ) 를이용한표시에사용됨. BT1 과의관계 Calendar 모드설정되면자동으로 ACLK 이 BT1 의소스로, 2 개 8-bit counter 가연결 (cascaded) 되어 1Hz 클럭생성하도록함 ( 전제조건 :ACLK=32768Hz) 14

RTC 동작 : calendar mode Interrupts 관련사항 RTC 의여러사건들은 BT1 인터럽트관련하드웨어를공통으로사용함. ( 별도인터럽트벡터가없음 ) RTIE=1 이면 RTC Event 발생에의해 BTIFG(BT1 irq. Flag) set ( 블럭다이어그램참조!) RTCEVx bit 에의해카운터 / 캘린터모드에따라각각 4 개씩이벤트정의되어있음. 따라서코드상에서는 BT1 에대한 ISR 을만드는것과동일하게 ISR 작성해야함! 즉, #pragma vector=basictimer_vector 사용 15

RTC registers 16

RTC module Coding 방법 #pragma vector=basictimer_vector interrupt void rtc_handler(void) P2OUT ^= 0x02; //toggle LED1 void main(void) P2DIR = 0x06; P2OUT = 0x02; //setup Real-Time Clcok RTCCTL = 0xF2; // 0b 1 1 11 00 10 -> 0xF2 //init time RTCSEC = 0x00; // Set Seconds RTCMIN = 0x59; // Set Minutes RTCHOUR = 0x12; // Set Hours // Init date RTCDOW = 0x01; // Set DOW RTCDAY = 0x21; // Set Day RTCMON = 0x09; // Set Month RTCYEAR = 0x2009; // Set Year RTCCTL &= ~RTCHOLD; // Enable RTC enable_interrupt(); //GIE=1 while(1); RTCCTL 설정 가장중요! 전체동작설정 RTCBCD=1 (BCD format 사용 ) RTCHOLD =1 (stop) RTCMODEx = 11 (calendar mode) RTCTEVx= 00 ( 분변화시인터럽트발생 ) RTCIE = 1 Irq. enable 시간 / 날짜레지스터초기화 대개 RESET 되면 0(or 1) 이되나시작날짜 / 시간초기화할필요가있다. 17

C Programming TIP #1 거의모든응용프로그램들은복수개의소스파일들로구성 이유 : 각기능별로구분하여프로그래밍하는것이작성 / 디버깅에편리하기때문. 방법 : 기능별로별도파일로작성하고 main() 함수에서사용. 예 : LCD_A, GPIO, BT 모듈별로별도파일작성 작성순서 lcd.c : 관련된함수에대한코드작성. lcd_init(), lcd_num_dis() 등의함수를만듬. lcd.h: 다른파일에서 lcd 관련함수를 call 할수있도록정의된함수를선언 (declaration) 함. main_clock.c: main() 함수가있는파일 #include lcd.h 를이용 lcd 관련함수가무엇이있는지안다. 코드중에 lcd 관련함수를 CALL 18

C Programming TIP #1 /* lcd.c file: LCD_A 제어기관련함수들 */ #include lcd.h void lcd_init(void) //port setup //LCDA setup void lcd_nu_dis(int digit, int num) //digit: 7 개숫자판중하나지정 //num: 표시하는숫자 /* main_clock.c file */ #include lcd.h void main(void) // 초기화관련.. led1_init(); lcd_init(); //LCD 2 번숫자판에 2 표시 lcd_num_dis(2,2); lcd_num_dis(3,3); /* lcd.h file*/ void lcd_init(void); void lcd_nu_dis(int digit, int num); 19