Download - Micro Askiseis Ear11

Transcript
  • . .

    2011

  • 1.

    2. 7-SEGMENT DISPLAY

    3.

    4. INTERRUPTS

    5. O TIMER0

    6. O TIMER1

    7.

    8.

    9. /D

    10.

  • M - 1 1

    A 1

    /

    :

    _ _

    : 1. VR

    (STK200/CodeVision C). 2. -

    C. _ _

    ATmega16 32 -, 4 (ports) A,B,C D. 8-bit, bit / . 3 : 1. M DDRx ( x=A,B,C,D) x

    ( bit 0) ( bit 1). ,

    DDRA = 0b11000000; 0-5 6-7 .

    2. PINx x, . ,

    k = PINB; k ( unsigned char, . 8 bits)

    bits ( 1 0) 8 .

    3. H bits PORTx ( DDRx). , , PORTx (0 [0 Volt] 1 [5 Volt]) . , / (pull-up resistor), 1/0 bit . ,

    DDRC = 0xf0; PORTC = 0x0f; 0-3 C pull up,

    4-7 0 Volt. H Codevision C bits 3 . / , bitwise (""). :

    DDRC.2 = 1; O 2 C PORTC.2 = 0; 2 C 0 Volt if (PINB.3 == 0).. 3

    , ( 1 0). , .. ( ) C 1, PORTC :

  • M - 1 2

    PORTC = 0b11111111; { } , PORTC = 255; { } , PORTC = 0xff; { }

    - / STK200 8 (SW0-SW7) 8 (LED0-LED7). LED LEDn 0 Volt. , SWn 5 Volt . , (SW0 - SW7) D , (LED0 LED7) B.

    LED PORTB.2 = 0; A LED2 PORTB.4 = 1; LED4

    if (PIND.3 == 0) SW3 if (PIND.2 == 1) SW2

    _ _

    CODEVISION C , AVR E:

    1. CodeVisionAVR ( desktop ).

    2. project ( File -> New..).

    3. , project .

    4. (CodeWizard) Yes.

    5. :

    Chip

    (i) Chip ATmega16

    (ii) Clock 8,0 z

    (iii) Program Type Application

    - , , STK200

  • M - 1 3

    6. File Generate, Save and Exit.

    . directory . , 1 :

    D:\MIKRO_ERG\HLEK1\ASK1\

    directory, 3 . Ask1 .

    7. , CodeVision Ask1.c CodeWizard. , .

    , . , , ( Ctrl-A) delete.

    , ( )

    #include void main(void) {

    #include ,

    DDRB = 0b11111111; (0..7) B PORTB = 0b11111111;

    1, LED

    DDRD = 0b00000000; (0..7) D PORTD = 0b11111111;

    pull-up D

    while(1) {

    ( TRUE)

    PORTB = 0xF8; PORTB 3 LED (LED0-2) 5

    } while(1) ! } ( )

  • M - 1 4

    DOWNLOAD

    1. 8 LED STK200 , , B . LED pull-up (330) (Vcc).

    2. ( LED ).

    3. Project CodeVisionAVR Configure.

    4. After Make Program The Chip OK.

    !

    5. Project CodeVisionAVR Make. , compile . , Program. , Make.

    6. Program FLASH .

  • M - 1 5

    _STK 200 _

    PORT B

    PORT A

    PORT C

    PORT D

    LED0-LED7LED ISPLED

    / FF

    ISP

    SW0-SW7

    jumpers STK200

    Bit 0 Bit 1

    Bit 7Bit 6VccGnd

    PORTx (x=A, B, C, D) headers

    STK200.

  • M - 1 6

    _STK 200 _

    Atmel ( ).

    6 ( pin 2X5 IDC10) pin .

    8 . 8 LED . 2 LED, . RS232 ( / ). Brownout ( ). Flash. EEPROM. 8 MHz ( 16 MHz). ISP (In System Programming) USB ( programmer ) /.

  • M - 1 7

    1.1 LEDs

    , PORTB, LED. LED0 STK200.

    ( ) PORTB : o LED{0 1 2 3 4} :

    o LED{0 2 4 6} :

    , directory , Save as , Ask11.c . , , , sk1.c, . , . , .

    1.2

    8 LEDs (LED0-LED7) PORT B ( ) a b.

    : 255 8 bit. LED 1 0 . #include // unsigned char a=25; // (1 byte: 0-255) unsigned char b=3; unsigned char sum;

    void main(void) { DDRB=0xff; // Port B sum=a+b; //

    while(1) // { PORTB= ~sum; // Port B } // ~ sum } // LED 0 ,

    LEDs. a b LED. C:

    A++; // A 1 ( =+1) A--; // 1 ( =-1) A+=2; // 2 ( =+2) A-=3; // 3 ( =-3) A*=2; // ( =*2) A/=5; // 5 ( =/5)

    a=210 b=80 . , .

  • M - 1 8

    1.3

    D 8 () SW0-SW7 STK200. D PIND LED PORTB.

    SW0-SW7 0 , . AVR pull-up (330) PORTD=0xFF;.

    : pull-down , , 8 10 GND.

    #include // unsigned char a; //

    void main(void) { DDRB=0xff; // B DDRD=0x00; // D PORTD=0xff; // : pull-up D

    while(1) // { a=PIND; // D a PORTB=a; // a B } } , while :

    PORTB = PIND; // Port D // PORT B

    LED .

  • M - 1 9

    1.4 if

    SW1 LED4, SW2 LED6, SW3 LED.

    #include // void main(void) { DDRB = 0xFF; // Port B PORTB = 0xFF; // , LED DDRD = 0x00; // Port D PORTD = 0xFF; // pull-up resistors Port D while(1) { if(PIND.1==0) // SW1 PORTB.4 = 0; // LED4 ( ) if(!PIND.2) // SW2 PORTB.6 = 0; // LED6 ( ) if(!PIND.3) // SW3 PORTB = 0xFF; // LED } } ( ) if (PIND.1==0) :

    if(PIND==0xFD) ( ) if(PIND.1==0) ():

    if(!(PIND&=0x02)) ( ) PORTB.4 = 0; PORTB = 0xEF;

    LED SW0 SW7 SW3 SW4.

    1.6

    AVR Studio, ( )

  • M - 1 10

    AVRStudio AVRStudio , , PC AVR. , compiler. ( /). ( 3 AVRStudio).

    Codevision, compile , AVRStudio

    AVRStudio, :

    AVR Studio,

    . ( , Alt+5 ).

    (, , /, .) / ( ). , B D :

    Debug , , . Trace into, F11 ( ). , I/O.

    STK200, ( 1) "Input Pins" PORTD . STK200, , , .

  • - 2 1

    A 2

    :

    _ _

    (interrupts), interrupts. seven segment display , (delay).

    _ _ , ,

    7 (7 segment display) 0-9. 7 (LED) ( a, b, c, d, e, f g ), LED ( . dp), . . , 7 , display 8, , , a,b,c,d g, 3.

    a b

    c

    de

    fg CA

    CA

    ab

    c

    de

    fg

    .

    To display (S52-11HA) (common anode), ( ). , display +VCC, segments 0 .

    , display , flat idc-10, C, .

    LLLLLLL

    CA

    +

    ab

    cd

    e

    fg

    5 V

    330R

    5 V

    LLLLLLL

    L 557

    CA

    +

    ab

    cd

    e

    fg

    Gated

    BC557

    PNP

    5 V

    L(0V)

    1,5 K

    a b g

    330

    CA

    L L L

  • - 2 2

    2.1 7 (seven segment display)

    STK200, display (0-7). display .

    D , SW0-SW7.

    #include

    void main(void) { DDRC =0xFF; PORTC=0xFF; //, display DDRD =0x00; //Port D PORTD=0xFF;

    while(1) { switch(PIND) // { case 0xFE:PORTC=~0x3F;break; // SW0 display 0 case 0xFD:PORTC=~0x06;break; // SW1 display 1 case 0xFB:PORTC=~0x5B;break; // SW2 display 2 case 0xF7:PORTC=~0x4F;break; // SW3 display 3 case 0xEF:PORTC=~0x66;break; // SW4 display 4 case 0xDF:PORTC=~0x6D;break; // SW5 display 5 case 0xBF:PORTC=~0x7D;break; // SW6 display 6 case 0x7F:PORTC=~0x07;break; // SW7 display 7 default: PORTC=~0x00;break; // , // display } } } ( PORTC) display ;

    2 .

    default .

    , SW3 SW5 display .

  • - 2 3

    2.2

    display , C. display .

    #include

    unsigned char button[] ={ 0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F}; //buttons unsigned char display[]={~0x3F, ~0x06, ~0x5B, ~0x4F, ~0x66, ~0x6D, ~0x7D, ~0x07}; //display unsigned char i; void main(void) { DDRC =0xFF; PORTC=0xFF; DDRD =0x00; PORTD=0xFF;

    while(1) { for (i=0; i

  • - 2 4

    2.4

    ( 0 8). countBits 8-bit bits 1.

    !

    #include unsigned char display[]={~0x3F, ~0x06, ~0x5B, ~0x4F, ~0x66, ~0x6D, ~0x7D, ~0x07, ~0x7F}; //9 unsigned char countBits(unsigned char val) { unsigned char j, n=0, mati=0x01; for (j=0; j

  • - 3 1

    A 3

    :

    _ _

    . / (switch bounce) software. 4 x 4 (4 x 4 key matrix). _ _ /

    , , , 8 STK200 , (button bounce) ( ). , , () 60ms, . debouncing , hardware software.

    hardware debouncing RC , . , Max681x Maxim , debounce . MC14490 On Semiconductors.

    , software debouncing , , , . .

  • - 3 2

    4 x 4 (

    8 ), , . , - , , (key matrix). , hardware , , :

    (row - 1)*4 + (col - 1) = 13

    0 1 2 3

    4 5 6 7

    8 9 10 11

    12 13 14 15

    c1 c2 c3 c4

    r1

    r2

    r3

    r4

    c1 c2 c3 c4r1

    r2

    r3

    r4

    0 1 2 3

    4 5 6 7

    8 9 10 11

    12 13 14 15

    PA.1

    PA.0

    PA.3

    PA.2

    PA.6PA.7PA.4PA.5

    , PA.0 PA.4, PA.4 PA.7. , , #7 ( 2 , 4 ), PA.0 PA.6:

    0 1 2 3

    4 5 6 7

    8 9 10 11

    12 13 14 15

    c1 c2 c3 c4

    r1

    r2

    r3

    r4

    c1 c2 c3 c4r1

    r2

    r3

    r4

    0 1 2 3

    4 5 6 7

    8 9 10 11

    12 13 14 15

    PA.1

    PA.0

    PA.3

    PA.2

    PA.6PA.7PA.4PA.5

    , , : , 0, , pull-up. , (PA.4 PA.7) 1, pull-up. ( ), 0 bit PINA ( , PA.6). , , , , , 0 PA.0. bits ( , 0b10111110 #7).

  • - 3 3

    3.1 software debounce

    To SW7 STK200. ( ) LED STK200.

    , . , , , "" . software debounce - (delays) .

    #include #include

    unsigned char count=0;

    void main(void) { DDRB = 0xFF; PORTB = 0xFF;

    DDRD = 0x00; PORTD = 0xFF;

    while(1) { if (PIND.7 == 0) // SW7 { delay_ms(30); // 30ms, debounce while(PIND.7 == 0); // SW7 delay_ms(30); // 30ms, debounce

    count++; // PORTB = ~count; // LEDs STK200 } } } debounce .

    ( );

  • - 3 4

    3.2 debounce

    rid(n), bit n PIND , debounce 1. , 0. .

    #include #include

    unsigned char k=0;

    unsigned char rid(unsigned char n) // read_isolate_debounce { unsigned char mask; mask = (1

  • - 3 5

    3.3 seven segment display 4 x 4

    To 4 x 4 PORT A, idc-10 , .

    PORT C 7-segment display, . ( hex) PORTC - 16 display: ( , )

    0 1 2 3 4 5 6 7 8 9 A b C d E F

    ~3F ~06 ~5B ~4F ~66 ~6D ~7D ~07 ~7F ~77 ~7C ~39 ~79

    , display.

    #include

    void main(void) { unsigned char a,b,c,j;

    DDRB =0xff; PORTB=0xff;

    DDRC =0xff; PORTC=0xff;

    while (1) { DDRA =0x0f; // PORTA=0xf0; // LOW HIGH ( pull-up) for(j=0; j

  • - 3 6

    3.4 / 4 x 4

    display , (1-4) (1-4) , ( 0-15, ). #include unsigned char a,b,j,i,d,row=0,col=0; char display[]= {0x06, 0x5b, 0x4f, 0x77, 0x66, 0x6d, 0x7d, 0x7c, 0x07, 0x7f, 0x6f, 0x39, 0x40, 0x3f, 0x36, 0x5e};

    void main(void) { d=0; DDRB=0xff; DDRC=0xff;

    while (1) { DDRA =0x0f; PORTA=0xf0; for(j=0; j

  • - 4 1

    A 4

    INTERRUPTS

    :

    _ _

    AVR CodeVision C compiler. 0-1 ATmega16. _ _

    AVR O (interrupts)

    . O , . M interrupt ( ), CPU (interrupt service routine - ISR), interrupt. (, interrupts, A/D , .) ISR. M ISR, interrupt.

    , . , ( ) . H interrupts : 1.

    bits .

    2. , .

    Status Register SREG

    Bit 7 6 5 4 3 2 1 0 I T H S V N Z C

    Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0

    SREG

    O SREG (Status register) ( 1) ( 0) , bit 7. M (SEI CLI) Global Interrupt Enable bit ( 1 0 ). A Assembly, #asm. Codevision:

    #asm("sei") #asm("cli")

    , bit / ( bits SREG):

    SREG |= 0x80; SREG &= 0x7F;

  • - 4 2

    INTERRUPTS O ATmega16 (INT0, INT1 INT2)

    16, 17, 3 ( ). , ( DDR).

    interrupts

    Amega16

    interrupts :

    General Interrupt Control Register GICR Bit 7 6 5 4 3 2 1 0

    INT1 INT0 INT2 --- --- --- IVSEL IVCE Read/Write R/W R/W R/W R R R R/W R/W Initial Value 0 0 0 0 0 0 0 0

    GICR

    bits 5,6 7 GICR ( 1) ( 0) Amega16. , interrupt, , bits MCUCR ( INT0 INT1) MCUCSR ( o 2). General Interrupt Flag Register GIFR

    Bit 7 6 5 4 3 2 1 0 INTF1 INTF0 INTF2 --- --- --- --- ---

    Read/Write R/W R/W R/W R R R R R Initial Value 0 0 0 0 0 0 0 0

    GIFR

    bits 5-7 GIFR . bit 1 , (ISR) . ISR o bit GIFR 0. , interrupts , 1 bit GIFR. , GIFR=0x80 INT1. MCU Control Register MCUCR

    Bit 7 6 5 4 3 2 1 0 SM2 SE SM1 SM0 ISC11 ISC10 ISC01 ISC00

    Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0

    MCUCR

    T bits 0-3 interrupts INT0 INT1, , :

    Interrupt 0 Sense Control ISC01 ISC00

    0 0 pin INT0 0 1 pin INT0 1 0 10 ( ) Pin INT0 1 1 01 ( ) pin INT0

  • - 4 3

    Interrupt 1 Sense Control ISC11 ISC10

    0 0 Pin INT1 0 1 Pin INT1 1 0 10 ( ) Pin INT1 1 1 01 ( ) pin INT1

    MCU Control and Status Register MCUCSR

    Bit 7 6 5 4 3 2 1 0 JTD ISC2 --- JTRF WDRF BORF EXTRF PORF

    Read/Write R/W R/W R R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0

    MCUCSR

    T bit 6 interrupt INT2, . INT0 INT1:

    Interrupt 2 Sense Control ISC2

    0 10 ( ) Pin INT2 1 01 ( ) pin INT2

    ( ) , . , , .

    (pulse generator), ( L) . dip switch 4 10z , 1KHz , 1Hz 0.5z.

    AT90S2313 Atmel, AVR ( ATmege16), . , , 16-bit Timer1, 4 MHz. H 5 V Vcc breadboard. : Reset , Start Stop. , dip switches , Start. , LED, PD0, , PD1-PD4. , Stop. , Stop, dip switches, Start.

    T, , , (, , , .., STK200), SPI. LED . . , ( ) .

    ON 12

    34

    SPI

    PD0

    PD1

    PD2

    PD3

    PD4

    GND

    GND

    Vcc

    AT90

    S231

    3 START

    STOP

    RESET

    GREEN LED

    RED LED

  • - 4 4

    4.1 INT0

    #include unsigned char count=0;

    interrupt [EXT_INT0] void ext_int0_isr(void) { count++; PORTB = ~count; }

    void main(void) { DDRB = 0xFF; PORTB = 0xFF; DDRD = 0x00; PORTD = 0xFF; GICR = 0b01000000; MCUCR = 0x03;

    #asm("sei")

    while (1); } , SW2. , .

    , AVR Studio, .

  • - 4 5

    4.2

    interrupt , MCUCR, INT0. , ISR, count LED , INT0 (. SW2).

    , , SW0 LED INT0, SW7 LED INT0.

    4.3 INT1

    , INT1 ( ). , D STK200. , ( ) header D PD.3 ( 1). header D, Vcc Gnd.

    ! !

    #include

    unsigned char display[] = {~0x3f, ~0x06, ~0x5b, ~0x4f, ~0x66, ~0x6d, ~0x7d, ~0x07, ~0x7f, ~0x6f}; unsigned char i=0;

    interrupt [EXT_INT1] void ext_int1_isr(void) { i++; if(i==10) i=0; PORTC = display[i]; }

    void main(void) { DDRC = 0xFF; PORTC = display[0]; DDRD = 0x00; PORTD = 0x00; GICR = 0x80; GIFR = 0x80; MCUCR = 0x0C;

    #asm("sei")

    while (1); }

    4.4 interrupts

    , D STK200 . INT0 INT1 , :

    : (0 9) SW6 - SW7, 7 segment display. INT0 ( )

    : To LED7 STK200 2 sec INT1 ( )

  • - 4 6

    LED0 ( ) LED1 ( ) STK200. , 2 . , rid(), ( copy-paste) 3.

    #include #include #define A 1 #define B 2

    unsigned char display[] = {~0x3f,~0x06,~0x5b,~0x4f,~0x66, ~0x6d,~0x7d,~0x07,~0x7f,~0x6f}; unsigned char N = 0, state = 0;

    interrupt [EXT_INT0] void ext_int0_isr(void) { state = A; PORTB.0 = 0; PORTB.1 = 1; }

    interrupt [EXT_INT1] void ext_int1_isr(void) { state = B; PORTB.0 = 1; PORTB.1 = 0; }

    unsigned char rid(unsigned char n) // read_isolate_debounce { unsigned char mask; mask = (1

  • - 4 7

    4.5 GIFR

    To GIFR, - interrupts (. ). interrupts SW7. () interrupt INT0 LED.

    #include

    interrupt [EXT_INT0] void ext_int0_isr(void) { PORTB = 0x00; }

    void main(void) { DDRB = 0xFF; PORTB = 0xFF; DDRD = 0x00; PORTD = 0xFF; GICR = 0x40; MCUCR = 0x03;

    while (1) { if (!PIND.7) { // GIFR = 0x40; #asm("sei") } } }

    , SW2 ( 0), SW7. ;

    , GIFR = 0x40; ( //) . .

  • - 4 8

  • M - 5 1

    A 5

    O TIMER0

    : _ _

    8-bit / Timer0 Tmega16.

    _ _ TIMER0

    Timer0 8-bit ( . 0x00 0xFF). H , () TCNT0. O Timer0 :

    Timer/Counter0 Control Register TCCR0 Bit 7 6 5 4 3 2 1 0

    FOC0 WGM00 COM01 COM00 WGM01 CS02 CS01 CS00 Read/Write W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0

    TCCR0

    T bits 0:2 TCCR0 Timer0, :

    Clock Selection Bits CS02 CS01 CS00

    0 0 0 A M 0 0 1 System Clock (CK) 0 1 0 System Clock, prescaler N = 8 (CK/8) 0 1 1 System Clock, prescaler N = 64 (CK/64) 1 0 0 System Clock, prescaler N = 256 (CK/256) 1 0 1 System Clock, prescaler N = 1024 (CK/1024)

    1 1 0 E ( ) 1 1 1 E ( )

    T bits 3 6 TCCR0 (mode) , : Waveform generation mode bits WGM00 WGM01

    0 0 (Normal mode) 1 0 E (Phase Correct PWM mode) 0 1 M T (CTC - Clear Timer on Compare mode) 1 1 E (PWM) (fast PWM mode)

    TIMER0 TCCR0,

    f0 = FCK/N 0 1 0xFF. 0xFF, , TOV0 TIFR 1 0 (). E interrupt , ISR Timer0, TOV0 0.

    CTC TOY TIMER0 TCCR0,

    f0 = FCK/N 0 1 OCR0. , , , 0x00 interrupt (. ), ISR. , CTC Timer0 (OCR0+1) .

  • M - 5 2

    modes Timer0, () , TCNT0. CS00:CS20 = 0 TCCR0 (.. TCCR0=0x00).

    interrupts Timer0 TIMSK TIFR.

    Timer/Counter Interrupt Mask Register TIMSK Bit 7 6 5 4 3 2 1 0

    OCIE2 TOIE2 TICIE1 OCIE1A OCIE1B TOIE1 OCIE0 TOIE0 Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0

    TIMSK

    bits 0 1 TIMS ( 1) Y M (Timer0 Overflow, bit 0) T (Timer0 Output Compare Match, bit OCIE0),

    M (Timer0 Overflow) 0xFF 0x00 TOV0 1. E bits TOIE0 ( Timer0 Overflow) GIE ( ) 1, (ISR) , TOV0 0 . ISR Timer0 CodeVision :

    interrupt [TIM0_OVF] void timer0_ovf_isr(void)

    (Timer0 Output Compare) TCNT0 OCR0 bit OCIE0 TIMSK 1, , ISR . Codevision:

    interrupt [TIM0_COMP] void timer0_comp_isr(void)

    5.1 Timer0

    , STK200, FCK = 8,00 MHz, , .

    Timer0.

    CS0

    2

    CS0

    1

    CS0

    0

    Prescaler Timer0 Timer0

    Timer0

    N f0 = FCK/N t0 = 1/f0 T0 = 256t0 0 0 0 0 - - - 0 0 1 1 8,00 MHz 0,125 sec 32 sec 0 1 0 8 1,00 MHz 1 sec 256 sec 0 1 1 64 1 0 0 256 1 0 1 1024 128 sec 32,768 msec

    prescaler =64, Timer0 1 sec.

  • M - 5 3

    5.2 Timer0 CTC

    T , ( ) LED STK200.

    1 sec CTC Timer0, 500 250 , prescaler N=64. 250 , OCR0 250-1 = 249.

    ( 250 ) 250t0 = 250N/FCK = 2508 sec = 2 msec

    #include unsigned char sec = 0; unsigned int count = 0;

    interrupt [TIM0_COMP] void timer0_comp_isr(void) { count++; // if (count == 500) // 500 x 250 8 sec = 1sec { sec++; // PORTB = ~sec; // LED STK200 count = 0; // } }

    void main(void) { DDRB = 0xFF; PORTB = 0xFF; DDRD = 0x00; PORTD = 0xFF;

    OCR0 = 249; // 250 TCCR0 = 0x0B; // CTC mode, prescaler = 64 TIMSK = 0x02; // interrupt Timer0

    #asm("sei") while (1); }

    , ( ), prescaler = 256. CPU ;

    , SW7 STK200, ( Timer0), SW0 ( 0) .

  • M - 5 4

    5.3

    , 320msec LED2.

    #include unsigned int count = 0;

    interrupt [TIM0_COMP] void timer0_comp_isr(void)

    { count++; if (count == ) {

    } }

    void main(void) { DDRB = 0xFF; PORTB = 0xFF; DDRD = 0x00; PORTD = 0xFF;

    OCR0 = TCCR0 = TIMSK =

    #asm("sei") while (1); }

    , , Fck = 16MHz ;

  • M - 5 5

    5.4

    , , , 3 sec, 0,75 sec.

    Timer0 , interrupt INT0. LED7 STK200.

    #include

    bit flag=0; unsigned int count = 0, max_count = 1500;

    interrupt [TIM0_COMP] void timer0_comp_isr(void) { count++; if (count == max_count) { PORTB.7 = ~PINB.7; count = 0; } }

    interrupt [EXT_INT0] void ext_int0_isr(void) { flag = ~flag; //

    if (flag) max_count = 375; // 0.75 sec prescaler=64 else max_count = 1500; // 3.0 sec prescaler=64

    TCNT0 = 0x00; // count = 0; //

    PORTB.7 = 0; // }

    void main(void) { DDRB = 0xFF; PORTB = 0x7F; DDRD = 0x00; PORTD = 0xFF;

    GICR = 0x40; GIFR = 0x40; MCUCR = 0x02;

    OCR0 = 249; TCCR0 = 0x0B; TIMSK = 0x02;

    #asm("sei") while (1); } 1 / .

  • M - 5 6

    5.5 Timer0 Interrupt

    Timer0 (counter) . T0 (o 0 PB.0, PORTB LED STK200). TCCR0 , Timer0 CPU. 6 , 7-segment display ( PORTC). interrupts, TCNT0 (polling) . 0 ' ( ), , .

    #include #define MAX 6 unsigned char display[] = {~0x3f,~0x06,~0x5b,~0x4f,~0x66, ~0x6d,~0x7d,~0x07,~0x7f,~0x6f}; unsigned char i=0; void main(void) { DDRC = 0xFF; PORTC = 0xFF; TCNT0 = 0x00; TCCR0 = 0x07;

    while (1) { if (TCNT0==MAX) { TCNT0 = 0; if(++i==10) i=0; PORTC = display[i]; } } }

    5.6 Timer0 Interrupt

    interrupt - mode CTC Timer0, CPU.

    #include #define 6

    unsigned char display[] = {~0x3f,~0x06,~0x5b,~0x4f,~0x66, ~0x6d,~0x7d,~0x07,~0x7f,~0x6f}; unsigned char i=0;

    interrupt [TIM0_COMP] void timer0_comp_isr(void) { i++; if (i==10) i=0; PORTC = display[i]; }

    void main(void) { DDRC = 0xff; PORTC = display[0]; TCNT0 = 0; OCR0 = MAX-1;

    TCCR0 = 0b00001111; // T0, CTC mode TIMSK = 0x02; // interrupt #asm("sei") while (1); }

  • - 6 1

    A 6

    O TIMER1

    : _ _

    16-bit / Timer1 Tmega16. LCD , Codevision. , . _ TIMER1 Timer1 ATmega16 16-bit ( 0x00 0xFFFF) , () TCNT1. O Timer1 , :

    Timer/Counter1 Control Register B TCCR1B Bit 7 6 5 4 3 2 1 0

    ICNC1 ICES1 -- WGM13 WGM12 CS12 CS11 CS10 Read/Write W R/W R R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0

    TCCR1B

    T bits 3:4 TCCR1B (mode) , :

    Waveform generation mode bits WGM13 WGM12

    0 0 0 1 CTC-OCR1A: M T ( OCR1A) 1 0 PWM & 1 1 CTC-ICR1: M T ( ICR1)

    T bits 0:2 TCCR1B Timer1, ( prescaler Timer0):

    Clock Selection Bits CS12 CS11 CS10

    0 0 0 A M 0 0 1 System Clock (CK) 0 1 0 System Clock, prescaler N = 8 (CK/8) 0 1 1 System Clock, prescaler N = 64 (CK/64) 1 0 0 System Clock, prescaler N = 256 (CK/256) 1 0 1 System Clock, prescaler N = 1024 (CK/1024)

    1 1 0 E ( ) 1 1 1 E ( )

    (NORMAL MODE) TOY TIMER1 TCCR1B ( - prescaler

    N), f1 = FCK/N 0 1 0xFFFF (65535). H 16-bit TCNT1. , 0x0000 () interrupt , ISR Timer1.

  • - 6 2

    CTC-OCR1A (CTC-OCR1A MODE) TOY TIMER1 CTC-OCR1A 0 16-bit OCR1A. , , 0x0000 , interrupt , ISR .

    A RRUPTS / interrupts Timer1 TIMSK.

    Timer/Counter Interrupt Mask Register TIMSK Bit 7 6 5 4 3 2 1 0

    OCIE2 TOIE2 TICIE1 OCIE1A OCIE1B TOIE1 OCIE0 TOIE0 Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0

    TIMSK

    bits 2 4 TIMS ( 1) Y M (Timer1 Overflow 1), T A (Timer1 Output Compare Match OCIE1A) T B (OCIE1B).

    Y M (Timer1 Overflow) Timer1 0xFFFF 0x0000 bit 1 TIMSK 1, , ISR . ISR Timer1 CodeVision :

    interrupt [TIM1_OVF] void timer1_ovf_isr(void) A (Timer1 Output Compare) TCNT1 OCR1A bit OCIE1A TIMSK 1, , ISR . ISR Codevision :

    interrupt [TIM1_COMPA] void timer1_compa_isr(void)

    6.1 Timer1

    , STK200, FCK = 8,00 MHz, , .

    CS0

    2

    CS0

    1

    CS0

    0

    Prescaler Timer1 Timer1

    Timer1

    N f1 = FCK/N t1 = 1/f1 T1 = 65536 t1 0 0 0 0 Timer1 0 0 1 1 8,00 MHz 0,125 sec 8,192 msec 0 1 0 8 1,00 MHz 1 sec 65,536 msec 0 1 1 64 125 kHz 8 sec 0,52488 sec 1 0 0 256 31,250 kHz 32 sec 2,097152 sec 1 0 1 1024 7,8125 kHz 128 sec 8,388608 sec

  • - 6 3

    6.2 Timer1

    T 10 . O 7-segment display, PORTC. , 7-segment display LED STK200.

    1sec, : o prescaler N=1024, t1 = N/Fck = 128sec. , =1 sec Q = T/t1 = 7812.5 () . , , prescaler .

    o prescaler N = 256, t1 = N/Fck = 32sec. Q = T/t1 =31250, 1 sec N = 256.

    o Q = 31250 < 65536, Timer1 1 sec, . CTC-OCR1A (mode) Timer1 interrupt OCR1A. , OCR1A 1 (31250 1 = 31249).

    #include unsigned char i = 9; unsigned char display[] = {~0x3f, ~0x06, ~0x5b, ~0x4f, ~0x66, ~0x6d, ~0x7d, ~0x07, ~0x7f, ~0x6f}; interrupt [TIM1_COMPA] void timer1_compa_isr(void) { if (i>0) { i--; PORTC = display[i]; } else { PORTC = 0xFF; PORTB = 0x00; TCCR1B = 0x00; // Timer1 } } void main(void) { DDRB = 0xFF; PORTB = 0xFF; DDRC = 0xFF; PORTC = display[i]; // i=9

    TCNT1 = 0x0000; OCR1A = ?????? ; TCCR1B = 0b00001100; // CTC-OCR1A mode, prescaler = 256 TIMSK = ?????? ; // interrupt OCR1A

    #asm("sei") while (1); } , , SW5 STK200.

    , 10 interrupt INT0.

    6.3

    , 10 ( display 1 ), CPU Timer (, interrupts 1 ).

  • - 6 4

    _

    LCD (liquid crystal display, LCD)

    , . LCD, , (.. 1x16, 2x20, 4x20, 2x40, 4x40), , ).

    LCD (PowerTip 1602F-B) 2x16, 2 16 . 5x8 (pixels), . , , . , ( - LCD controllers) HDD44780 Hitachi, ROM 240 .

    lcd.h CODEVISION o LCD ,

    . , Codevision C lcd.h, ( help files ) LCD HDD44780. low level functions, , , , (high level functions):

    unsigned char lcd_init(unsigned char lcd_columns) , 0 0. (16, ) LCD. : lcd_init();

    void lcd_clear(void) , 0, 0. : lcd_clear();

    void lcd_gotoxy(unsigned char x, unsigned char y) x y ( 0). : lcd_gotoxy(0,14);

    void lcd_putchar(char c) , ASCII c. : lcd_putchar('f');

    void lcd_puts(char *str) , , str[]. : char msg[]="hello!"; lcd_puts(msg);

  • - 6 5

    void lcd_putsf(char *str) , , Flash. LCD ( . ). : lcd_putsf("T.E.I. Crete");

    , , , () #include , . :

    /* PORTC */ #asm .equ __lcd_port=0x15 #endasm

    /* */ #include

    ( ) 4 Mega16 :

    PORTA 0x1b PORTB 0x18 PORTC 0x15 PORTD 0x12

    lcd.h ( ) Codevision, help files .

    stdlib.h CODEVISION

    LCD lcd.h , , , bytes ASCII . , (.., , , ...), ASCII . , , C, stdlib.h:

    void itoa(int n, char *str) int ( n) ASCII , str[]. , , , n MSB 1, itoa .

    void ltoa(long int n, char *str) long int ( n) ASCII , str[].

    void ftoa(float n, unsigned char decimals, char *str) float ( n) ASCII , str[]. decimals.

    , str[], , .

  • - 6 6

    6.4 LCD

    lcd.h stdlib.h LCD .

    , LCD PORTC ATmega16. ! , !

    #include #include

    #asm .equ __lcd_port=0x15 #endasm

    #include #include

    unsigned int a=102, b=1; char display[6]; void main(void) { DDRD = 0x00; PORTD=0xFF; lcd_init(16); lcd_gotoxy(4,0); lcd_putsf("Hello!"); lcd_gotoxy(0,1); lcd_putsf("Press any button..."); while(PIND==0xFF); while (1) { lcd_clear(); lcd_putsf("a = "); itoa(a,display); lcd_puts(display); lcd_putsf(", b = "); itoa(b,display); lcd_puts(display); lcd_gotoxy(2,1); lcd_putsf("a * b = "); itoa(a*b,display); lcd_puts(display); delay_ms(400); b++; if (b>200) b=0; } } , lcd.h stdlib.h.

    6.5 LCD

    , , 9999 0 ( ), LCD .

  • - 7 1

    A 7

    : _ _

    , . , (stepper motor). _

    . , .. 1,2, 30, 30/1,2 = 25 . PC , , .

    (Permanent Magnet stepping motor). , . . , .

    4

    S1S2S3S4 , .

    90. 45. PM motor 1,2. 2 . :

    switch step SW4 SW3 SW2 SW1

    1 0 0 1 1 2 1 0 0 1 3 1 1 0 0 4 0 1 1 0 1 0 0 1 1

  • - 7 2

    4 . SAA1027 Signetics ( 12 V 0,5 ). 12 V (CMOS Compatible). 12 V 4 . Trigger (pin 15) SAA1027 (o ). Rotation (pin 3) SAA1027, 0 1 . T, 0 pin 2, Reset.

    12 V

    Q1Q2Q3Q4

    10 k

    ToPIA

    VS

    TriggerSetRotation

    TSR

    R =100

    V

    RB

    0.1 F

    SAA1027

    IQ

    RS

    RSStepper motor

    15 4 13 1198

    14

    5 12

    4'4

    3 3'

    6

    23 2 2'

    1 1'

    , Rb , pin 4, ( I ) 4 (Rb = (4Vs /I) 60 ).

    1.8 200 . , 200 z, 60 rpm ( ). , v , f , :

    [rpm]60 0.3

    [Hz]200vfv v ff

    = =

    , 1/ f= , v :

    [rpm]0.3 [sec]

    v

    v=

    11

    [rpm]0.15 [sec]2

    v

    v= =

    1

    , , 1 /2 = .

  • - 7 3

    7.1

    ATmega16, SAA1027. , idc-10 , C . H :

    IDC1

    2

    3

    4

    5

    6

    7

    8

    9

    0

    Pin 9: Vcc, Pin 8: GND , Pin 4: Trigger, Pin 0: Rotation , Pin1: Set_

    , C , :

    PORTC.1 [Set] : ( 0) ( 1) .

    PORTC.0 [Rotation] : (/, 1/0, ).

    PORTC.4 [Trigger] : : Set pin 0, Trigger pin (, ) ( , Rotation pin).

    , , 20 rpm. , PORTC.4 1 = 0.15/20 = 7.5 msec. Timer1 CTC mode OCR1A (. 6), prescaler =1. , OCR1A = = =1 7.5msec1 1 60000 1 59999

    ( / ) 0.125secCK

    N F.

    7.2

    , :

    , interrupts 0 INT1, 20 rpm 80 rpm, 10 rpm.

    SW0 STK200, START/STOP . SW7

    STK200. ( 20 ms) , .

    #1: , OCR1A.

    #2: rid() 3, SW0 SW7.

    v [rpm] 20 30 40 50 60 70 80

    1 [msec] 7.5 1.875

    1 Timer1: ( / )CK

    QN F

    =

    ( FCK = 8Mhz, =1) 60000 15000

    CR1A (=Q-1) 59999 14999

  • - 7 4

    7.3 LCD

    , LCD , .

    : PORT .

  • - 8 1

    A 8

    : _ _

    timers . , () CTC mode Timer0 () (PWM) Timer1. _ TIMER0 - XPONITE - 32 M. AKITAKH

    CTC

    M bits COM00-COM01 TCCR0 CTC Timer0 ( ) OC0

    A hardware( Timer0) CPU

    O OC0 DDRB

    WGM00

    WGM01

    0

    1

    - XPONITE - # M. AKITAKH

    O A OC0

    H OC0 bits COM01 COM00 TCCR0

    COM01

    0

    0

    1

    1

    COM00

    0

    1

    0

    1

    EITOYPIA EOOY KATA THN TAYTIH YKPITH

    OC0

    E OC0

    E 0 OC0

    E 1 OC0

    - XPONITE - # M. AKITAKH

    K

    Y 8 MHz, 20 kHz OC0

    H CTC:

    WGM00

    WGM01

    0

    1

    - XPONITE - # M. AKITAKH

    Y X

    T OC0 25 sec

    X prescaler = 8, TCNT0 8/8 = 1MHz, 1 sec

    E, 25 sec 25

    20 kHz50 sec

    25 sec

    - XPONITE - # M. AKITAKH

    Y X

    M , , FOC :

    FOC=FCK/(2*N*(1+OCR0))

    FCK N prescaler

    (1+OCR0)=25, 24 OCR0

    OCR0

    OCF0

    TCNT0 0 1

    TOP

    TOPTOP-1

    Tim

    er0

    CTC

    mod

    e

    - XPONITE - # M. AKITAKH

    K

    #include

    void main(void){DDRB = 0x08; // set OC0 pin for outputTCNT0 = 0x00; // start timer with 0 in timerOCR0 = 24; // output compare valueTIMSK = 0x00; // no interrupts necessary!TCCR0 = 0b00011010; // CTC mode, prescaler = 8, toggleOC0

    while (1); // thats all!} O hardware

    , , polling interrupts

  • - 8 2

    PWM TIMER1 - XPONITE - # M. AKITAKH

    (PWM)

    pwm

    onoff

    PWM:

    H fpwm = 1/Tpwm

    duty cycle PWM , on/Tpwm ( %)

    fpwm, duty cycle.

    - XPONITE - 88 M. AKITAKH

    Timer1: Phase Correct PWM Mode

    H Phase Correct PWM mode Timer1 : TCNT1 0x0000. () OCR1A/B,

    () OC1A/B TCNT1 TOP,

    0x0000. , , () OCR1A/B,

    () OC1A/B TCNT1 0x0000,

    TOP, .

    5 Phase Correct PWM mode, TOP (. PWM ), : TOP = 0x00FF (8-bit ) TOP = 0x01FF (9-bit ) TOP = 0x03FF (10-bit ) TOP = CR1A ( OCR1A) TOP = ICR1 ( ICR1

    fpwm = FCK / (2TOP)

    - XPONITE - # M. AKITAKH

    Timer1: Phase Correct PWM Mode

    Phase Correct PWM mode

    C1B

    OCR1B

    TOP

    0x00

    OC1B

    OCR1B OCR1B OCR1B

    - XPONITE - # M. AKITAKH

    Timer1: Phase Correct PWM Mode

    O fpwm prescalerN, 8-, 9-, 10-bit FCK = 8Hz:

    8-bit (TOP = 255)

    fpwm = 15.686 kHz

    fpwm = 1.961 kHz

    fpwm = 245 Hz

    fpwm = 61 Hz

    fpwm = 15 Hz

    d.cycle: 0.39%

    9-bit (TOP = 511)

    fpwm = 7.827 kHz

    fpwm = 978.5 Hz

    fpwm = 122 Hz

    fpwm = 31 Hz

    fpwm = 8 Hz

    d.cycle: 0.19%

    10-bit (TOP = 1023)

    fpwm = 3.91 kHz

    fpwm = 489 Hz

    fpwm = 61 Hz

    fpwm = 15 Hz

    fpwm = 4 Hz

    d.cycle: 0.097%

    N

    1

    8

    64

    256

    1024

    , TOP, , duty cycle ( % )

    - XPONITE - # M. AKITAKH

    : TCCR1A/B

    0 0 0 0 10 0 1

    0 0 0 1 00 0 0

    COM11

    0

    0

    1

    1

    COM10

    0

    1

    0

    1

    EITOYPIA EOOY PHASE CORRECT PWM MODE

    OC1

    OC1

    E 0 OC1 , 1 OC1

    E 1 OC1 , 0 OC1

    - XPONITE - 108 M. AKITAKH

    : TCCR1A/B

    0 0 0 0 10 0 1

    0 0 0 1 00 0 0

    4 bits mode Timer1

    Phase correct PWM mode TOP = 8-bit (. )

    - XPONITE - 110 M. AKITAKH

    : TCCR1A/B

    0 0 0 0 10 0 1

    0 0 0 1 00 0 0

    CS10

    0

    1

    0

    1

    0

    1

    0

    1

    CS12

    0

    0

    0

    0

    1

    1

    1

    1

    CS11

    0

    0

    1

    1

    0

    0

    1

    1

    HMA POOIOY

    A M

    System Clock (CK)

    CK/8

    CK/64

    CK/256

    CK/1024

    E

    E

  • - 8 3

    8.1 PWM Timer1

    Phase Correct PWM mode Timer1 5V, OC1B ( PD.4) .

    8-bit Phase Correct PWM mode, prescaler N = 8, PWM FPWM = 1.961kHz , duty cycle OCR1B (, OCR1B = 0, duty cycle 0% OCR1B = 255, duty cycle 100%).

    , SW0-SW3 , duty cycle 0%, 35%, 70% 100%.

    : headers STK200, C ( D, ). #include

    void main(void) { DDRC = 0x00; // PORTC PORTC = 0xFF; // pull-up DDRD.4 = 1; // o OC1B OCR1B = 0; TCCR1A = 0x21; // phase-correct PWM mode, OC1B TCCR1B = 0x02; // prescaler N = 8; while (1) { if(!PINC.0) OCR1B = 0; // duty cycle = 0% if(!PINC.1) OCR1B = 89; // duty cycle = 35% if(!PINC.2) OCR1B = 179; // duty cycle = 70% if(!PINC.3) OCR1B = 255; // duty cycle = 100% } } PWM OCR1B = 179.

    / , ( 256 ) SW7 SW6.

    / Phase Correct PWM mode 9-bit .

  • - 8 4

    , CTC Timer0, FCK, prescaler . :

    FOC=FCK/(2*N*(1+OCR0))

    CS0

    2

    CS0

    1

    CS0

    0 Prescaler (OCR0= 255)

    (OCR0= 0)

    N FL = FCK/ (2*N*256) FL = FCK/ (2*N*1)

    0 0 0 0 - - 0 0 1 1 15,625 kHz 4 MHz 0 1 0 8 1,9531 kHz 0,5 MHz 0 1 1 64 244,14 Hz 62,5 kHz 1 0 0 256 61,035 Hz 15,625 kHz 1 0 1 1024 15,2588 Hz 3,9063 kHz

    FCK = 8Mhz ( STK200)

    , , OCR0 . = 64, ( y-, , ).

  • - 8 5

    8.2 ""

    , () "", STK200 .

    (buzzer), . OC0 ( PB.3) , , , .

    5 , STK200. =64 prescaler, 1,76 kHz ( ) OCR0 :

    FOC=FCK/(2*N*(1+OCR0)) => (1+OCR0) = FCK/(2*N*FOC) =>

    => OCR0 = (8 Mhz / (2*64*1,76 kHz)) - 1 = 34.51 => OCR0 = 35 ( )

    , , 1.76 kHz OC0, SW2 STK200.

    , headers STK200, C ( D, ).

    1

    (z) 1046,50 1174,66 1318,5 1396,91 1567,98 1760,0 1975,53 2093,0 OCR0 (FCK = 8Mhz, =64)

    59 52 46 44 35

    STK200 SW7 SW6 SW5 SW4 SW3 SW2 SW1 SW0

    #include unsigned char n=0,buttons; unsigned char freq[]={59,52,46,44,0,35,0,0};

    void main(void) { DDRC = 0x00; PORTC = 0xFF; // PORTC DDRB = 0x08; // OC0 TCCR0 = 0b00011000; // CTC mode, toggle OC0, prescaler = 0 while (1) { if (PINC != buttons) // { buttons = PINC; switch(buttons) { case 0x7F:n=0;break; // NTO case 0xBF:n=1;break; // case 0xDF:n=2;break; // MI case 0xEF:n=3;break; // case 0xFB:n=5;break; //

    default:n=255;break; // } if (n!=255) // { OCR0 = freq[n]; // TCNT0 = 0x00; TCCR0 = 0b00011011; // prescaler = 64 => Timer } else // { TCCR0 = 0x00; // prescaler = 0 ( Timer) } } }}

  • - 8 6

    , OCR0 , .

    , ("").

  • - 9 1

    A 9

    O /D

    : _ _

    , analog to digital converter (ADC) Tmega16. _ ANALOG TO DIGITAL CONVERTER (ADC)

    H ADC ATmega16 10-bit. M 8 - (single-ended) . - A GND.

    O ADC AVR (successive approximation

    ADC), . 10-bit ADC,

    50 kHz < FADC < 200 kHz

    (prescaler) ADC, ADC . prescaler, , 2, 4, 8, 16, 32, 64 128 (. ADCSRA ). ADC ( FCK), : (i) FCK 200 kHz, (ii) prescaler , , (iii) bits ADPS2:0 ADCSRA.

    ADC

    bit DEN ADCSRA ADC 1. H - 1 bit ADSC ADCSRA, 0 . , bit ADATE ADCSRA 1, , bits ADTS2:0 SFIOR.

    M 13 ADC 1 bit ADIF ADCSRA. interrupt ( 1 bit ADIE ADCSRA), ISR .

    T ADCW CodeVision C

    ADCW = 210VIN /VREF

    VIN VREF . ADCW=0x000 (GND), ADCW=0x3FF VREF 1 LSB.

  • - 9 2

    ADC Multiplexer Selection Register ADMUX

    Bit 7 6 5 4 3 2 1 0 REFS1 REFS0 ADLAR MUX4 MUX3 MUX2 MUX1 MUX0

    Read/Write W R/W R R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0

    ADMUX

    n (0

  • - 9 3

    9.2

    , , ADC, (0-5V) PA.3. 4 Volt LED0-1 STK200, 1 Volt LED6-7, 1-4 Volt LED3-4. , ( ) PA.3.

    #include #define VREF 5 // 5 Volt

    interrupt [ADC_INT] void adc_isr(void) { unsigned int adc_data;

    adc_data = ADCW; // adc_data if (adc_data > 4*1024/VREF) // ADC // 4 Volt PORTB = 0xFC;

    else if (adc_data < 1*1024/VREF) // ADC // 1 Volt PORTB = 0x3F;

    else PORTB = 0xE7;

    ADCSRA |= 0x40; // }

    void main(void) { PORTB = 0xFF; DDRB = 0xFF; ADMUX = 0x43; // ADC: AVCC // PA.3 ADCSRA = 0x8E; ADCSRA |= 0x40; //

    #asm("sei") while (1); }

    ( /sec) A/D .

  • - 9 4

    9.3

    . , ADC, duty cycle PWM . PWM 8.

    9.4

    (0-5V) ADC LCD ., .

    SW0-SW7 , .

  • - 10 1

    A 10

    AYXPONH EIPIAKH IAYNEH

    :

    _ , CodeVision C compiler.

    _ AYXPONH EIPIAKH EIKOINNIA

    (full duplex) (PC, , ...) (Rx, Tx) Gnd. , , hardware . , PC, TTL RS-232 PC. (.. 202 Maxim) TTL RS-232, PC RS-232 TTL. STK200 , RS-232 PC .

    STK200

    ATmega16

    MAX202RS232

    H MONAA USART TOY ATmega16

    To USART (Universal Synchronous Asynchronous Receiver-Transmitter) ATmega16 ( bits, start stop bits), , / . , .

    , :

    1. data bits ( 8) 2. stop bits (1, 1.5 2 - 1 stop bit) 3. (parity bit),

    ( , ). 4. (baud rate)

    T :

    USART Control Register C UCSRC Bit 7 6 5 4 3 2 1 0

    URSEL UMSEL UPM1 UPM2 USBS UCSZ1 UCSZ0 UCPOL Read/Write W R/W R/W R/W R/W R/W R/W R/W Initial Value 1 0 0 0 0 1 1 0

    UCSRC

    O bits UCSRC : A USART, 8 data bits, 1 start bit, 1 stop bit, no parity bit. , , .

  • - 10 2

    USART Control Register B UCSRB Bit 7 6 5 4 3 2 1 0

    RXCIE TXCIE UDRIE RXEN TXEN UCSZ2 RXB8 TXB8 Read/Write W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0

    UCSRB

    T bits RXEN TXEN ( 1) . T bits RXCIE, TXCIE UDRIE (bits5:7) ( 1) interrupts. stdio CodeVision C interrupts, bits 0.

    USART Baud Rate Register UBRR UBRR 12-bit ( 0 4095), baud rate , :

    UBRR = (FCK / (16b)) 1

    FCK ( Hz) b baud rate ( bit , bps). E, .. FCK = 8MHz b=9600bps, 8106/(169600) 1 = 51,0833 UBRR = 51. baud rate (, 0.2%), , , . mega16 12 bit UBRR UBRRH ( most significant byte) UBRRL ( least significant byte). UBRR 16-bit (4 ) UBRRH 2 ( ) , UBRRL . ,

    UBRR = 51 = 0x0033

    , UBRRH = 0x00 UBRRL = 0x33.

    H BIBIOHKH STDIO TH CODEVISION C

    H CodeVision C stdio.h C, (.. getchar, gets, scanf) (.. putchar, puts, printf, sprintf) . A , ( PC). , , (.. putsf) Flash, .

    H CodeVision, , , .

    #include #include // void main(void) { char your_name[11]; // 10+1 UBRRH = 0x00; // baud rate UBRR UBRRL = 0x33; // (9600 bps FCK = 8MHz) UCSRB = 0x18; // UART (RXEN + TXEN) putsf("Enter your name and press return.\r"); // putsf putsf("(only 10 characters allowed)\r"); // flash gets(your_name,10); // 10 printf("\n Hi %s!\n\r",your_name); // (SRAM) while(1);

    }

  • - 10 3

    stdio (polling), interrupts. , (blocking functions) . A , , , interrupts.

    , , ( ) .

    TERMINAL TOOL CODEVISION CodeVision

    (Terminal tool) , / ASCII / . erminal tool CodeVision Tools, , :

    , Terminal tool ( Terminal Settings..) . , 9600bps 8 data bits, 1 start bit, 1 stop bit, no parity bit, Terminal Settings :

    ASCII stdio / ASCII, :

    Char Dec Hex Char Dec Hex Char Dec Hex Char Dec Hex nul 0 0x00 sp 32 0x20 @ 64 0x40 ` 96 0x60 soh 1 0x01 ! 33 0x21 A 65 0x41 a 97 0x61 stx 2 0x02 " 34 0x22 B 66 0x42 b 98 0x62 etx 3 0x03 # 35 0x23 C 67 0x43 c 99 0x63 eot 4 0x04 $ 36 0x24 D 68 0x44 d 100 0x64 enq 5 0x05 % 37 0x25 E 69 0x45 e 101 0x65 ack 6 0x06 & 38 0x26 F 70 0x46 f 102 0x66 bel 7 0x07 ' 39 0x27 G 71 0x47 g 103 0x67 bs 8 0x08 ( 40 0x28 H 72 0x48 h 104 0x68 ht 9 0x09 ) 41 0x29 I 73 0x49 i 105 0x69 lf 10 0x0a * 42 0x2a J 74 0x4a j 106 0x6a

    vt 11 0x0b + 43 0x2b K 75 0x4b k 107 0x6b ff 12 0x0c , 44 0x2c L 76 0x4c l 108 0x6c cr 13 0x0d - 45 0x2d M 77 0x4d m 109 0x6d so 14 0x0e . 46 0x2e N 78 0x4e n 110 0x6e si 15 0x0f / 47 0x2f O 79 0x4f o 111 0x6f

    dle 16 0x10 0 48 0x30 P 80 0x50 p 112 0x70 dc1 17 0x11 1 49 0x31 Q 81 0x51 q 113 0x71 dc2 18 0x12 2 50 0x32 R 82 0x52 r 114 0x72 dc3 19 0x13 3 51 0x33 S 83 0x53 s 115 0x73 dc4 20 0x14 4 52 0x34 T 84 0x54 t 116 0x74 nak 21 0x15 5 53 0x35 U 85 0x55 u 117 0x75 syn 22 0x16 6 54 0x36 V 86 0x56 v 118 0x76 etb 23 0x17 7 55 0x37 W 87 0x57 w 119 0x77 can 24 0x18 8 56 0x38 X 88 0x58 x 120 0x78 em 25 0x19 9 57 0x39 Y 89 0x59 y 121 0x79 sub 26 0x1a : 58 0x3a Z 90 0x5a z 122 0x7a esc 27 0x1b ; 59 0x3b [ 91 0x5b { 123 0x7b

    fs 28 0x1c < 60 0x3c \ 92 0x5c | 124 0x7c gs 29 0x1d = 61 0x3d ] 93 0x5d } 125 0x7d rs 30 0x1e > 62 0x3e ^ 94 0x5e ~ 126 0x7e us 31 0x1f ? 63 0x3f _ 95 0x5f del 127 0x7f

  • - 10 4

    10.1

    , , ( / ) LEDs STK200.

    To stdio :

    printf(""): .

    getchar(): 8-bit , ASCII .

    #include #include

    void main(void) { unsigned char k; UCSRB = 0x18; // UART (RXEN + TXEN) UBRRH = 0x00; // baud rate UBRRL = 0x33; // (9600 bps Fck = 8MHz) DDRB = 0xFF; PORTB = 0xFF;

    while(1) { printf("\n\r Please select: \n\r"); printf("(0) Toggle LED0 \n\r"); printf("(1) Toggle LED1 \n\r"); printf("(6) Toggle LED6 \n\r"); printf("(7) Toggle LED7 \n\r"); printf("(x) Switch off all LEDs \n\r");

    k=getchar(); // // switch(k) { case '0': PORTB.0 = ~PORTB.0; break; case '1': PORTB.1 = ~PORTB.1; break; case '6': PORTB.6 = ~PORTB.6; break; case '7': PORTB.7 = ~PORTB.7; break; case 'x': PORTB=0xFF; break; } } } , LED, LED.

    , PC 19200bps.

  • - 10 5

    10.2 ,

    , ( 1 99 sec) . , . CTC-OCR1A mode Timer1, 6.

    stdio :

    gets(inStr,m): m , inStr.

    atoi(numStr): numStr .

    , printf("\r %02i",sec); sec, .

    #include #include #include unsigned char sec; interrupt [TIM1_COMPA] void timer1_compa_isr(void) { sec--; printf("\r %02i",sec); if (sec==0) { PORTB = 0x00; TCCR1B = 0x00; printf("\n\n\r Done!"); } } void main(void) { char numStr[4]; DDRB = 0xFF; PORTB = 0x00; UCSRB = 0x18; // UART (RXEN + TXEN) UBRRH = 0x00; // baud rate UBRRL = 0x19; // (19200 bps Fck = 8MHz)

    printf("\n\n\r Microcontroller reset \n\r"); printf("\r Countdown time (1-99 sec): "); gets(numStr,3); sec = atoi(numStr); printf("\n\n\r secs to go: \n"); printf("\r %02i",sec); OCR1A = 31249; TCCR1B = 0x0C; // CTC-OCR1A mode, prescaler = 256 TIMSK = 0x10; // interrupt OCR1A #asm("sei") while(1); } , 1 999 sec.

  • - 10 6

    10.3 A/D .

    , , A/D , :

    , (0-7) A/D.

    , A/D , PC.

    #include #include interrupt [ADC_INT] void adc_isr(void) { unsigned int adc_data; adc_data = ADCW; // adc_data printf("%04i\n\r",adc_data); ADCSRA |= 0x40; // } void main(void) { char k; PORTB = 0xFF; DDRB = 0xFF; UCSRB = 0x18; // UART (RXEN + TXEN) UBRRH = 0x00; // baud rate UBRRL = 0x19; // (19200 bps Fck = 8MHz) printf("\n\n\r Microcontroller reset \n\r"); printf("\r Read from ADC channel (0-7): "); k=getchar()-'0'; ADMUX = k; ADMUX |= 0x40; ADCSRA = 0x8E; ADCSRA |= 0x40; // #asm("sei") while(1); }

  • -

    ASCII

    Char Dec Hex Char Dec Hex Char Dec Hex Char Dec Hex

    nul 0 0x00 sp 32 0x20 @ 64 0x40 ` 96 0x60 soh 1 0x01 ! 33 0x21 A 65 0x41 a 97 0x61 stx 2 0x02 " 34 0x22 B 66 0x42 b 98 0x62 etx 3 0x03 # 35 0x23 C 67 0x43 c 99 0x63 eot 4 0x04 $ 36 0x24 D 68 0x44 d 100 0x64 enq 5 0x05 % 37 0x25 E 69 0x45 e 101 0x65 ack 6 0x06 & 38 0x26 F 70 0x46 f 102 0x66 bel 7 0x07 ' 39 0x27 G 71 0x47 g 103 0x67 bs 8 0x08 ( 40 0x28 H 72 0x48 h 104 0x68 ht 9 0x09 ) 41 0x29 I 73 0x49 i 105 0x69 lf 10 0x0a * 42 0x2a J 74 0x4a j 106 0x6a

    vt 11 0x0b + 43 0x2b K 75 0x4b k 107 0x6b ff 12 0x0c , 44 0x2c L 76 0x4c l 108 0x6c cr 13 0x0d - 45 0x2d M 77 0x4d m 109 0x6d so 14 0x0e . 46 0x2e N 78 0x4e n 110 0x6e si 15 0x0f / 47 0x2f O 79 0x4f o 111 0x6f

    dle 16 0x10 0 48 0x30 P 80 0x50 p 112 0x70 dc1 17 0x11 1 49 0x31 Q 81 0x51 q 113 0x71 dc2 18 0x12 2 50 0x32 R 82 0x52 r 114 0x72 dc3 19 0x13 3 51 0x33 S 83 0x53 s 115 0x73 dc4 20 0x14 4 52 0x34 T 84 0x54 t 116 0x74 nak 21 0x15 5 53 0x35 U 85 0x55 u 117 0x75 syn 22 0x16 6 54 0x36 V 86 0x56 v 118 0x76 etb 23 0x17 7 55 0x37 W 87 0x57 w 119 0x77 can 24 0x18 8 56 0x38 X 88 0x58 x 120 0x78 em 25 0x19 9 57 0x39 Y 89 0x59 y 121 0x79 sub 26 0x1a : 58 0x3a Z 90 0x5a z 122 0x7a esc 27 0x1b ; 59 0x3b [ 91 0x5b { 123 0x7b

    fs 28 0x1c < 60 0x3c \ 92 0x5c | 124 0x7c gs 29 0x1d = 61 0x3d ] 93 0x5d } 125 0x7d rs 30 0x1e > 62 0x3e ^ 94 0x5e ~ 126 0x7e us 31 0x1f ? 63 0x3f _ 95 0x5f del 127 0x7f

  • -

    TIMER0

    O FCK = 8 Hz

    Prescaler Timer0

    N f0 = FCK/N t0 = 1/f0 T0 = 256 t0

    0 ("")

    1 8,00 MHz 0,125 sec 32 sec

    40 t0 = 5 sec 80 t0 = 10 sec 120 t0 = 15 sec 128 t0 = 16 sec 240 t0 = 30 sec

    8 1,00 MHz 1 sec 256 sec

    30 t0 = 30 sec 50 t0 = 50 sec 100 t0 = 100 sec 200 t0 = 200 sec 250 t0 = 250 sec

    64 125 kHz 8 sec 2,048 msec

    25 t0 = 200 sec 100 t0 = 800 sec 125 t0 = 1 msec 200 t0 = 1.6 msec 250 t0 = 2 msec

    256 31,250 kHz 32 sec 8,192 msec

    25 t0 = 0.8 msec 50 t0 = 1.6 msec 125 t0 = 4 msec 200 t0 = 6.4 msec 250 t0 = 8 msec

    1024 7,8125 kHz 128 sec 32,768 msec

    25 t0 = 3.2 msec 125 t0 = 16 msec 175 t0 = 22.4 msec 200 t0 = 25.6 msec 250 t0 = 32 msec

  • -

    TIMER1

    FCK = 8 Hz

    Prescaler Timer1

    f1 = FCK/N t1 = 1/f1 T1 = 65536 t1

    0 ("")

    1 8,00 MHz 0,125 sec 8,192 msec

    8000 t1 = 1 msec 16000 t1 = 2 msec 24000 t1 = 3 msec 40000 t1 = 5 msec 64000 t1 = 8 msec

    8 1,00 MHz 1 sec 65,536 msec

    1000 t1 = 1 msec 5000 t1 = 5 msec 10000 t1 = 10 msec 30000 t1 = 30 msec 50000 t1 = 50 msec 65000 t1 = 65 msec

    64 125 kHz 8 sec 0,52488 sec

    12500 t1 = 0.1 sec 15625 t1 = 0.125 sec 31250 t1 = 0.25 sec 37500 t1 = 0.3 sec 50000 t1 = 0.4 sec 62500 t1 = 0.5 sec

    256 31,250 kHz 32 sec 2,097152 sec

    12500 t1 = 0.4 sec 15625 t1 = 0.5 sec 31250 t1 = 1 sec 46875 t1 = 1.5 sec 62500 t1 = 2 sec

    1024 7,8125 kHz 128 sec 8,388608 sec

    12500 t1 = 1.6 sec 15625 t1 = 2 sec 46875 t1 = 6 sec 62500 t1 = 8 sec

  • -

    KA BAUD RATE

    FCK = 8 Mhz Baud Rate UBRR

    %

    2400 207 0.2 4800 103 0.2 9600 51 0.2 14400 34 0.8 19200 25 0.2 28800 16 2.1 38400 12 0.2 56000 8 0.8 57600 8 3.7 76800 6 7.5 115200 3 7.8 230400 1 7.8

    , ( ) () baud rate ( UBRR) 1%.

  • -

    PINOUT AVR ATmega16

    cover.pdfaskisi01_HLEK.pdfaskisi02_HLEK.pdfaskisi03_HLEK.pdfaskisi04_HLEK.pdfaskisi05_HLEK.pdfaskisi06_HLEK.pdfaskisi07_HLEK.pdfaskisi08_HLEK.pdfaskisi09_HLEK.pdfaskisi10_HLEK.pdfPARARTIMA.pdf

    /ColorImageDict > /JPEG2000ColorACSImageDict > /JPEG2000ColorImageDict > /AntiAliasGrayImages false /CropGrayImages true /GrayImageMinResolution 300 /GrayImageMinResolutionPolicy /OK /DownsampleGrayImages true /GrayImageDownsampleType /Bicubic /GrayImageResolution 300 /GrayImageDepth -1 /GrayImageMinDownsampleDepth 2 /GrayImageDownsampleThreshold 1.50000 /EncodeGrayImages true /GrayImageFilter /DCTEncode /AutoFilterGrayImages true /GrayImageAutoFilterStrategy /JPEG /GrayACSImageDict > /GrayImageDict > /JPEG2000GrayACSImageDict > /JPEG2000GrayImageDict > /AntiAliasMonoImages false /CropMonoImages true /MonoImageMinResolution 1200 /MonoImageMinResolutionPolicy /OK /DownsampleMonoImages true /MonoImageDownsampleType /Bicubic /MonoImageResolution 1200 /MonoImageDepth -1 /MonoImageDownsampleThreshold 1.50000 /EncodeMonoImages true /MonoImageFilter /CCITTFaxEncode /MonoImageDict > /AllowPSXObjects false /CheckCompliance [ /None ] /PDFX1aCheck false /PDFX3Check false /PDFXCompliantPDFOnly false /PDFXNoTrimBoxError true /PDFXTrimBoxToMediaBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXSetBleedBoxToMediaBox true /PDFXBleedBoxToTrimBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXOutputIntentProfile () /PDFXOutputConditionIdentifier () /PDFXOutputCondition () /PDFXRegistryName () /PDFXTrapped /False

    /Description > /Namespace [ (Adobe) (Common) (1.0) ] /OtherNamespaces [ > /FormElements false /GenerateStructure true /IncludeBookmarks false /IncludeHyperlinks false /IncludeInteractive false /IncludeLayers false /IncludeProfiles true /MultimediaHandling /UseObjectSettings /Namespace [ (Adobe) (CreativeSuite) (2.0) ] /PDFXOutputIntentProfileSelector /NA /PreserveEditing true /UntaggedCMYKHandling /LeaveUntagged /UntaggedRGBHandling /LeaveUntagged /UseDocumentBleed false >> ]>> setdistillerparams> setpagedevice

    /ColorImageDict > /JPEG2000ColorACSImageDict > /JPEG2000ColorImageDict > /AntiAliasGrayImages false /CropGrayImages true /GrayImageMinResolution 300 /GrayImageMinResolutionPolicy /OK /DownsampleGrayImages true /GrayImageDownsampleType /Bicubic /GrayImageResolution 300 /GrayImageDepth -1 /GrayImageMinDownsampleDepth 2 /GrayImageDownsampleThreshold 1.50000 /EncodeGrayImages true /GrayImageFilter /DCTEncode /AutoFilterGrayImages true /GrayImageAutoFilterStrategy /JPEG /GrayACSImageDict > /GrayImageDict > /JPEG2000GrayACSImageDict > /JPEG2000GrayImageDict > /AntiAliasMonoImages false /CropMonoImages true /MonoImageMinResolution 1200 /MonoImageMinResolutionPolicy /OK /DownsampleMonoImages true /MonoImageDownsampleType /Bicubic /MonoImageResolution 1200 /MonoImageDepth -1 /MonoImageDownsampleThreshold 1.50000 /EncodeMonoImages true /MonoImageFilter /CCITTFaxEncode /MonoImageDict > /AllowPSXObjects false /CheckCompliance [ /None ] /PDFX1aCheck false /PDFX3Check false /PDFXCompliantPDFOnly false /PDFXNoTrimBoxError true /PDFXTrimBoxToMediaBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXSetBleedBoxToMediaBox true /PDFXBleedBoxToTrimBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXOutputIntentProfile () /PDFXOutputConditionIdentifier () /PDFXOutputCondition () /PDFXRegistryName () /PDFXTrapped /False

    /Description > /Namespace [ (Adobe) (Common) (1.0) ] /OtherNamespaces [ > /FormElements false /GenerateStructure true /IncludeBookmarks false /IncludeHyperlinks false /IncludeInteractive false /IncludeLayers false /IncludeProfiles true /MultimediaHandling /UseObjectSettings /Namespace [ (Adobe) (CreativeSuite) (2.0) ] /PDFXOutputIntentProfileSelector /NA /PreserveEditing true /UntaggedCMYKHandling /LeaveUntagged /UntaggedRGBHandling /LeaveUntagged /UseDocumentBleed false >> ]>> setdistillerparams> setpagedevice

    /ColorImageDict > /JPEG2000ColorACSImageDict > /JPEG2000ColorImageDict > /AntiAliasGrayImages false /CropGrayImages true /GrayImageMinResolution 300 /GrayImageMinResolutionPolicy /OK /DownsampleGrayImages true /GrayImageDownsampleType /Bicubic /GrayImageResolution 300 /GrayImageDepth -1 /GrayImageMinDownsampleDepth 2 /GrayImageDownsampleThreshold 1.50000 /EncodeGrayImages true /GrayImageFilter /DCTEncode /AutoFilterGrayImages true /GrayImageAutoFilterStrategy /JPEG /GrayACSImageDict > /GrayImageDict > /JPEG2000GrayACSImageDict > /JPEG2000GrayImageDict > /AntiAliasMonoImages false /CropMonoImages true /MonoImageMinResolution 1200 /MonoImageMinResolutionPolicy /OK /DownsampleMonoImages true /MonoImageDownsampleType /Bicubic /MonoImageResolution 1200 /MonoImageDepth -1 /MonoImageDownsampleThreshold 1.50000 /EncodeMonoImages true /MonoImageFilter /CCITTFaxEncode /MonoImageDict > /AllowPSXObjects false /CheckCompliance [ /None ] /PDFX1aCheck false /PDFX3Check false /PDFXCompliantPDFOnly false /PDFXNoTrimBoxError true /PDFXTrimBoxToMediaBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXSetBleedBoxToMediaBox true /PDFXBleedBoxToTrimBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXOutputIntentProfile () /PDFXOutputConditionIdentifier () /PDFXOutputCondition () /PDFXRegistryName () /PDFXTrapped /False

    /Description > /Namespace [ (Adobe) (Common) (1.0) ] /OtherNamespaces [ > /FormElements false /GenerateStructure true /IncludeBookmarks false /IncludeHyperlinks false /IncludeInteractive false /IncludeLayers false /IncludeProfiles true /MultimediaHandling /UseObjectSettings /Namespace [ (Adobe) (CreativeSuite) (2.0) ] /PDFXOutputIntentProfileSelector /NA /PreserveEditing true /UntaggedCMYKHandling /LeaveUntagged /UntaggedRGBHandling /LeaveUntagged /UseDocumentBleed false >> ]>> setdistillerparams> setpagedevice

    /ColorImageDict > /JPEG2000ColorACSImageDict > /JPEG2000ColorImageDict > /AntiAliasGrayImages false /CropGrayImages true /GrayImageMinResolution 300 /GrayImageMinResolutionPolicy /OK /DownsampleGrayImages true /GrayImageDownsampleType /Bicubic /GrayImageResolution 300 /GrayImageDepth -1 /GrayImageMinDownsampleDepth 2 /GrayImageDownsampleThreshold 1.50000 /EncodeGrayImages true /GrayImageFilter /DCTEncode /AutoFilterGrayImages true /GrayImageAutoFilterStrategy /JPEG /GrayACSImageDict > /GrayImageDict > /JPEG2000GrayACSImageDict > /JPEG2000GrayImageDict > /AntiAliasMonoImages false /CropMonoImages true /MonoImageMinResolution 1200 /MonoImageMinResolutionPolicy /OK /DownsampleMonoImages true /MonoImageDownsampleType /Bicubic /MonoImageResolution 1200 /MonoImageDepth -1 /MonoImageDownsampleThreshold 1.50000 /EncodeMonoImages true /MonoImageFilter /CCITTFaxEncode /MonoImageDict > /AllowPSXObjects false /CheckCompliance [ /None ] /PDFX1aCheck false /PDFX3Check false /PDFXCompliantPDFOnly false /PDFXNoTrimBoxError true /PDFXTrimBoxToMediaBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXSetBleedBoxToMediaBox true /PDFXBleedBoxToTrimBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXOutputIntentProfile () /PDFXOutputConditionIdentifier () /PDFXOutputCondition () /PDFXRegistryName () /PDFXTrapped /False

    /Description > /Namespace [ (Adobe) (Common) (1.0) ] /OtherNamespaces [ > /FormElements false /GenerateStructure true /IncludeBookmarks false /IncludeHyperlinks false /IncludeInteractive false /IncludeLayers false /IncludeProfiles true /MultimediaHandling /UseObjectSettings /Namespace [ (Adobe) (CreativeSuite) (2.0) ] /PDFXOutputIntentProfileSelector /NA /PreserveEditing true /UntaggedCMYKHandling /LeaveUntagged /UntaggedRGBHandling /LeaveUntagged /UseDocumentBleed false >> ]>> setdistillerparams> setpagedevice

    /ColorImageDict > /JPEG2000ColorACSImageDict > /JPEG2000ColorImageDict > /AntiAliasGrayImages false /CropGrayImages true /GrayImageMinResolution 300 /GrayImageMinResolutionPolicy /OK /DownsampleGrayImages true /GrayImageDownsampleType /Bicubic /GrayImageResolution 300 /GrayImageDepth -1 /GrayImageMinDownsampleDepth 2 /GrayImageDownsampleThreshold 1.50000 /EncodeGrayImages true /GrayImageFilter /DCTEncode /AutoFilterGrayImages true /GrayImageAutoFilterStrategy /JPEG /GrayACSImageDict > /GrayImageDict > /JPEG2000GrayACSImageDict > /JPEG2000GrayImageDict > /AntiAliasMonoImages false /CropMonoImages true /MonoImageMinResolution 1200 /MonoImageMinResolutionPolicy /OK /DownsampleMonoImages true /MonoImageDownsampleType /Bicubic /MonoImageResolution 1200 /MonoImageDepth -1 /MonoImageDownsampleThreshold 1.50000 /EncodeMonoImages true /MonoImageFilter /CCITTFaxEncode /MonoImageDict > /AllowPSXObjects false /CheckCompliance [ /None ] /PDFX1aCheck false /PDFX3Check false /PDFXCompliantPDFOnly false /PDFXNoTrimBoxError true /PDFXTrimBoxToMediaBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXSetBleedBoxToMediaBox true /PDFXBleedBoxToTrimBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXOutputIntentProfile () /PDFXOutputConditionIdentifier () /PDFXOutputCondition () /PDFXRegistryName () /PDFXTrapped /False

    /Description > /Namespace [ (Adobe) (Common) (1.0) ] /OtherNamespaces [ > /FormElements false /GenerateStructure true /IncludeBookmarks false /IncludeHyperlinks false /IncludeInteractive false /IncludeLayers false /IncludeProfiles true /MultimediaHandling /UseObjectSettings /Namespace [ (Adobe) (CreativeSuite) (2.0) ] /PDFXOutputIntentProfileSelector /NA /PreserveEditing true /UntaggedCMYKHandling /LeaveUntagged /UntaggedRGBHandling /LeaveUntagged /UseDocumentBleed false >> ]>> setdistillerparams> setpagedevice

    /ColorImageDict > /JPEG2000ColorACSImageDict > /JPEG2000ColorImageDict > /AntiAliasGrayImages false /CropGrayImages true /GrayImageMinResolution 300 /GrayImageMinResolutionPolicy /OK /DownsampleGrayImages true /GrayImageDownsampleType /Bicubic /GrayImageResolution 300 /GrayImageDepth -1 /GrayImageMinDownsampleDepth 2 /GrayImageDownsampleThreshold 1.50000 /EncodeGrayImages true /GrayImageFilter /DCTEncode /AutoFilterGrayImages true /GrayImageAutoFilterStrategy /JPEG /GrayACSImageDict > /GrayImageDict > /JPEG2000GrayACSImageDict > /JPEG2000GrayImageDict > /AntiAliasMonoImages false /CropMonoImages true /MonoImageMinResolution 1200 /MonoImageMinResolutionPolicy /OK /DownsampleMonoImages true /MonoImageDownsampleType /Bicubic /MonoImageResolution 1200 /MonoImageDepth -1 /MonoImageDownsampleThreshold 1.50000 /EncodeMonoImages true /MonoImageFilter /CCITTFaxEncode /MonoImageDict > /AllowPSXObjects false /CheckCompliance [ /None ] /PDFX1aCheck false /PDFX3Check false /PDFXCompliantPDFOnly false /PDFXNoTrimBoxError true /PDFXTrimBoxToMediaBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXSetBleedBoxToMediaBox true /PDFXBleedBoxToTrimBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXOutputIntentProfile () /PDFXOutputConditionIdentifier () /PDFXOutputCondition () /PDFXRegistryName () /PDFXTrapped /False

    /Description > /Namespace [ (Adobe) (Common) (1.0) ] /OtherNamespaces [ > /FormElements false /GenerateStructure true /IncludeBookmarks false /IncludeHyperlinks false /IncludeInteractive false /IncludeLayers false /IncludeProfiles true /MultimediaHandling /UseObjectSettings /Namespace [ (Adobe) (CreativeSuite) (2.0) ] /PDFXOutputIntentProfileSelector /NA /PreserveEditing true /UntaggedCMYKHandling /LeaveUntagged /UntaggedRGBHandling /LeaveUntagged /UseDocumentBleed false >> ]>> setdistillerparams> setpagedevice

    /ColorImageDict > /JPEG2000ColorACSImageDict > /JPEG2000ColorImageDict > /AntiAliasGrayImages false /CropGrayImages true /GrayImageMinResolution 300 /GrayImageMinResolutionPolicy /OK /DownsampleGrayImages true /GrayImageDownsampleType /Bicubic /GrayImageResolution 300 /GrayImageDepth -1 /GrayImageMinDownsampleDepth 2 /GrayImageDownsampleThreshold 1.50000 /EncodeGrayImages true /GrayImageFilter /DCTEncode /AutoFilterGrayImages true /GrayImageAutoFilterStrategy /JPEG /GrayACSImageDict > /GrayImageDict > /JPEG2000GrayACSImageDict > /JPEG2000GrayImageDict > /AntiAliasMonoImages false /CropMonoImages true /MonoImageMinResolution 1200 /MonoImageMinResolutionPolicy /OK /DownsampleMonoImages true /MonoImageDownsampleType /Bicubic /MonoImageResolution 1200 /MonoImageDepth -1 /MonoImageDownsampleThreshold 1.50000 /EncodeMonoImages true /MonoImageFilter /CCITTFaxEncode /MonoImageDict > /AllowPSXObjects false /CheckCompliance [ /None ] /PDFX1aCheck false /PDFX3Check false /PDFXCompliantPDFOnly false /PDFXNoTrimBoxError true /PDFXTrimBoxToMediaBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXSetBleedBoxToMediaBox true /PDFXBleedBoxToTrimBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXOutputIntentProfile () /PDFXOutputConditionIdentifier () /PDFXOutputCondition () /PDFXRegistryName () /PDFXTrapped /False

    /Description > /Namespace [ (Adobe) (Common) (1.0) ] /OtherNamespaces [ > /FormElements false /GenerateStructure true /IncludeBookmarks false /IncludeHyperlinks false /IncludeInteractive false /IncludeLayers false /IncludeProfiles true /MultimediaHandling /UseObjectSettings /Namespace [ (Adobe) (CreativeSuite) (2.0) ] /PDFXOutputIntentProfileSelector /NA /PreserveEditing true /UntaggedCMYKHandling /LeaveUntagged /UntaggedRGBHandling /LeaveUntagged /UseDocumentBleed false >> ]>> setdistillerparams> setpagedevice

    /ColorImageDict > /JPEG2000ColorACSImageDict > /JPEG2000ColorImageDict > /AntiAliasGrayImages false /CropGrayImages true /GrayImageMinResolution 300 /GrayImageMinResolutionPolicy /OK /DownsampleGrayImages true /GrayImageDownsampleType /Bicubic /GrayImageResolution 300 /GrayImageDepth -1 /GrayImageMinDownsampleDepth 2 /GrayImageDownsampleThreshold 1.50000 /EncodeGrayImages true /GrayImageFilter /DCTEncode /AutoFilterGrayImages true /GrayImageAutoFilterStrategy /JPEG /GrayACSImageDict > /GrayImageDict > /JPEG2000GrayACSImageDict > /JPEG2000GrayImageDict > /AntiAliasMonoImages false /CropMonoImages true /MonoImageMinResolution 1200 /MonoImageMinResolutionPolicy /OK /DownsampleMonoImages true /MonoImageDownsampleType /Bicubic /MonoImageResolution 1200 /MonoImageDepth -1 /MonoImageDownsampleThreshold 1.50000 /EncodeMonoImages true /MonoImageFilter /CCITTFaxEncode /MonoImageDict > /AllowPSXObjects false /CheckCompliance [ /None ] /PDFX1aCheck false /PDFX3Check false /PDFXCompliantPDFOnly false /PDFXNoTrimBoxError true /PDFXTrimBoxToMediaBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXSetBleedBoxToMediaBox true /PDFXBleedBoxToTrimBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXOutputIntentProfile () /PDFXOutputConditionIdentifier () /PDFXOutputCondition () /PDFXRegistryName () /PDFXTrapped /False

    /Description > /Namespace [ (Adobe) (Common) (1.0) ] /OtherNamespaces [ > /FormElements false /GenerateStructure true /IncludeBookmarks false /IncludeHyperlinks false /IncludeInteractive false /IncludeLayers false /IncludeProfiles true /MultimediaHandling /UseObjectSettings /Namespace [ (Adobe) (CreativeSuite) (2.0) ] /PDFXOutputIntentProfileSelector /NA /PreserveEditing true /UntaggedCMYKHandling /LeaveUntagged /UntaggedRGBHandling /LeaveUntagged /UseDocumentBleed false >> ]>> setdistillerparams> setpagedevice

    /ColorImageDict > /JPEG2000ColorACSImageDict > /JPEG2000ColorImageDict > /AntiAliasGrayImages false /CropGrayImages true /GrayImageMinResolution 300 /GrayImageMinResolutionPolicy /OK /DownsampleGrayImages true /GrayImageDownsampleType /Bicubic /GrayImageResolution 300 /GrayImageDepth -1 /GrayImageMinDownsampleDepth 2 /GrayImageDownsampleThreshold 1.50000 /EncodeGrayImages true /GrayImageFilter /DCTEncode /AutoFilterGrayImages true /GrayImageAutoFilterStrategy /JPEG /GrayACSImageDict > /GrayImageDict > /JPEG2000GrayACSImageDict > /JPEG2000GrayImageDict > /AntiAliasMonoImages false /CropMonoImages true /MonoImageMinResolution 1200 /MonoImageMinResolutionPolicy /OK /DownsampleMonoImages true /MonoImageDownsampleType /Bicubic /MonoImageResolution 1200 /MonoImageDepth -1 /MonoImageDownsampleThreshold 1.50000 /EncodeMonoImages true /MonoImageFilter /CCITTFaxEncode /MonoImageDict > /AllowPSXObjects false /CheckCompliance [ /None ] /PDFX1aCheck false /PDFX3Check false /PDFXCompliantPDFOnly false /PDFXNoTrimBoxError true /PDFXTrimBoxToMediaBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXSetBleedBoxToMediaBox true /PDFXBleedBoxToTrimBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXOutputIntentProfile () /PDFXOutputConditionIdentifier () /PDFXOutputCondition () /PDFXRegistryName () /PDFXTrapped /False

    /Description > /Namespace [ (Adobe) (Common) (1.0) ] /OtherNamespaces [ > /FormElements false /GenerateStructure true /IncludeBookmarks false /IncludeHyperlinks false /IncludeInteractive false /IncludeLayers false /IncludeProfiles true /MultimediaHandling /UseObjectSettings /Namespace [ (Adobe) (CreativeSuite) (2.0) ] /PDFXOutputIntentProfileSelector /NA /PreserveEditing true /UntaggedCMYKHandling /LeaveUntagged /UntaggedRGBHandling /LeaveUntagged /UseDocumentBleed false >> ]>> setdistillerparams> setpagedevice