05 suplemen timer dan counter_2

11
1 TEKNIK ANTARMUKA| Modul V: Timer Counter MODUL V: Timer dan Counter 5.1 DASAR TEORI Gambar 5.1 Prinsip Dasar Timer/Counter pada Mikrokontroler Ttimer = Tosc*(256-TCNT0)*N → (8 bit = 256) Ttimer = Tosc*(65536-TCNT1)*N → (16 bit = 65536) Gambar 5.2 Diagram Blok Timer/Counter pada Mikrokontroler keluarga AVR

Upload: ivandi

Post on 12-Nov-2015

220 views

Category:

Documents


1 download

DESCRIPTION

timer

TRANSCRIPT

  • 1 TEKNIK ANTARMUKA| Modul V: Timer Counter

    MODULV:TimerdanCounter5.1 DASAR TEORI

    Gambar 5.1 Prinsip Dasar Timer/Counter pada MikrokontrolerTtimer = Tosc*(256-TCNT0)*N (8 bit = 256)Ttimer = Tosc*(65536-TCNT1)*N (16 bit = 65536)

    Gambar 5.2 Diagram Blok Timer/Counter pada Mikrokontroler keluarga AVR

  • 2 TEKNIK ANTARMUKA| Modul V: Timer Counter

    5.2 TIMER SEDERHANA MENGGUNAKAN FASILITAS delay.hA. Langkah kerja

    1. Buat program sebagai berikut:#include #include void main(void){// Declare your local variables herePORTC=0x00;DDRC=0xFF;PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=0;while (1){char c2;// Place your code herePORTC.1=~PORTC.1;for(c2 = 0; c2 < 10; c2++){PORTC.0=~PORTC.0;delay_ms(10);};}}2. Compile dan make program anda.3. Buat desain proteus sebagaimana Gambar 5.3

    Gambar 5.3 Skema Desain Proteus untuk Percobaan 5.2

    PA0

    PA7PA6PA5PA4PA3PA2PA1PA0

    PA1

    PA2

    PA7

    PA6

    PA5

    PA4

    PC0PC1PC2PC3

    PC0PC1PC2PC3

    PE0/RXD0/PDI 2PE1/TXD0/PDO 3PE2/XCK0/AIN0 4PE3/OC3A/AIN1 5PE4/OC3B/INT4 6PE5/OC3C/INT5 7

    PE6/T3/INT6 8PE7/ICP3/INT7 9

    PB0/SS10PB1/SCK11PB2/MOSI12PB3/MISO13PB4/OC014PB5/OC1A15PB6/OC1B16PB7/OC2/OC1C17

    PG3/TOSC2 18PG4/TOSC1 19

    RESET20

    XTAL223XTAL124

    PD0/SCL/INT0 25PD1/SDA/INT1 26PD2/RXD1/INT2 27PD3/TXD1/INT3 28

    PD4/ICP1 29PD5/XCK1 30

    PD6/T1 31PD7/T2 32

    PG0/WR 33PG1/RD 34

    PC0/A835PC1/A936PC2/A1037PC3/A1138PC4/A1239PC5/A1340PC6/A1441PC7/A1542

    PG2/ALE 43

    PA7/AD744PA6/AD645PA5/AD546PA4/AD447PA3/AD348PA2/AD249PA1/AD150PA0/AD051

    PF7/ADC7/TDI 54PF6/ADC6/TDO 55PF5/ADC5/TMS 56PF4/ADC4/TCK 57

    PF3/ADC3 58PF2/ADC2 59PF1/ADC1 60PF0/ADC0 61

    AREF62AVCC64 PEN 1

    U1

    ATMEGA128

    X1

    CRYSTALC133pF

    C233pF

    C3100uF

    R110k

    D714

    D613

    D512

    D411

    D310

    D29

    D18

    D07

    E6

    RW5

    RS4

    VSS

    1VD

    D2

    VEE

    3

    LCD1LM016L

    RV11k

    TOMBOL 1TOMBOL 2TOMBOL 3

    R21k

    R31k

    R41k

    ABCD

  • 3 TEKNIK ANTARMUKA| Modul V: Timer Counter

    4. Perhatikan tampilan osciloscop virtual. Hitung perioda dari masing-masing gelombang kotak.

    B. TUGAS 5.1:Modifikasi program pada subbab 5.2 diatas untuk menghasilkan gelombang kotak dengan spesifikasisebagai berikut:PORTC.0 => T = 100ms; PORTC.1 => T = 300ms; PORTC.2 => T = 600ms; PORTC.4 => T = 1200ms.

    5.3 TIMER MENGGUNAKAN FASILITAS TIMER/COUNTER INTERNALA. Langkah kerja

    1. Hitung nilai TCNT1 pada rumus pada subbab 5.1 untuk Ttimer 100ms(fosc=11.059MHz).

    2. Buat project baru pada CodeVisionAVR.3. Atur

    4. Edit program hasil generate sebagai berikut :

    Isi dari perhitunganstep 1

  • 4 TEKNIK ANTARMUKA| Modul V: Timer Counter

    interrupt [TIM1_OVF] void timer1_ovf_isr(void){// Place your code hereTCNT1H=0xYYYY >> 8; //YYYY=nilai hex hasil perhitunganTCNT1L=0xYYYY & 0xff;PORTC.0=~PORTC.0;}TCCR1B=0x05;PORTC.0=0;while (1){// Place your code here};}

    5. Compile dan make program anda.6. Jalankan program anda pada desain Gambar 5.37. Amati dan hitung periode sinyal pada Osciloscop virtual

    B. TUGAS 5.2 :Ulangi Tugas 5.1 dengan menggunakan timer internal.

    C. TUGAS 5.3 :Program Jam Digital menggunakan Timer pada LCD.

  • 5 TEKNIK ANTARMUKA| Modul V: Timer Counter

    5.4 COUNTER MENGGUNAKAN TIMER/COUNTER INTERNALA. Langkah kerja

    Gambar 5.4 Skema Desain Proteus untuk Percobaan 5.41. Buat project baru dengan program sebagai berikut.#include #include // Alphanumeric LCD Module functions#asm.equ __lcd_port=0x1B ;PORTA#endasm#include // Declare your global variables hereunsigned char temp[6];int data;void main(void){// Timer/Counter 2 initialization// Clock source: T2 pin Falling Edge// Clock value: Timer 2 Stopped// Mode: Normal top=FFh// OC2 output: DisconnectedTCCR2=0x06;TCNT2=0x00;OCR2=0x00;// LCD module initialization

    PA7

    PA7PA0

    PA6PA5PA4PA3PA2PA1PA0

    PA1

    PA2

    PA6

    PA5

    PA4

    PC0PC1PC2PC3

    PB0PB1

    PE0/RXD0/PDI 2PE1/TXD0/PDO 3PE2/XCK0/AIN0 4PE3/OC3A/AIN1 5PE4/OC3B/INT4 6PE5/OC3C/INT5 7

    PE6/T3/INT6 8PE7/ICP3/INT7 9

    PB0/SS10PB1/SCK11PB2/MOSI12PB3/MISO13PB4/OC014PB5/OC1A15PB6/OC1B16PB7/OC2/OC1C17

    PG3/TOSC2 18PG4/TOSC1 19

    RESET20

    XTAL223XTAL124

    PD0/SCL/INT0 25PD1/SDA/INT1 26PD2/RXD1/INT2 27PD3/TXD1/INT3 28

    PD4/ICP1 29PD5/XCK1 30

    PD6/T1 31PD7/T2 32

    PG0/WR 33PG1/RD 34

    PC0/A835PC1/A936PC2/A1037PC3/A1138PC4/A1239PC5/A1340PC6/A1441PC7/A1542

    PG2/ALE 43

    PA7/AD744PA6/AD645PA5/AD546PA4/AD447PA3/AD348PA2/AD249PA1/AD150PA0/AD051

    PF7/ADC7/TDI 54PF6/ADC6/TDO 55PF5/ADC5/TMS 56PF4/ADC4/TCK 57

    PF3/ADC3 58PF2/ADC2 59PF1/ADC1 60PF0/ADC0 61

    AREF62AVCC64 PEN 1

    U1

    ATMEGA128

    X1

    CRYSTALC133pF

    C233pF

    C3100uF

    R110k

    D714

    D613

    D512

    D411

    D310

    D29

    D18

    D07

    E6

    RW5

    RS4

    VSS

    1VD

    D2

    VEE

    3

    LCD1LM016L

    RV11k

    TOMBOL 3

    AM FM

    +

    -

    ABCD

  • 6 TEKNIK ANTARMUKA| Modul V: Timer Counter

    lcd_init(16);while (1){// Place your code heredata=TCNT2;//hasil counter (TCNT0) dipindah ke dataif (data>=256){lcd_clear();}lcd_gotoxy(0,0);lcd_putsf("ElectrO-Polines");itoa(data,temp); //menampilkan di LCDlcd_gotoxy(0,1);lcd_puts(temp);};}2. Jalankan program pada desain Gambar 5.43. Tekan tombol berulang-ulang. Jika program anda benar maka nilai pada LCD bertambah 1

    setiap tombol ditekan sekali.4. Buat program berikut#include #include // Alphanumeric LCD Module functions#asm.equ __lcd_port=0x1B ;PORTA#endasm#include // Declare your global variables hereunsigned char temp[6];unsigned int data;void main(void){TCCR1A=0x00;TCCR1B=0x06;TCNT1H=0x00;TCNT1L=0x00;ICR1H=0x00;ICR1L=0x00;OCR1AH=0x00;OCR1AL=0x00;OCR1BH=0x00;OCR1BL=0x00;OCR1CH=0x00;OCR1CL=0x00;// LCD module initializationlcd_init(16);

  • 7 TEKNIK ANTARMUKA| Modul V: Timer Counter

    while (1){// Place your code heredata=TCNT1;//hasil counter (TCNT0) dipindah ke dataif (data>=0xFFFF){lcd_clear();}lcd_gotoxy(0,0);lcd_putsf("ElectrO-Polines");itoa(data,temp); //menampilkan di LCDlcd_gotoxy(0,1);lcd_puts(temp);};}5. Jalankan program anda pada design gambar 5.46. Atur parameter signal Generator sebagaimana Gambar 5.5

    Gambar 5.5 Pengaturan signal generator

    1. Putar-putar dengan pelan tombol centre2. Lihat perubahan pada Osciloscop. Perhatikan perubahan pada LCD

    B. TUGAS 5.4 :Gabungkan kedua program pada percobaan 5.5 dalam 1 program (baris atas LCDmenampilkan hitungan dari tombol, sdangkan baris bawah LCD untuk penghitungan pulsa)

  • 8 TEKNIK ANTARMUKA| Modul V: Timer Counter

    5.5 FREQUENCY COUNTER (KOMBINASI TIMER & COUNTER)A. Langkah kerja

    Gambar 5.6 Skema Desain Proteus untuk Percobaan 5.51. Persiapkan program dan project baru pada CVAVR dengan konfigurasi sebagai berikut:

    Chip Chip: ATMega 128 Clock: 11.0592 MHz

    LCD LCD Port: Port A Chars./line: 16

    Timer 1 Clock Source: T1 pin Falling Edge Interrupt: Non Active

    Timer 3 Clock Source: system Clock Clock Value: 10.800 kHz Interrupt: Active

    2. Edit program hasil generate CVAVRWizard pada beberapa bagian sehingga dihasilkanprogram sebagai berikut.#include // Alphanumeric LCD Module functions#asm.equ __lcd_port=0x1B ;PORTA#endasm#include #include

    PA7

    PA7PA0

    PA6PA5PA4PA3PA2PA1PA0

    PA1

    PA2

    PA6

    PA5

    PA4

    PB0PB1

    PE0/RXD0/PDI 2PE1/TXD0/PDO 3PE2/XCK0/AIN0 4PE3/OC3A/AIN1 5PE4/OC3B/INT4 6PE5/OC3C/INT5 7

    PE6/T3/INT6 8PE7/ICP3/INT7 9

    PB0/SS10PB1/SCK11PB2/MOSI12PB3/MISO13PB4/OC014PB5/OC1A15PB6/OC1B16PB7/OC2/OC1C17

    PG3/TOSC2 18PG4/TOSC1 19

    RESET20

    XTAL223XTAL124

    PD0/SCL/INT0 25PD1/SDA/INT1 26PD2/RXD1/INT2 27PD3/TXD1/INT3 28

    PD4/ICP1 29PD5/XCK1 30

    PD6/T1 31PD7/T2 32

    PG0/WR 33PG1/RD 34

    PC0/A835PC1/A936PC2/A1037PC3/A1138PC4/A1239PC5/A1340PC6/A1441PC7/A1542

    PG2/ALE 43

    PA7/AD744PA6/AD645PA5/AD546PA4/AD447PA3/AD348PA2/AD249PA1/AD150PA0/AD051

    PF7/ADC7/TDI 54PF6/ADC6/TDO 55PF5/ADC5/TMS 56PF4/ADC4/TCK 57

    PF3/ADC3 58PF2/ADC2 59PF1/ADC1 60PF0/ADC0 61

    AREF62AVCC64 PEN 1

    U1

    ATMEGA128

    X1

    CRYSTALC133pF

    C233pF

    C3100uF

    R110k

    D714

    D613

    D512

    D411

    D310

    D29

    D18

    D07

    E6

    RW5

    RS4

    VSS

    1VD

    D2

    VEE

    3

    LCD1LM016L

    RV11k

    TOMBOL 3

    AM FM

    +

    -

  • 9 TEKNIK ANTARMUKA| Modul V: Timer Counter

    #include // Declare your global variables hereunsigned char buffer[16];unsigned int data;// Timer 3 overflow interrupt service routineinterrupt [TIM3_OVF] void timer3_ovf_isr(void){// Place your code hereTCNT3H=0xD5D0 >> 8; //FBC8 => 0.1 detik; D5D0 => 1 detikTCNT3L=0xD5D0 & 0xff;data=TCNT1;TCNT1H=0x00;TCNT1L=0x00;}void main(void){// Timer/Counter 1 initialization// Clock source: T1 pin Falling Edge// Mode: Normal top=FFFFh// OC1A output: Discon.// OC1B output: Discon.// OC1C output: Discon.// Noise Canceler: Off// Input Capture on Falling Edge// Timer 1 Overflow Interrupt: Off// Input Capture Interrupt: Off// Compare A Match Interrupt: Off// Compare B Match Interrupt: Off// Compare C Match Interrupt: OffTCCR1A=0x00;TCCR1B=0x06;TCNT1H=0x00; //D5D0TCNT1L=0x00;ICR1H=0x00;ICR1L=0x00;OCR1AH=0x00;OCR1AL=0x00;OCR1BH=0x00;OCR1BL=0x00;OCR1CH=0x00;OCR1CL=0x00;// Timer/Counter 3 initialization// Clock source: System Clock// Clock value: 10.800 kHz// Mode: Normal top=FFFFh// Noise Canceler: Off// Input Capture on Falling Edge// OC3A output: Discon.// OC3B output: Discon.

  • 10 TEKNIK ANTARMUKA| Modul V: Timer Counter

    // OC3C output: Discon.// Timer 3 Overflow Interrupt: On// Input Capture Interrupt: Off// Compare A Match Interrupt: Off// Compare B Match Interrupt: Off// Compare C Match Interrupt: OffTCCR3A=0x00;TCCR3B=0x05;TCNT3H=0xD5; //D5D0TCNT3L=0xD0;ICR3H=0x00;ICR3L=0x00;OCR3AH=0x00;OCR3AL=0x00;OCR3BH=0x00;OCR3BL=0x00;OCR3CH=0x00;OCR3CL=0x00;// Timer(s)/Counter(s) Interrupt(s) initializationTIMSK=0x00;ETIMSK=0x04;// Analog Comparator initialization// Analog Comparator: Off// Analog Comparator Input Capture by Timer/Counter 1: OffACSR=0x80;SFIOR=0x00;// LCD module initializationlcd_init(16);// Global enable interrupts#asm("sei")while (1){// Place your code here// Place your code here//data=TCNT1;//hasil counter (TCNT0) dipindah ke dataif (data>=0xFFFF){lcd_clear();}lcd_gotoxy(0,0);sprintf(buffer,"frek.:%5d Hz",data);lcd_puts(buffer); // display data on LCD};}3. Jalankan program anda pada design gambar 5.64. Atur parameter signal Generator sebagaimana Gambar 5.7

  • 11 TEKNIK ANTARMUKA| Modul V: Timer Counter

    Gambar 5.5 Pengaturan signal generator

    5. Putar-putar dengan pelan tombol centre.6. Lihat perubahan tampilan pada LCD, bandingkan dengan nilai pada VSM Generator.

    B. TUGAS 5.5 :Modifikasi program pada contoh dimana baris kedua LCD menampilkan frekuensi dalam KHz.

    B. TUGAS 5.6 :Buat program simulasi TACHO-METER (RPM Meter).