<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

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

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A636C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - 제7장 타이머와 PWM (HBE-MCU-Multi AVR).ppt [호환 모드]

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

슬라이드 1

AVR-GCC SRAM 에서의변수및상수특별히속성을정하지않고변수를정의하면 SRAM 영역에저장된다. 이것들은외부메모리에저장되는경우에비하여빠르게엑세스할수있다. 축약표현은 <stdio.h> 에정의되어있다. 그러나, <io.h> 를인클루드하면내부적으로 <stdio.h> 파일을자

API 매뉴얼

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

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

ATmega128

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

Microsoft Word - logic2005.doc

<BDC7C7E83520BFB9BAF1BAB8B0EDBCAD2E687770>

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

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

AVR Atmega128

슬라이드 1

AN2629

목차 1. A/D 컨버터개요 2. ATMega128 의 A/D 컨버터기능 3. A/D 컨버터로광센서읽기

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202831C1D6C2F72C2032C1D6C2F729>

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

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

C & System

Chapter ...

(6)

MicrocontrollerAcademy_Lab_ST_040709

4. 다음주소지정방식중속도가가장빠른주소방식은? 가. immediate addressing mode 나. direct addressing mode 다. indirect addressing mode 라. index register. 5. 간접주소 (indirect addr

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

<4D F736F F D20BDBAC5D7C7CE20B6F3C0CEC6AEB7B9C0CCBCADB0ADC1C2202D203420C7C1B7CEB1D7B7A1B9D62E646F63>

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

KARAAUTO_4¿ù.qxd-ÀÌÆå.ps, page Normalize

[8051] 강의자료.PDF

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

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

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

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202831C1D6C2F72C2032C1D6C2F729>

<4D F736F F F696E74202D2037C0E55FC0CEC5CDB7B4C6AEC0C720B5BFC0DB2E707074>

Index

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

AVR128 자료.hwp

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

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

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

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

2주차: 입출력 제어 복습

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

Microsoft PowerPoint - 08-MP-4-interrupt

Microsoft PowerPoint - Chapter 8_USART Serial Communication

<C6F7C6AEB6F5B1B3C0E72E687770>

<4D F736F F F696E74202D2037C0E55FC0CCC0C0C7F55FBFCFBCBA205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint os2.ppt [호환 모드]

Microsoft Word - PEB08_USER_GUIDE.doc

ATmega128 교재 - 8장 EEPROM.hwp

ATmega128 Architecture Pin Configurations 1 Jo Sang Min DanKook Univ. E.E. Electron - Func1 Func2 Func3 PIN Num VCC Digit

Microsoft PowerPoint - 9.Serial.pptx

<BFACBDC0B9AEC1A6C7AEC0CC5F F E687770>

2. GCC Assembler와 AVR Assembler의차이 A. GCC Assembler 를사용하는경우 i. Assembly Language Program은.S Extension 을갖는다. ii. C Language Program은.c Extension 을갖는다.

歯설명서_020925_.PDF

Microsoft PowerPoint - ch01-1 AVR의 특징 및 ATmega128의 내부구조1.pptx

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

lecture4(6.범용IO).hwp

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

프로그램카운터 (Program Counter) 명령레지스터 (Instruction Register) 누산기 (AC: Accumulator) 상태레지스터 (Status Register) PSWR(Program Status Word Register) 메모리주소레지스터 (M

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

<4D F736F F D20C0DBC7B0C6ED5FBDBAC5D7C7CE20B6F3C0CEC6AEB7B9C0CCBCAD20B0B3B9DF2E646F63>

ADP-2480

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

슬라이드 1

DSP_MON 프로그램 메뉴얼

hwp

PowerPoint 프레젠테이션

1

Microsoft Word - STM32 BxCAN.doc

Microsoft PowerPoint - 08-MP-8-ADC

Dr.Kim ATmega128 Training Kit (SAT ).hwp

PowerPoint 프레젠테이션

T100MD+

이 장에서 사용되는 MATLAB 명령어들은 비교적 복잡하므로 MATLAB 창에서 명령어를 직접 입력하지 않고 확장자가 m 인 text 파일을 작성하여 실행을 한다

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

PowerPoint 프레젠테이션

목차 1. 제품 소개 특징 개요 Function table 기능 소개 Copy Compare Copy & Compare Erase

Microsoft Word - PIC16x_Section20_Comparator_31020a.doc

<BDC7C7E83820BFB9BAF1BAB8B0EDBCAD2E687770>

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

학습목차 r 개념으로살펴보는 CPU 속의제어장치 r 마이크로연산 r 제어장치의동작 r 마이크로프로그램을이용한제어 컴퓨터구조 제어장치

PowerPoint 프레젠테이션

CHAPTER 2 마이크로컨트롤러구조이해하기 가. ATmega128 기능 나. CRX10 구조

Microsoft PowerPoint - polling.pptx

HWP Document

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

2 3

ARDUINO Open Physical Computing Platform 오탈자, 문의및보완이필요한내용은 으로알려주세요.

KEY 디바이스 드라이버

Microsoft PowerPoint - AVR 시리얼 통신.ppt [호환 모드]

Microsoft Word - FS_ZigBee_Manual_V1.3.docx

온라인 IT 교육최강 ( 강의정보처리필기강사조대호 차시명 [CA-06 강 ] 프로세서와명령어차시 6 차시 학습내용 프로세서와명령어 학습목표 컴퓨터의구조와프로세서에대해이해할수있다 컴퓨터의명령어에대해이해할수있다 학습내용 1. 컴퓨터의구성 - 1

R50_51_kor_ch1

KXATUHEFFPYO.hwp

<4D F736F F F696E74202D20332EB5F0C1F6C5D0C8B8B7CEBFCD20B1B8C7F62E >

Transcription:

뻔뻔한 AVR 프로그래밍 The 4 th Lecture 유명환 ( yoo@netplug.co.kr)

1 시간 (Time) 에대한정의 INDEX 2 왜타이머 (Timer) 와카운터 (Counter) 인가? 3 ATmega128 타이머 / 카운터동작구조 4 ATmega128 타이머 / 카운터관련레지스터 5 뻔뻔한노하우 : 레지스터비트설정방법 6 ATmega128 타이머 / 카운터실습

1 시간 (Time) 에대한정의 절대적인시간 시간 주변환경과상관없이독립적으로제어되는시간 예 ) RTC : Real-Time Clock 상대적인시간 주변환경과맞물려제어되어야하는시간 지금으로부터 ~ 후 예 ) 1초마다한번씩 LED가 On/Off

2 왜타이머 (Timer) 와카운터 (Counter) 인가? 1. 3 분뒤에라면을먹는것이목표다. 2. 3 분이란시간을측정해야한다. 3. 3 분이란약속된시간이지난후반드시이를알려줘야한다. 4 3 분이란시간을누군가 ( 타이머 ) 알려주 4. 3 분이란시간을누군가 ( 타이머 ) 알려주면이제까지하던일을멈추고 1 번의목표를실행한다.

2 왜타이머 (Timer) 와카운터 (Counter) 인가? Situation 주기적인 action Definition ( 주파수의 ) 진동수 = (Hz) 1 ( 시간의 ) 주기 (second) clock - 원하는주기를설정 Timer - 클럭의입력횟수카운팅 Counter

2 왜타이머 (Timer) 와카운터 (Counter) 인가? 공식 (1) 1ms = 1 16M n 1 공식 (2) 1ms = Prescaler n 16M

2 왜타이머 (Timer) 와카운터 (Counter) 인가? 1/4 Prescaler 1 ( 초) 진동수 1 1 clock = 16MHz 16 MHz의경우1 clock 시간 1 ( 초) 진동수 1 1clock = prescaler 16 MHz 16 MHz의경우1 count 시간 (prescaler 사용 ) Prescaler Timer/Counter 1/4 Original Clock 16MHz (Oscillator) Timer/Counter 1/8

3 ATmega128 타이머 / 카운터동작구조 ATmega128 AVR Core Timer/Counter 1ms 마다알려달라고요청 n 값을계산 n 값만큼카운팅 인터럽트 서비스루틴실행 인터럽트 1ms 시간완료 n 값카운팅완료 No 1/64 1/1024 16MHz

3 ATmega128 타이머 / 카운터동작구조 Overflow Interrupt 0 0 0 0 0 0 0 0 0 으로초기화 1 1 1 1 1 1 1 1-8bit register 한개만필요 - Overflow 는 255 에서발생 - 0~255 256 counting 255 에서 overflow Interrupt 발생 (n = 256) 0 0 0 0 0 1 1 0 6 으로초기화 1 1 1 1 1 1 1 1 - n = 250 일때인터럽트발생 -0이아닌6으로초기화 - 6~255 250 counting 255 에서 overflow 발생 Interrupt 발생 (n = 250)

Output Compare Match Interrupt 3 ATmega128 타이머 / 카운터동작구조 0 0 0 0 0 0 0 0 0 으로초기화 1 1 1 1 1 0 0 1 249 (n 1) 로초기화 counter register compare register - 두개의register 필요 counter register ( 횟수기록 ) compare register (n 값기록 ) - counter register가증가되다 compare register와그값이서로같으면 interrupt발생 0 0 0 0 1 1 1 1 counter register counter register 값을증가시킨후 compare register 와비교 - counter register를증가하며 compare register와비교 1 1 1 1 1 0 0 1 compare register 1 1 1 1 1 0 0 1 (counter register == compare register) interrupt 발생 counter register 1 1 1 1 1 0 0 1 compare register - counter register와 compare register를비교하여값이서로같을때 interrupt 발생 - 250 counting

4 ATmega128 타이머 / 카운터관련레지스터 TCCR0 : Timer/Counter Control Register Register 설명실제구현예 Bit6, 3 WGM01:0 Waveform Generation Mode 출력할파형설정 Overflow interrupt 일때 Normal mode로설정 Interrupt가발생할때마다반드시 TCNT0 값을초기화해야함 Compare match interrupt 일때 CTC mode 로설정 TOP을 OCR0로사용-> OCR0 값에서인터럽트발생 Interrupt가발생하면자동적으로 TCNT0 값이 0 으로초기화됨 TCCR0 = (0 << WGM00) (1 << WGM01); // CTC mode TCCR0 = (0 << WGM00) (0 << WGM01); // Normal mode

4 ATmega128 타이머 / 카운터관련레지스터 Bit 2:0 CS02: Clock select Prescaler 설정 TCCR0 = (1<<CS02) (0<<CS01) (0<<CS00); // 1/64 Prescaler

4 ATmega128 타이머 / 카운터관련레지스터 TCNT0 : Timer/Counter Register Register 설명실제구현예 TCNT0 Prescaler가적용된클럭주기마다 1씩증가하는 8비트값 하드웨어 (= 카운터 ) 에의해증가됨 Overflow Interrupt 발생시점 = 256 n Output Compare Match Interrupt 발생시점 = 0 TCNT0 = 256 (CPU_CLOCK/TICKS_PER_SEC/64); // CPU_CLOCK : 16000000 // TICKS_PER_SEC : 1000 // 64 : 1/64 Prescaler // (CPU_CLOCK/TICKS_PER_SEC/64) == n

4 ATmega128 타이머 / 카운터관련레지스터 OCR0 : Output Compare Register Register 설명실제구현예 OCR0 TCNT0와비교가되는 8비트값 Output Compare Match Interrupt 에서사용 초기화값 = n - 1 OCR0 = (CPU_CLOCK/TICKS_PER_SEC/64) - 1;

4 ATmega128 타이머 / 카운터관련레지스터 TIMSK : Timer/Counter Interrupt Mask Register Register 설명실제구현예 Bit 1 OCIE0: Timer/Count er0 Output Compare Match Interrupt Enable Bit 0 TOIE0: Timer/Count er0 Overflow Interrupt Enable Output Compare Match Interrupt 활성화 OCIE0 와 SREG_I 비트가 1 로설정되어있어야만 Output Compare Match Interrupt가활성화됨 Overflow Interrupt 활성화 TOIE0와 SREG_I 비트가 1로설정되어있어야만 Overflow Interrupt가활성화됨 TIMSK = (1<<OCIE0) (0<<TOIE0); // Output Compare Match Interrupt TIMSK = (0<<OCIE0) (1<<TOIE0); // Overflow Interrupt

4 ATmega128 타이머 / 카운터관련레지스터 1 개의명령어의처리시간 : 0.0000000625sec Overflow Interrupt Example 1ms 가되기위해선? -> 250 (n) count 필요 16MHz clock 64 분주 4us (timer 값 ) TCNT0 초기화 250 counting 1ms Timer Overflow (TCNT0 증가 ) Interrupt 64*25,000=16MHz 0.0000000625sec 0000000625sec * 64 = 0.000004sec 000004sec = 4us 초기값부터 Max 값 255 까지 counting Max 값 (= 0xFF) 까지 TCNT0 값증가 TCCR0 Prescaler( 분주비 ) 설정 TCNT0 하드웨어에의해증가하는 8비트카운터값 (256 n) TIMSK Overflow interrupt 를활성화시키기위해 TIMSK 레지스터의 TOIE0 비트를 1 로설정

5 뻔뻔한노하우 : 레지스터비트설정방법 7 6 5 4 3 2 1 0 FUNFUN BOY GIRL FUNFUN = 0x80; FUNFUN = (1<<BOY); 7 6 5 4 3 2 1 0 FUNFUN BOY GIRL FUNFUN = 0x88; FUNFUN = (1<<BOY) (1<<GIRL);

6 ATmega128 타이머 / 카운터실습 물리적연결 DK128-MAIN 과 DK128-EXT 연결 초기화 & 설정루틴 Timer/Counter 관련레지스터설정 Overflow Interrupt 발생 초기화 : n 값계산설정 : TCCR0 설정 -> Normal mode, 1/64 Prescaler 활성화 : TIMSK 설정 -> Overflow Interrupt 활성화 서비스루틴 Timer/Counter 인터럽트서비스루틴 (Interrupt Vector Table사용 ) SIGNAL(SIG_OVERFLOW0)

6 ATmega128 타이머 / 카운터실습 ATmega128 Data Sheet C:\AvrEdit\WinAvr\avr\include\avr\iom128.h /* Interrupt vectors */ #define SIG_INTERRUPT0 _VECTOR(1) #define SIG_INTERRUPT1 INTERRUPT1 _VECTOR(2) #define SIG_INTERRUPT2 _VECTOR(3) #define SIG_INTERRUPT3 _VECTOR(4) #define SIG_INTERRUPT4 _VECTOR(5) #define SIG_INTERRUPT5 _VECTOR(6) #define SIG_INTERRUPT6 INTERRUPT6 _VECTOR(7) #define SIG_INTERRUPT7 _VECTOR(8) #define SIG_OUTPUT_COMPARE2 _VECTOR(9) #define SIG_OVERFLOW2 _VECTOR(10) #define SIG_INPUT_CAPTURE1 _VECTOR(11) #define SIG_OUTPUT_COMPARE1A _VECTOR(12) #define SIG_OUTPUT_COMPARE1B _VECTOR(13) #define SIG_OVERFLOW1 _VECTOR(14) #define SIG_OUTPUT_COMPARE0 _VECTOR(15) #define SIG_OVERFLOW0 _VECTOR(16)