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
Posting Komentar