05 suplemen timer dan counter_2
DESCRIPTION
timerTRANSCRIPT
-
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).