Anda di halaman 1dari 6

MODUL 2

TIMER, COUNTER, INTERRUPT


Valahdyo Arbandy (13116136)
Asisten : M. Farid Hasan (13115012)
Tanggal Percobaan : 11/03/2019
EL3203 Praktikum Sistem Mikroprosesor
Laboratorium Teknik Elektro
Institut Teknologi Sumatera

2^8=256, yaitu : dari nilai 0 hingga 255, seperti pada gambar


Abstrak— Percobaan kali ini membuat program Timer, counter dibawah ini. pada timer 16-bit lebar register juga sebesar 16-bit.
dan interrupt menggunakan Bahasa C pada WinAVR dan karena memiliki lebar register yang lebih besar, timer 16-bit
mengaplikasikan pada Mikrokontroler AVR. Praktikan juga mampu menghitung sebanyak 2^16=65536, yaitu: dari 0 hingga
membuat aplikasi eksternal interrupt pada AVR.Praktikum kali 65535, sehingga juga dapat digunakan sebagai pencacah
ini mikrokontroler yang digunakan AVR ATMega8535.
(counter) dimana perbedaannya terdapat pada sumber clocknya.
pada timer, sumber clocknya berasal dari internal
Kata Kunci— Timer, Counter, Interrupt, mikrokontroler,
ATMega8535 mikrokontroler itu sendiri. Sedangkan Counter, sumber
clocknya berasal dari luar mikrokontroler (eksternal). Jika
perhitungan atau pencacahan pada timer 8-bit maupun timer 16-
I. PENDAHULUAN bit sudah mencapai nilai maksimum nya yaitu 255 pada timer 8
bit dan 65535 pada timer 16-bit maka yang akan terjadi adalah

M IKROKONTROLER AVR ATMEGA32 memiliki 4


buah port I/O, yaitu PORTA, PORTB, PORTC, dan
PORTD yang pada setiap port memiliki 8 kaki I/O (ciri
keadaan overflow (penuh) dimana nilai perhitugan akan
kembali ke nilai nol. Keadaan overflow pada timer/counter ini
kemudian bisa dimanfatkan sebagai sumber interupsi pada
mikrokontroler 8-bit). Sehingga secara keseluruhan aplikasi-aplikasi selanjutnya.
mikrokontroler AVR ATMEGA32 memiliki 32 jalur untuk
berkomunikasi dengan peranti input atau peranti output. Jika kita ingin membuat delay sebesar 20 ms dengan
Adapun Tujuan praktikum kali ini yaitu : menggunakan timer 16-bit (MAX – 65535) dan menggunakan
XTAL 4 MHz maka frekuensi CPU (F_CPU) nya juga sebesar
 Praktikan memahami datasheet ATMega 8535 4 MHz. Jika kita masukkan pada rumus di atas maka delay
 Praktikan mampu membuat aplikasi Timer/ Counter maksimum yang dapat dihasilkan oleh sistem yang kita
dan Interrupt pada AVR dengan menggunakan bahasa gunakan hanya sebesar 16.384 ms. Lalu bagaimanakah
pemprograman C pada WinAVR. solusinya agar delay yang dihasilkan lebih besar dari 16.384 ?
jawaban nya adalah dengan mengurangi F_CPU dari 4 MHz
 Praktikan mampu membuat aplikasi External
menjadi 0.5 MHz atau 500 KHz, sehingga periode clock-nya
Interrupt pada AVR dengan menggunakan bahasa
meningkat menjadi 1/500k = 0.002 ms. Sekarang kita
pemprograman C pada WinAVR.
memasukkan pada rumus diatas, mengganti delay dengan 20 ms
dan periode clock 0.002 ms. kita mendapatkan nilai timer
sebesar 9999 yang dapat di aplikasikan dengan menggunakan
II. LANDASAN TEORETIS timer 16-bit. Pada frekuensi clock yang telah direduksi menjadi
Timer merupakan fitur yang telah tertanam di dalam (500 KHz) maka nilai delay maksimum yang dapat dihasilkan
mikrokontroler AVR yang memiliki fungsi terhadap waktu. adalah sebesar 131.072 ms.
Fungsi timer yang dimaksud disini adalah penentuan kapan
program tersebut akan dijalankan dan kapan program tersebut Teknik mereduksi frekuensi clock/F_CPU ini merupakan
akan berhenti. teknik pembagian atau pen-skala-an frekuensi yang dinamakan
dengan Prescaling. Akan tetapi dalam menggunakan prescaler,
Timer mikorokontroler AVR tersusun dari beberapa register, ada yang harus dikorbankan, yaitu: antara resolusi dan durasi
yang nilai nya berkurang dan bertambah secara otomatis. Pada dari timer yang kita gunakan. Semakin besar delay yang mampu
mikrokontroler AVR terdapat dua jenis timer, yaitu : timer 8- kita hasilkan dengan menggunakan prescaling maka akan
bit dan timer 16-bit. Pada timer 8-bit, register yang digunakan mengurangi resolusi dari timer yang berdampak pada akurasi
memiliki lebar 8-bit yang berarti mampu menghitung sebanyak timer yang akan menurun, sebagai contoh: pada kasus di atas
durasi dari delay yang dihasilkan meningkat dari 16.384 ms
menjadi 131.072 ms dengan melakukan prescaling pada
F_CPU. Akan tetapi resolusinya juga menigkat dari 0.00025 ms
menjadi 0.002 ms. Hal ini berarti bahwa setiap detik-kan (waktu
transisi dari 0 ke 1 dan selanjutnya hingga nilai MAX) akan
memakan waktu lebih lama yaitu 0.002 ms yang berdampak
akurasi dari timer akan berkurang. Jika pada timer sebelumnya
dapat dihitung durasi seperti 0,1125 ms (0.1125/0.00025 = 450)
maka pada timer setelah dilakukan prescaling tidak dapat
dilakukan (0.1125/0.002 = 56.25).
A. Mikrokontroler ATMega8535
Mikrokontroler merupakan keseluruhan sistem komputer
yang dikemas menjadi sebuah chip di mana di dalamnya sudah
terdapat Mikroprosesor, I/O, Memori bahkan ADC, berbeda Gambar 2.3 Skematik Port I/O Mikrokontroler AVR ATMEGA32
dengan Mikroprosesor yang berfungsi sebagai pemroses data
Apabila kita memerhatikan skematik pin I/O mikrokontroler
Mikrokontroller AVR (Alf and Vegard’s Risc processor) AVR ATMEGA32 pada gambar 2, maka di sana tampak bahwa
memiliki arsitektur 8 bit, dimana semua instruksi dikemas pada setiap pin/kaki I/O telah dilengkapi dengan resistor pull-
dalam kode 16-bit dan sebagian besar instruksi dieksekusi up yang dihubungkan dengan tegangan catu melalui sebuah
dalam 1 siklus clock atau dikenal dengan teknologi RISC komponen FET. Selain itu, pada setiap pin/kaki I/O juga telah
(Reduced Instruction Set Computing). Secara umum, AVR dilengkapi dengan dioda pengaman terhadap tegangan catu
dapat dikelompokan ke dalam 4 kelas, yaitu keluarga AT90Sxx, (Vcc) dan ground (GND). Dengan demikian, sebenarnya setiap
keluarga ATMega dan AT86RFxx. Pada dasarnya yang pin I/O telah dapat digunakan untuk mengendalikan operasi
membedakan masing-masing adalah kapasitas memori, sebuah komponen LED secara langsung.
peripheral dan fungsinya. Dari segi arsitektur dan instruksi yang
digunakan, mereka bisa dikatakan hampir sama.
B. Bahasa Assembly
Bahasa Assembly adalah bahasa komputer yang
kedudukannya di antara Bahasa mesin dan bahasa level tinggi
misalnya bahasa C atau Pascal. Bahasa C atau Pascaldikatakan
sebagai bahasa level tinggi karena memakai kata-kata dan
pernyataan yangmudah dimengerti manusia, meskipun masih
jauh berbeda dengan bahasa manusiasesungguhnya. Bahasa
mesin adalah kumpulan kode biner yang merupakan
instruksiyang bisa dijalankan oleh komputer. Sedangkan
bahasa Assembly memakai kode Mnemonic untuk
menggantikan kode biner, agar lebih mudah diingat sehingga
lebih memudahkan penulisan program. Program yang ditulis
Gambar 2.1 Mikrokontroler ATMega8535
dengan bahasa Assembly terdiri dari label; kode mnemonic dan
lain sebagainya, pada umumnya dinamakan sebagai program
sumber (SourceCode) yang belum bisa diterima oleh prosesor
untuk dijalankan sebagai program.

Tapi harus diterjemahkan dulu menjadi bahasa mesin dalam


bentuk kode biner. Programsumber dibuat dengan program
editor biasa, misalnya Note Pad pada Windows atauSideKick
pada DOS, selanjutnya program sumber diterjemahkan ke
bahasa mesindengan menggunakan program Assembler.

Gambar 2.2 Konfigurasi Pin ATMega8535 Gambar 2.3 Bagan kerja proses Assembly
III. METODOLOGI IV. HASIL DAN ANALISIS
A. Alat dan Bahan A. Tugas I : DELAY DENGAN TIMER/ COUNTER
Alat dan bahan yang digunakan : Script yang diketikkan pada WinAVR
 Laptop
 Starter Kit DT-Combo
 USBasp
 WinAVR
 Khazama Programmer

B. Langkah Kerja

Siapkan alat dan bahan yang


digunakan (starter-kit AVR DT-
Combo, USBasp,Laptop)

Hubungkan Training board


dengan PC mengunakan
downloader usbasp

Hubungkan PORT A
(ATMega8535) pada PORT
OUTPUT (Trainer Board)

Buka software yang digunakan


(WinAVR dan Khazamma
Programmer)

Install terlebih dahulu driver


USBasp di laptop.

Hubungkan USBasp pada starter-


kit AVR pad port yang disediakan,
kemudian hubungkan ke laptop.

Pastikan sumber clock Script diatas menghasilkan output yaitu 4 bit LED display yang
menggunakan Kristal 8MHz menyala bergantian selama sekitar 1 detik.
dengan cara mengatur fuse

Jalankan source code yang telah


disediakan dan modifikasi
B. Tugas 2 : EXTERNAL CLOCK SEBAGAI COUNTER
Script yang diketikkan pada WinAVR

Gambar 4.1 Output LED Display

Kemudian script di modifikasi pada bagian OCR1A sehigga 4


bit LSB dengan 4 bit MSB menyala secara bergantian seperti
diatas namun waktu periode nya berbeda yaitu sekitar x detik
dimana x = (modulus 5 dari nomor kelompok) + 2.

X = (modulus 5 dari nomor kelompok) + 2


= (12 mod 5) + 2
=2+2
=4

Pergantian operasi CTC, sumber clock prescaler 256 dari


penentuan nilai compare untuk delay 1 detik

𝐹𝑟𝑒𝑘𝑢𝑒𝑛𝑠𝑖 7372800
𝑁𝑖𝑙𝑎𝑖 𝑂𝐶𝑅 = = = 28800
𝑃𝑟𝑒𝑠𝑐𝑎𝑙𝑒𝑟 256
Kemudian dikalikan 4 sehingga 28800 x 4 = 115200
Bilangan hex dari 115200 = 1C200 kemudian dimodifikasi,
OCR1AH = 0x1C ;
OCR1AL = 0x200 ;

Setelah modifikasi selang waktu (delay) 4 bit LSB dan bit MSB
bergantian yaitu sekitar 4 detik.
Gambar 4.2 Output LED Display
Script ini menghasilkan output LED yang menyala seperti D. Tugas 4 : EXTERNAL INTERRUPT
gambar 4.2 dan ketika tombol ditekan 2 kali lampu yang mati Script yang diketikkan pada WinAVR
menjadi menyala lalu kembali mati setelah sekitar 0.5 detik.

Kemudian memodifikasi script diatas sehingga LED menyala


semua selama x detik ketikatombol ditekan sejumlah x kali,
dimana x = (modulus 5 dari nomor kelompok) + 3.

X = (modulus 5 dari nomor kelompok) + 3


= (12 mod 5) + 3
=2+3
=5

Sehingga setelah tombol ditekan sebanyak 5 kali lampu yang


mati menjadi menyala selama sekitar 10 detik.

C. Tugas 3 : APLIKASI INTERRUPT DENGAN


TIMER/COUNTER
Script yang diketikkan pada WinAVR

Lampu LED berkedip antara bit ganjil genap ketika interrupt,


lampu mati bergantian satu persatu.

Dikarenakan error yang terjadi saat compile source code


praktikan membutuhkan waktu yang cukup lama untuk
melanjutkan langkah selanjutnya pada tugas 1 sehingga waktu
tidak mencukupi untuk mengerjakan tugas 3 dan 4, karena itu
praktikan menggunakan hasil dan data kelompok lain.

Lampu LED keaadan awal berkedip selama 0.2 detik , lalu


setiap satu detik semua lampu mati. Kemudian memodifikasi
program Tugas II.C.1 menggunakan Timer/Counter1 sehingga
interrupt terjadi setiap x detik, dimana x = (modulus 5 dari
nomor kelompok) + 2
Programmer AVR, Debugger, In-Circuit Emulator, dan
V. SIMPULAN beberapa program utilitas lainnya
 Jika kita ingin membuat delay sebesar 20 ms dengan  Kapabilitas detail dari ATmega8535 adalah Sistem
menggunakan timer 16-bit (MAX – 65535) dan mikroprosesor 8 bit berbasis RISC dengan kecepatan
menggunakan XTAL 8 MHz maka frekuensi CPU maksimal 16 MHz. Kapabilitas memori flash 8 KB, SRAM
(F_CPU) nya juga sebesar 8 MHz. Jika kita masukkan pada sebesar 512 byte, dan EEPROM (Electrically Erasable
rumus maka delay maksimum yang dapat dihasilkan oleh Programmable Read Only Memori) sebesar 512 byte.
sistem yang kita gunakan hanya sebesar 16.384 ms. ADC internal dengan fidelitas 10 bit sebanyak 8 channel.
 Delay yang dihasilkan lebih besar dari 16.384 adalah Portal komunikasi serial (USART) dengan kecepatan
dengan mengurangi F_CPU dari 8 MHz menjadi 0.5 MHz maksimal 2,5 Mbps. Enam pilihan mode sleep untuk
atau 500 KHz, sehingga periode clock-nya meningkat menghemat penggunaan daya listrik.
menjadi 1/500k = 0.002 ms. Sekarang kita memasukkan  Bahasa yang dipakai untuk memprogram mikrokontroler
pada rumus , mengganti delay dengan 20 ms dan periode AVR adalah bahasa assembly AVR atau bahasa C. Bahasa
clock 0.002 ms. kita mendapatkan nilai timer sebesar 9999 assembler digunakan karena kita dapat melihat perubahan
yang dapat di aplikasikan dengan menggunakan timer 16- isi register dan data memory.
bit. Pada frekuensi clock yang telah direduksi menjadi (500
KHz) maka nilai delay maksimum yang dapat dihasilkan REFERENSI
adalah sebesar 131.072 ms. [1] Petunjuk Praktikum Sistem Mikroprosesor EL3203, Laboratorium Dasar
 WinAVR (baca: 'whenever') adalah sebuah paket AVR Teknik Elektro, ITERA
Development System yang bersifat open source dengan
sederetan program pendukung yakni: IDE, Assembler,
Compiler, Linker, Librarian, File Converter, C Library,

Anda mungkin juga menyukai