AVR http naver comcarroty INDEX AVR 1 Goal

  • Slides: 9
Download presentation

당근이의 AVR 갖고 놀기 : http: //naver. com/carroty INDEX 이전 “당근이의 AVR 갖고 놀기”

당근이의 AVR 갖고 놀기 : http: //naver. com/carroty INDEX 이전 “당근이의 AVR 갖고 놀기” 화면 1 Goal 2 Introduction & Base Knowledge 3 Circuit & Environment 4 Register Setting 5 Experiment & Result 6 Conclusion & Future Works 2

당근이의 AVR 갖고 놀기 : http: //naver. com/carroty Introduction • 회로도 • • PIN

당근이의 AVR 갖고 놀기 : http: //naver. com/carroty Introduction • 회로도 • • PIN 0, PIN 1이 INT 0, INT 1에 물려있음 : PD 4/PD 5/PD 6/PD 7 동작은 전과 동일 : 평소에 HIGH, 눌려지면 LOW 4

당근이의 AVR 갖고 놀기 : http: //naver. com/carroty Polling Method • • 앞장에서 스위치

당근이의 AVR 갖고 놀기 : http: //naver. com/carroty Polling Method • • 앞장에서 스위치 입력을 받은 예제 : polling 방식 while(true) 부분에서 키입력을 무한히 검사한다. 원래 폴링이 이래요. • #include <avr/io. h> • • #include ". /carroty/fundamental. h" #include ". /carroty/delay. h" • • • • int main(void) { unsigned char key= 0; DDRA= 0 x. FF; DDRD= 0 x 0 F; } while(true) { key= PIND; switch(key) { case (KEY 1) : PORTA= LED 1_ON; case (KEY 2) : PORTA= LED 2_ON; case (KEY 3) : PORTA= LED 3_ON; case (KEY 4) : PORTA= LED 4_ON; default : PORTA= 0 x. FF; break; } } return 0; break; 5

당근이의 AVR 갖고 놀기 : http: //naver. com/carroty Register Setting • MCUCR : MCU

당근이의 AVR 갖고 놀기 : http: //naver. com/carroty Register Setting • MCUCR : MCU Control Register • GICR : General Interrupt Control Register • SREG : Status Register • GIFR : General Interrupt Flag Register 6

당근이의 AVR 갖고 놀기 : http: //naver. com/carroty Register Setting • MCUCR : MCU

당근이의 AVR 갖고 놀기 : http: //naver. com/carroty Register Setting • MCUCR : MCU Control Register • GICR : General Interrupt Control Register – INT 1=1 : PORT D 3 ON / INT 0=0 : PORT D 3 OFF – SREG I=1 : All Interrupt Enable : INT설정이 의미가 없어진다. 7

당근이의 AVR 갖고 놀기 : http: //naver. com/carroty Example • External Interrupt Method vs

당근이의 AVR 갖고 놀기 : http: //naver. com/carroty Example • External Interrupt Method vs Polling Method • • • • • /* Interrupt Service Routine */ SIGNAL(SIG_INTERRUPT 0) { PORTA= LED 1_ON; } // INT 0 interrupt function SIGNAL(SIG_INTERRUPT 1) { PORT 2= LED 2_ON; } // INT 1 interrupt function int main(void) { cli(); // global interrupt disable MCUCR |= 0 b 10001010; // SRE(7) : External SRAM/XMEM Enable // ISC 11: ISC 10(3, 2) - 10 : INT 1(Falling edge) // ISC 01: ISC 00(1, 0) - 10 : INT 0(Falling edge) GICR = 0 b 11000000; // INT 1(7) - 1 : INT 1 interrupt enable // INT 0(6) - 1 : INT 0 interrupt enable GIFR = 0 b 0000; // INTF 1(7) - 0 : INT 1 interrupt flag clear // INTF 0(6) - 0 : INT 0 interrupt flag clear PORTA= LED 1_OFF; PORTA= LED 2_OFF; sei(); // global interrupt enable return 0; } • • • #include <avr/io. h> #include <avr/interrupt. h> #include <avr/signal. h> 9