Anda di halaman 1dari 8

LAPORAN

PRAKTIKUM SISTEM MIKROKONTROLLER


UNIT 4 TIMER DAN COUNTER
DAN UNIT 6 INTERUPSI

Nama : Muhammad Zharfan Wiranata


No. Mahasiswa : 14524109
Hari / Tanggal Praktikum : Selasa, 19 Mei 2016
Jam Praktikum : 12.30 - 15.00
Asisten :
UNIT 4 dan UNIT 6

Timer, counter, dan interupsi

1. TUJUAN PERCOBAAN
• Memahami Pengaturan timer dan counter pada mikrokontroller keluarga AVR
• Mampu menjelasakan pengaturan tumer dan counter mikrokontroller keluarga AVR
• Mampu memprogram mikrokontroller untuk memfungsikan timer dan counter
mikrokontroller
• Memehami sistem interupsi yang terdapat pada mikrokontroller ATMega 16
• Mampu menjelaskan dengan benar sistem interupsi yang terdapat pada ATMega16
• Mampu membuat prgram untuk mengaktifkan interupsi

2. DASAR TEORI

TIMER dan COUNTER

Mikrokontroler ATMega 16 mempunyai timer/counter yang berfungsi sebagai


pencacah/pewaktuan. Karena mikrokontroler jenis ini mampu memakai crystal berfrekuensi
sampai dengan 16 MHz maka mikrokontroler ini dapat mencapai 16MIPS (Million
Instruction per Second).
Pada mikrokontroler ATMega16 perlu diperhatikan pemilihan sumber clock. Hal ini
berhubungan dengan frekuensi yang kita inginkan. Jika kita ingin menggunakan frekuensi
12MHz dengan sumber clock eksternal maka perlu dilakukan kalibrasi fuse bit
mikrokontroler dengan downloader, jika tidak maka mikrokontroler akan menggunakan
frekuensi dengan sumber clock internal sekitar 4 MHz.

PRESCALER
Timer pada dasarnya hanya menghitung pulsa clock. Frekuensi pulsa clock yang
dihitung tersebut bisa sama dengan frekuensi crystal yang dipasang atau dapat
diperlambat menggunakan prescaler dengan faktor 8, 64, 256 atau 1024. Berikut
penjelasannya: Sebuah AVR menggunakan crystal dengan frekuensi 8 MHz dan timer yang
digunakan adalah timer 16 bit, maka maksimum waktu timer yang bisa dihasilkan adalah:

TMAX = 1/fCLK x (FFFFh+1) = 0.125uS x 65536 = 0.008192 S

Untuk menghasilkan waktu timer yang lebih lama dapat digunakan prescaler, misalnya
1024, maka maksimum waktu timer yang bisa dihasilkan adalah :

TMAX = 1/fCLK x (FFFFh+1) x N


= 0.125uS x 65536 x 1024
= 8.388608 S

MACAM-MACAM TIMER/COUNTER

1. Timer/Counter 0
Merupakan 8 bit timer/counter. Pengaturan Timer/Counter 0 diatur oleh TCCR0
(Timer/Counter control register 0) sebagaimana ditunjukkan gambar 1.
Gambar 1. Register TCCR0

Fungsi masing masing bit pada register TCCR0 adalah sebagai berikut:
a. Bit 3 ~ 7 digunakan untuk setting PWM.
b. Bit 2, 1, 0 (CS02, CS01, CS00): Clock select. Ketiga bit tersebut memilih
sumber clock yang akan digunakan oleh timer/counter.

2. Timer/Counter 1
Merupakan 16-bit timer/counter sehingga terdapat perbedaan cara
pengaksesannya dengan 8-bit timer/counter. 16-bit (1 word) timer/counter harus
diakses dengan 8 bit high dan 8 bit low. Pengaturan Timer/Counter1 juga diatur
oleh register TCCR1B sebagaimana ditunjukkan pada gambar 2.

Gambar 2. Register TCCR1B

Bit 2,1,0 (CS1 2:0): Clock Select. Ketiga bit tersebut (CS2/CS1/CS0) mengatur
sumber clock yang digunakan untuk Timer/Counter1.

3. Timer/Counter 2
Timer/Counter2 adalah 8-bit Timer/Counter, pengaturan pada Timer/Counter2
diatur oleh TCCR2 (Timer/Counter Control Register 2).

Gambar 3. Register TCCR2


Bit 2,1,0 (CS22; CS21, CS20): Clock Select. Ketiga bit ini memilih sumber clock
yang akan digunakan oleh Timer/Counter. Konfigurasi bit select untuk memilih
sumber clock ditunjukkan pada tabel 1.

Tabel 1. Konfigurasi Bit Clock Select


Register yang digunakan pada operasi timer dan counter selain register tersebut
diatas adalah:
1. Register TIMSK
Register TIMSK merupakan register 8 bit sebagaimana ditunjukkan pada gambar
4.

Gambar 4. Register TIMSK


Fungsi masing masing bit pada register TIMSK (Timer/counter Interrupt Mask
Registeri) adalah :
a. OCIEx: Output Compare Match Interrupt Enable. Jika bit tersebut diberi
logika 1 dan bit I SREG juga berlogika 1, maka bisa dilakukan enable
interupsi Output Compare Match Timer/Counter x.
b. TOIEx: Overflow Interrupt Enable. Jika diberi logika 1 dan bit I SREG
juga berlogika 1, maka bisa dilakukan enable interupsi Overflow
Timer/Counter x.
c. TCIE1: Timer/Counter 1, Input Capture Interrupt Enable

2. Register TIFR (Timer Interrupt Flag Register)


Register TIFR merupakan register tanda yang digunakan pada interupsi
timer. Register ini memiliki panjang data 8 bit dengan konfigurasi
sebagaimana ditunjukkan pada gambar 5.

Gambar 5. Register TIFR


Fungsi masing masing bit pada register TIFR adalah sebagai berikut:
a. OCFx: Output Compare Flag. Bernilai 1 (set) jika terjadi compare match antara
Timer/Counter x dan data di OCRx (Output Compare Register x). OCFx di-clear
secara hardware ketika pengeksekusian corresponding interrupt handling
vector. Atau, jika diberi nilai 1 secara lagsung ke bit flag.
b. Saat bit I SREG, OCIEx, dan OCFx set (berlogika 1), maka Timer/Counter x
Compare Match Interrupt dieksekusi.
c. TOVx: Timer/Counter x Overflow Flag. Bit ini akan set (bernilai 1) saat
terjadi overflow di Timer/Counter x. TOVx akan clear (bernilai 0) secara
hardware saat pengeksekusian corresponding interrupt handling vector. Atau,
diberikan logika 1 ke bit flag.
d. Saat bit i SREG, TOIEx (Timer/Counter x Overflow Interrupt Enable), dan TOVx
set, akan terjadi pengeksekusian Timer/Counter x Overflow Interrupt. Pada
mode PWM, bit ini set ketika Timer/Counter x mengubah arah perhitungan hingga
menuju nilai 0×00.

SETTING TIMER
Sebelum melakukan setting timer maka tentukan dahulu nilai delay yang diinginkan
lalu bisa didapatkan nilai TCNTnya

TCNT : Nilai timer (Hex)


fCLK : Frekuensi clock (crystal) yang digunakan (Hz)
T timer : Waktu timer yang diinginkan (detik)
N : Prescaler (1, 8, 64, 256, 1024)
1+FFFFh : Nilai max timer adalah FFFFh dan overflow saat FFFFh
ke 0000h

INTERUPSI
Interrupt/Interupsi ialah suatu kondisi dimana CPU (Central Processing Unit)
mikrokontroler berhenti dari rutinitas yang sedang dikerjakan dan mengerjakan
rutinitas lain yang ditunjuk oleh interupsi tersebut. Ketika rutinitas yang ditunjuk
interupsi telah selesai dieksekusi, maka CPU akan mulai mengeksekusi rutinitas awal
sebelum adanya interupsi yang terhenti dari tempat terakhir.
Pada mikrokontroler ATMega 16 terdapat 21 sumber interupsi baik internal interupsi
maupun eksternal sebagaimana ditunjukkan pada tabel 1.
Tabel 1. Sumber interupsi ATMega 16
Pada bagian ini jenis interrupt yang akan dibahas ialah external interrupt.
ATmega8535 memiliki tiga buah eksternal interrupt yaitu INT0, INT1, dan INT2. Ketiga
interrupt ini yaitu INT0 s.d INT2 akan tertrigger walaupun portnya dikonfigurasi
sebagai output. Fitur ini memungkinkan interrupt yang dikondisikan oleh software.
Semua interrupt akan tertrigger jika terdapat perubahan rising edge atau falling edge.
Mode any change tidak dimiliki INT2, sedangkan INT0 dan INT1 memilikinya. Mode any
change memungkinkan interrupt terpanggil baik ketika rising dan falling edge.
Register-register yang harus di setting untuk mengaktifkan eksternal interupsi
ialah GICR (General Interrupt Control Register), GIFR (General Interrupt Flag
Register), MCUCR (MCU Control Register), dan MCUCSR (MCU Control and Status Register).
GICR (General Interrupt Control Register)
Regsiter ini memiliki panjang data 8 bit dengan konfigurasi sebagaimana
ditunjukkan pada gambar 1.

Gambar 1. Register GICR


1. Bit 7 – INT1: External Interrupt Request 1 Enable
Untuk meng-enable kan External Interrupt 1
2. Bit 6 – INT0: External Interrupt Request 0 Enable
Untuk meng-enable kan External Interrupt 0
3. Bit 5 – INT2: External Interrupt Request 2 Enable
Untuk meng-enable kan External Interrupt 2
MCUCR (MCU Control Register)
Berfungsi untuk menentukan keadaan pin yang akan menyebabkan terjadinya interupsi
eksternal.

1. Bit 3, 2 – ISC11, ISC10: Interrupt Sense Control 1 Bit 1 and Bit 0


Bit ini mengatur sensitifitas yang akan dimiliki oleh port eksternal interrupt 1.
pilihan sensitifitas dapat dilihat pada tabel dibawah:
Tabel 2. Pengaturan kondisi interupsi eksternal 1

2. Bit 1, 0 – ISC01, ISC00: Interrupt Sense Control 0 Bit 1 and Bit 0


Bit ini mengatur sensitifitas yang akan dimiliki oleh port eksternal interrupt 0.
pilihan sensitifitas dapat dilihat pada tabel dibawah:
Tabel 3. Penentuan kondisi penyebab interupsi eksternal

MCUCSR (MCU Control and Status Register)


Register ini digunakan untuk mengatur kondisi yang menyebabkan terjadinya
interupsi eksternal 2. Konfigurasi register ini ditunjukkan pada gambar dibawah.

Bit 6 – ISC2: Interrupt Sense Control 2


Jika ISC2 ditulis 0 maka falling edge pada INT2 akan mengaktifasi interupsi. Jika
ISC2 ditulis 1, maka rising edge pada INT2 akan mengaktifasi interupsi.
GIFR (General Interrupt Flag Register)
Register 8 bit ini digunakan untuk mengetahui terjadinya interupsi pada
mikrokontroler. Konfigurasi register sebagaimana ditunjukkan pada gambar dibawah.

1. Bit 7 – INTF1: External Interrupt Flag 1


Ketika terjadi eksternal interrupt pada INT1, maka Flag INTF1 diset 1. Setelah
routine eksternal interrupt selesai di eksekusi maka Flag INTF1 diset 0.
2. Bit 6 – INTF0: External Interrupt Flag 0
Ketika terjadi eksternal interrupt pada INT0, maka Flag INTF0 diset 1. Setelah
routine eksternal interrupt selesai di eksekusi maka Flag INTF0 diset 0.
3. Bit 5 – INTF2: External Interrupt Flag 2
Ketika terjadi eksternal interrupt pada INT2, maka Flag INTF2 diset 1. Setelah
routine eksternal interrupt selesai di eksekusi maka Flag INTF2 diset 0.

3. HASIL DAN ANALISA PERCOBAAN

TIMER dan COUNTER

INTERUPSI

4. KESIMPULAN

Anda mungkin juga menyukai