Anda di halaman 1dari 5

HO SISDIG TOPIK 5

TIMER

Banyak function dalam Arduino yang menggunakan timer semisal delay(),


delayMicroseconds(), millis(), dan micros(), untuk penggunaannya masing-masing akan
dijelaskan sebagai berikut.

● delay(), digunakan untuk tundaan eksekusi baris program selanjutnya dalam


millisecond
● delayMicroseconds(), digunakan untuk tundaan eksekusi baris program selanjutnya
dalam microseconds
● millis(), digunakan sebagai pewaktu internal yang (bila tanpa terminate bersyarat) akan
terus berjalan hingga terjadi overflow (kembali ke nilai 0) dengan unit dalam
millisecond, untuk board Arduino Uno nilai millis() akan terus berjalan hingga sekitar
50 hari
● micros(), digunakan sebagai pewaktu internal yang (bila tanpa terminate bersyarat)
akan terus berjalan hingga terjadi overflow (kembali ke nilai 0) dengan unit dalam
microsecond, untuk board Arduino Uno nilai millis() akan terus berjalan hingga sekitar
70 jam

Timer Arduino
Sebuah pewaktu, timer, merupakan bagian dari microcontroller yang berperan sebagai clock
internal untuk mengukur waktu suatu event. Untuk timer dapat diatur dengan menggunakan
beberapa register khusus. Pada firmware Arduino semua timer memiliki konfigurasi frekuensi
1 kHz dengan enable interrupt. Berikut ini timer khusus untuk Arduino.

● Timer0, 8 bit, digunakan untuk function seperti delay(), millis(), dan micros(), dengan
mengubah konfigurasi Timer0 akan mempengaruhi function lainnya
● Timer1, 16 bit, biasa digunakan untuk aplikasi terkait motor servo
● Timer2, 8 bit, function tone() menggunakan Timer2

Selain tiga pewaktu tersebut, terdapat juga Timer3, Timer4, dan Timer5, semuanya 16 bit, untuk
board Arduino Mega.
Timer Register
Untuk dapat melakukan manipulasi timer pada Arduino terlebih dahulu harus mengetahui
fungsi dari masing-masing register yang terkait timer. Salah satu register timer yang paling
penting ialah TCCRx (Timer/Conter Control Register), dengan x adalah nomor, berikut ini
adalah register apa saja yang digunakan untuk timer.

● TCCRx (Timer/Conter Control Register), dimana prescaler dapat dikonfigurasi disini


sekaligus mode operasi timer
● TCNTx (Timer/Counter Register), dimana nilai timer disimpan, merupakan register
pencacah mulai dari 0 hingga nilai maximum
● OCRx (Output Compare Register), untuk membandingkan OCR yag diberikan dengan
nilai TCNT
● ICRx (Input Capture Register), hanya tersedia untuk timer 16 bit, menerima data timer
● TIMSKx (Timer/Counter Interrupt Mask Register), digunakan untuk menjalankan atau
mematikan timer interrupt
● TIFRx (Timer/Counter Interrupt Flag Register), menandakan timer interrupt hasil
operasi timer

Timer Frekuensi
Untuk menghitung frekuensi timer dengan frekuensi yang ditentukan dapat dilakukan dengan
cara sebagai berikut.

● Menentukan frekuensi pembagi, misal 2 Hz


● Mengetahui frekuensi kerja Arduino, yakni 16 MHz
● Mengetahui prescaler timer, 256 untuk 8 bit, 65536 untuk 16 bit
● Membagi nilai frekuensi kerja Arduino (16 MHz) dengan prescaler (256), hingga
diperoleh hasil 62500
● Membagi hasil tersebut (62500) dengan frekuensi ditentukan (2 Hz), hingga diperoleh
hasil 31250
● Memastikan bahwa hasil tersebut dapat digunakan dengan membandingkannya nilai
maximum prescaler, bila nilai tersebut lebih kecil (dalam hal ini 31250 lebih kecil dari
65536), maka hasilnya tersebut valid, bila tidak valid gunakan nilai prescaler yang lebih
besar
PWM dan Timer
Terdapat hubungan antara timer dengan output PWM. Dalam data sheet atau pin out
microcontroller (Arduino) terdapat PWM pin dengan nama seperti OCRxA, OCRxB, atau
OCRxC, dimana x adalah nomor timer. Untuk fungsi pin PWM sering digunakan bersama
dengan fungsi lainnya. Untuk board Arduino Uno memiliki 3 timer dan 6 pin output PWM.
Kaitan antara timer dengan output PWM sebagai berikut.

● Arduino pin 5 dan 6, dikendalikan oleh Timer0


● Arduino pin 9 dan 10, dikendalikan oleh Timer1
● Arduino pin 3 dan 11, dikendalikan oleh Timer2

Sementara itu untuk board Arduino Mega terdapat 6 timer dengan output 15 PWM, dengan
konfigurasi sebagai berikut.

● Arduino pin 4 dan 13, dikendalikan oleh Timer0


● Arduino pin 11 dan 12, dikendalikan oleh Timer1
● Arduino pin 9 dan 10, dikendalikan oleh Timer2
● Arduino pin 2, 3, dan 5, dikendalikan oleh Timer3
● Arduino pin 6, 7, dan 8, dikendalikan oleh Timer4
● Arduino pin 46, 45, dan 44, dikendalikan oleh Timer5

Mode Operasi Timer


Ada empat mode operasi timer pada microcontroller, yakni sebagai berikut.

● Normal, hanya untuk mencacah, melakukan delay, menghitung selang waktu


● PWM, phase correct, membentuk gelombang PWM resolusi tinggi, berdasarkan operasi
dual slope
● CTC (Clear Timer Compare Match), mengembalikan nilai TCNT ke 0, saat nilainya telah
sama dengan nilai set point OCR
● Fast PWM, memberikan pulsa PWM frekuensi tinggi, berdasarkan operasi single slope
Timer pada arduino:
Cobalah coding berikut ini yang merupakan contoh membuat jam, yang memanfaatkan
perulangan dan beberapa syntax khusus, yang kemudian akan ditampilkan pada serial
monitor. Silahkan dicoba dan dipelajari.
Latihan:
1. Jelaskan codingan yang ada pada baris 1-20!
2. Jelaskan arti dari variable variable yang ada pada void setup!

Anda mungkin juga menyukai