LAPORAN MIKROKONTROLER TIMER/COUNTER

PRAKTIKUM MIKROKONTROLER
TIMER/COUNTER
Disusun Oleh




 Khairinnisa Sireg            16507134042




TEKNIK ELEKTRONIKA
FAKULTAS TEKNIK
UNIVERSITAS NEGERI YOGYAKARTA









A.    Tujuan
Setelah melakukan praktikum mahasiswa diharapkan dapat :
1.      Memahami prinsip kerja timer/counter
2.      Mampu mengirim menggunakan timer/counter aplikasi tertentu   
B.     Dasar Teori
Timer dan counter merupakan fitur yang telah tertanam di mikrokontroler AVR yang memiliki fungsi terhadap waktu. Fungsi pewaktu yang dimaksud disini adalah penentuan kapan program tersebut dijalankan, tidak hanya itu saja fungsi timer yang lainnya adalah PWM, ADC, dan Oscillator. Prinsip kerja timer dengan cara membagi frekuensi (prescaler) pada clock yang terdapat pada mikrokontroler sehingga timer dapat berjalan sesuai dengan frekuensi yang di kehendaki.
Pada mikrokontroler ATMEGA 16 memiliki 3 buah timer yaitu timer 0 (8bit), timer1 (16bit), dan timer 2 (8bit). Untuk mengenai register lengkapnya bisa dibaca pada datasheet. Namun yang akan dibahas pada tulisan kali ini hanya timer 0(8bit) dan timer1 (16 bit) saja.
Register yang Digunakan untuk Timer & Counter
·         TCNT0 = Register Timer 1
·         TCNT 1 = Register Timer 0
·         Ttimer0 = Periode Timer 0
·         Ttimer 1 =Periode
·         Timer 1 Tosc = Periode Clock
·         Fosc = Frekuensi Crystall Clock
·         N = Prescaler (1, 8, 64, 256, 1024)
Pada dasarnya timer hanya menghitung pulsa clock. frekuensi pulsa clock yang dihitung tersebut bisa sama dengan frekuensi crystal yang digunakan atau dapat diperlambat menggunakan prescaler dengan faktor 8, 64, 256 atau 1024.
Contoh penggunaan prescaler :                                                                                                      Suatu mikrokontroler menggunakan crystal dengan frekuensi 8 MHz dan timer yang digunakan adalah Timer 1 (16 Bit) maka maksimum waktu Timer yang bisa dihasilkan adalah: TMAX = 1/fCLK x (FFFFh + 1)                                                                                                                = 0.125 µs x 65536                                                                                                                        = 0.008192 s
 Untuk menghasilkan waktu Timer yang lebih lama dapat menggunakan prescaler 1024, maka waktu Timer yang bisa dihasilkan adalah :                                                  
TMAX = 1/fCLK x (FFFFh+1) x N                                                                                                           = 0.125 µs x 655536 x 1024                                                                                                           = 8.388608 s                                                                                                             Tujuan Penggunaan Timer & Counter                                                                       Melaksanaan tugas secara berulang                                                                                           Mengendalikan kecepatan motor DC (PWM)                                                                               Melakukan perhitungan (Counter)                                                                                          Membuat penundaan waktu (delay)
Timer 0 (8 Bit)                                                                                                             
 Untuk perhitungan timer 0 dapat menggunakan rumus :                                                             Ttimer0 = Tosc*(256-TCNT0)*N → (8 Bit = 256 ≈ 2^8)
Sebenarnya Timer 0 tidak dapat menghasilkan periode selama 1 detik karena keterbatasan jumlah bit nya (8 bit = 256). Namun dengan penggunaan rumus dapat dilakukan pemanipulasian agar timer 0 dapat menghasilkan periode waktu selama 1 detik. Dengan cara membuat timer selama 0.01 detik lalu dilakukan perulangan sebanyak 100 kali sehingga akan menghasilkan waktu 1 detik (0.01 detik x 100 kali = 1 detik).
Counter 0 & 1                                                                                                                         Untuk penggunaan fungsi counter pada mikrokontroler lebih mudah jika dibandingkan dengan fungsi timer, karena tidak memerlukan perhitungan untuk penginputan nilai ke register TCNT. Register TCNT akan secara otomatis akan mencacah jika ada input yang masuk, input yang masuk contohnya dapat berupa push button. Pada Counter 0, input berasal dari T0 atau PORT B 0 yang mampu mencacah input hingga 256 (8 Bit). Berikut ini konfigurasi Counter 0 pada Codevision AVR. Pada Counter 1, input berasal dari T1 atau PORT B 1 yang mampu mencacah hingga 65536 (16 Bit). Untuk konfigurasi counter 0 & 1 pada Codevision AVR sama seperti konfigurasi Timer 0 dan 1.                                                                                                           
C.     Alat dan Bahan
1.      Modul AVR Atmega8535/8/16/32
2.      AFG
3.      Jumper
4.      Power supply 5-12V
D.    Skema Rangkaian



E.     Langkah Kerja
1.      Buatlah alat dan bahan seperti rangkaian di atas;

2.      Sebelum anda menulis program aturlah seperti gambar berikut;
3.      Tuliskan list program berikut;
#include <mega16.h>
 #include <alcd.h>
 #include <stdio.h>
unsigned int hitung_naik;
//unsigned int hitunganLSB;
unsigned int counter;
unsigned char bufferCounter[15];
unsigned int hitungan;
interrupt [EXT_INT1] void ext_int1_isr(void)
                {
                hitung_naik=hitung_naik+1;
              }
// Declare your global variables here
 void main(void)
{
 // Timer/Counter 1 initialization
 // Clock source: T1 pin Falling Edge
 // Mode: Normal top=0xFFFF
 // OC1A output: Discon.
// OC1B output: Discon.

// Noise Canceler: Off
// Input Capture on Falling Edge
 // Timer1 Overflow Interrupt: Off
 // Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x06;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
 // Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

GICR|=0x80;
MCUCR=0x00;
MCUCSR=0x00;
GIFR=0x80;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

UCSRB=0x00;
ACSR=0x80;
SFIOR=0x00;
ADCSRA=0x00;
SPCR=0x00;
TWCR=0x00;
lcd_init(16);
lcd_gotoxy(0,0);
lcd_putsf("NGITUNG AMAL...");
// Global enable interrupts
 #asm("sei")
 while (1)
 {
hitungan=TCNT1;                               //hitunganMSB; sprintf(bufferCounter,"%i Liter", hitungan ); lcd_gotoxy(0,1); lcd_puts(bufferCounter);
 }
}
4.      Setelah anda compile, uji cobakan/simulasikanlah di Proteus lalu coba pada hardware nyata.
5.      Rakitlah hardware mikrokontroller dengan input sinyal dari AFG, amati hasilnya pada LCD.

F.      Hasil dan Analisa


Analisa
Dari praktikum yang dilakukan dapat dianalisa bahwa pada saat melakukan simulation pada rangkaian, timer pada rangkaian mulai bekerja dengan cara membagi frekuensi (prescaler) pada clock sehingga timer dapat berjalan sesuai dengan frekuensi yang dikehendaki. Pada rangkaian yang dibuat untuk menghitung amal yang terdapat pada tampilan lcd digunakan TCNT dimana TCNT berfungsi untuk  register pencacah dari 0 sampai nilai maximum yg kita tentukan kemudian digunakan juga TCCR yang mana TCCR berfungsi untuk pengaturan mode operasi  Timer/Counter.

G.    Kesimpulan
Dari praktikum yang dilkakukan dapat disimpulkan :
1.      Timer merupakan fungsi waktu yang sumber clocknya berasal dari clock internal. Sedangkan counter merupakan fungsi perhitungan yang sumber clocknya berasal dari external mikrokontroler.
2.       Prinsip kerja timer dengan cara membagi frekuensi (prescaler) pada clock yang terdapat pada mikrokontroler sehingga timer dapat berjalan sesuai dengan frekuensi yang di kehendaki.
3.      Pada mikrokontroler ATMEGA 16 memiliki 3 buah timer yaitu timer 0 (8bit), timer1 (16bit), dan timer 2 (8bit).


Komentar

Postingan populer dari blog ini

LAPORAN MIKROKONTROLER KEYPAD

LAPORAN MIKROKONTROLER RTC