Anda di halaman 1dari 24

Timer

SISTEM
MIKROKONTROLER
I Gde Eka Dirgayussa
ATmega Architecture

Peripheral I/O Interrupt Timer/


SPI USART TWI Comparator
Block Module Unit Counters

DATA BUS

General Purpose
Register ( 8 x 32) Stack Pointer SRAM
Oscillator

Control
Line Program Counter Program FLASH
MCU ALU
CTRL. &
Timming
Instruction Instruction EEPROM
Status Register
Decoder Register
Clock
System Central Processing Unit (CPU) Memory Block
Timer pada ATmega8535
Peripheral I/O Interrupt Timer/
Block Module Unit Counters

1. Timer = penghitung waktu


2. Terdapat 3 jenis timer pada ATmega8525
- Timer 0: kapasitas 8 bit (1 byte)
- Timer 1: kapasitas 16 bit (2 byte)
- Timer 2: kapasitas 8 bit (1 byte)

© https://www.sparkfun.com/news/2613

01/03/2021 GDE/SISMIK/TEKNIK ELEKTRO 3


Review Frekuensi (f) dan Perioda (T)

𝐹𝐹𝐹𝐹𝐹𝐹𝐹𝐹𝐹𝐹𝐹𝐹𝐹𝐹𝐹𝐹𝐹𝐹 (𝑓𝑓) = jumlah getaran dalam satu satuan waktu (Hz)


𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃 (𝑇𝑇) = waktu yang dibutuhkan untuk satu kali getaran (s)
1
𝑇𝑇 =
𝑓𝑓

01/03/2021 GDE/SISMIK/TEKNIK ELEKTRO 4


Prinsip Kerja Timer 0

TOV0 TCNT0 Clock dari


Prescaler
(1 bit) (8 bit) Osilator

Prescaler
• Berfungsi untuk membagi frekuensi agar periodenya menjadi besar
• Nilai Prescaler adalah 1, 8, 64, 256, dan 1024
• Contoh: Misalnya Prescaler 256, maka:

16 𝑀𝑀𝑀𝑀𝑀𝑀 𝑇𝑇 =
1
=
1
= 16 𝜇𝜇𝜇𝜇
𝑓𝑓 = = 625000 𝑓𝑓 625000
256

01/03/2021 GDE/SISMIK/TEKNIK ELEKTRO 5


Prinsip Kerja Timer 0

TOV0 TCNT0 Clock dari


Prescaler
(1 bit) (8 bit) Osilator

Timer 0
• Bekerja menghitung clock yang berasal dari osilator
• Periode timer menyesuaikan dengan frekuensi osilator (kristal)
• Pada ATmega8535, kristalnya 16MHz maka periodenya:
1 1
𝑇𝑇 = = = 0.0625 𝜇𝜇𝜇𝜇
𝑓𝑓 16 𝑀𝑀𝑀𝑀𝑀𝑀

01/03/2021 GDE/SISMIK/TEKNIK ELEKTRO 6


Prinsip Kerja Timer 0
Cara Kerja
• Yang bertugas menghitung clock adalah TCNT0 (8 bit)

TOV0 TCNT0 Clock dari


Prescaler
(1 bit) (8 bit) Osilator
Nilai TOV0 Nilai TCNT0
0 1 Pulsa ke-1
0 2 Pulsa ke-2
0 3 Pulsa ke-3
0 … ….

0 255 Pulsa ke-255


overflow
Pulsa ke-1
1 0 Pulsa ke-256

01/03/2021 GDE/SISMIK/TEKNIK ELEKTRO 7


Prinsip Kerja Timer 1

TOV1 TCNT1H + TCNT1L Clock dari


Prescaler
(1 bit) (16 bit) Osilator

• Prinsipnya sama dengan Timer 0


• Register pencacah (penghitung pulsa) adalah TCNT1H + TCNT1L
dengan kapasitas 16 bit, sehingga mampu mencacah sampai 65535
atau &HFFFF
• TOV1 adalah register pemantau overflow (flag) yaitu register TIFR.2
yang akan bernilai 0 selama belum overflow dan akan bernilai 1
setelah overflow.

01/03/2021 GDE/SISMIK/TEKNIK ELEKTRO 8


Prinsip Kerja Timer 1
Cara Kerja
• Yang bertugas menghitung clock adalah TCNT0 (8 bit)

TOV1 TCNT1H + TCNT1L Clock dari


Prescaler
(1 bit) (16 bit) Osilator
Nilai TOV0 Nilai TCNT1
0 1 Pulsa ke-1
0 2 Pulsa ke-2
0 3 Pulsa ke-3
0 … ….
0 65535 Pulsa ke- 65535
overflow
Pulsa ke-1
1 0 Pulsa ke- 65536

01/03/2021 GDE/SISMIK/TEKNIK ELEKTRO 9


Konfigurasi Timer 0 pada CVAVR

• Pengaturan timer dilakukan pada register


• Timer 0, registernya ada TCCR0 dan TCNT0
• TCCR0 mengatur kerja timer 0: Timer 0 dapat berfungsi sebagai Timer atau
sebagai Counter, tergantung nilai dari CS02, CS01 dan CS00

01/03/2021 GDE/SISMIK/TEKNIK ELEKTRO 10


Konfigurasi Timer 0 pada CVAVR

Pengaturan Timer 0 dilakukan dengan konfigurasi sebagai berikut.

Ref. Datasheet ATmega8535 hal 84

01/03/2021 GDE/SISMIK/TEKNIK ELEKTRO 11


Konfigurasi Timer 1 pada CVAVR
• Pengaturan timer dilakukan pada register
• Timer 1, registernya ada TCCR1B, TCNT1H dan TCNT1L
• TCCR1B mengatur kerja Timer 1
• TCNT1H + TCNT1L untuk menampung cacahan Timer 1

• TOV1 untuk mengetahui apakah Timer 1 sudah overflow atau belum


• Letak TOV1 ada di Register TIFR bit yang ke-2

01/03/2021 GDE/SISMIK/TEKNIK ELEKTRO 12


Konfigurasi Timer 0 pada CVAVR

Pengaturan Timer 0 dilakukan dengan konfigurasi sebagai berikut.

Ref. Datasheet ATmega8535 hal 112

01/03/2021 GDE/SISMIK/TEKNIK ELEKTRO 13


Contoh Penerapan Timer

//Tutorial 6: Membuat delay 1 detik dengan timer1


#include <mega8535.h>
void main()
{
DDRB=0xFF;
while (1)
{
TCNT1=49910;
TCCR1B=0b101;
while((TIFR & 0b00000100)==0);
TCCR1B=0;
TIFR=0b00000100;
PORTB=~PORTB;
}

01/03/2021 GDE/SISMIK/TEKNIK ELEKTRO 14


Hasilnya

Pada simulasi Proteus, LED akan Pada KIT, LED akan ON/OFF tiap 1 detik sekali
ON/OFF tiap 16 detik sekali

Catatan: ada perbedaan waktu antara saat


klik play pada proteus dan start pada timer,
sehingga tidak persis 16 detik

01/03/2021 GDE/SISMIK/TEKNIK ELEKTRO 15


Penjelasan Program

//Tutorial 6: Membuat delay 1 detik dengan timer1


#include <mega8535.h>
void main()
{
DDRB=0xFF;
while (1)
{
TCNT1=49910;
TCCR1B=0b101;
while((TIFR & 0b00000100)==0);
TCCR1B=0;
TIFR=0b00000100;
PORTB=~PORTB;
}

01/03/2021 GDE/SISMIK/TEKNIK ELEKTRO 16


Penjelasan Program

//Tutorial 6: Membuat delay 1 detik dengan timer1


#include <mega8535.h>
void main()
{
DDRB=0xFF;
while (1)
{
TCNT1=49910;
TCCR1B=0b101;
while((TIFR & 0b00000100)==0);
TCCR1B=0;
TIFR=0b00000100;
PORTB=~PORTB;
}

01/03/2021 GDE/SISMIK/TEKNIK ELEKTRO 17


Penjelasan Program

Mengapa dibaut prescaler 1024?

Misal: tidak dibuat skala (prescaler=1)


Maka ftimer = f osilator = 16000000Hz, artinya untuk membuat delay 1 detik dibuthkan clock atau pulsa
sebanyak 16000000. Sedangkan kapasitas timer1 maksimal 65535. Dengan menggunakan prescaler 1024,
maka jumlah pulsa yang dihitung selama 1 detik menjadi 15625 dan timer 1 dapat menampungnya.

01/03/2021 GDE/SISMIK/TEKNIK ELEKTRO 18


Penjelasan Program

//Tutorial 6: Membuat delay 1 detik dengan timer1


#include <mega8535.h>
void main() • TCNT1 yaitu register Timer1 (TCNT1H+TCNT1L) diisi 49910.
{ • Nilai ini merupakan pengurangan nilai maksimal timer dikurangi
DDRB=0xFF; dengan jumlah pulsa yang akan dicacah; 65535 – 15625 = 49910
while (1) • Setelah perintah TCCR1B=0b101, maka otomatis timer1 aktif (ON)
kemudian mencacah mulai dari 49910 dan seterusnya
{
TCNT1=49910;
TCCR1B=0b101;
while((TIFR & 0b00000100)==0);
TCCR1B=0;
TIFR=0b00000100;
PORTB=~PORTB;
}

01/03/2021 GDE/SISMIK/TEKNIK ELEKTRO 19


Penjelasan Program

//Tutorial 6: Membuat delay 1 detik dengan timer1


#include <mega8535.h>
void main() • Program akan looping disini sampai kondisi TIFR.2=1.
{ • Register TIFR.2=1 adalah TOV1 yang merupakan register flag
DDRB=0xFF; (penanda) ketika Timer1 overflow, sehingga TOV1(TIFR.2) akan set
while (1) menjadi 1. Kemudian nilai TIFR & 0b00000100≠ 0 dan while() bernilai
false dan looping selesai.
{
• Ketika timer 1 sudah overflow (sudah mencapai 15625 pulsa) berarti
TCNT1=49910; sudah 1 detik, kemudian timer dimatikan.
TCCR1B=0b101;
while((TIFR & 0b00000100)==0);
TCCR1B=0;
TIFR=0b00000100;
PORTB=~PORTB;
}

01/03/2021 GDE/SISMIK/TEKNIK ELEKTRO 20


Penjelasan Program

//Tutorial 6: Membuat delay 1 detik dengan timer1


#include <mega8535.h>
void main()
{ • Perintah ini membuat Timer1 OFF
DDRB=0xFF;
while (1)
{
TCNT1=49910;
TCCR1B=0b101;
while((TIFR & 0b00000100)==0);
TCCR1B=0;
TIFR=0b00000100;
PORTB=~PORTB;
}

01/03/2021 GDE/SISMIK/TEKNIK ELEKTRO 21


Penjelasan Program

//Tutorial 6: Membuat delay 1 detik dengan timer1


#include <mega8535.h>
void main() • Perintah ini membuat TOV1 Kembali menjadi 0 agar nanti dapat
{ digunakan untuk memantau overflow lagi.
DDRB=0xFF; • Ingat bahwa TOV1 ada di bit ke-2 dari TIFR.
while (1)
{
TCNT1=49910;
TCCR1B=0b101;
while((TIFR & 0b00000100)==0);
TCCR1B=0;
TIFR=0b00000100;
PORTB=~PORTB;
}

01/03/2021 GDE/SISMIK/TEKNIK ELEKTRO 22


Penjelasan Program

//Tutorial 6: Membuat delay 1 detik dengan timer1


#include <mega8535.h>
void main()
{ • Tanda negasi “ ~ ” membuat nilai PORTB menjadi
DDRB=0xFF; negasi/kebalikan dari nilai sebelumnya.
while (1)
{
TCNT1=49910;
TCCR1B=0b101;
while((TIFR & 0b00000100)==0);
TCCR1B=0;
TIFR=0b00000100;
PORTB=~PORTB;
}

01/03/2021 GDE/SISMIK/TEKNIK ELEKTRO 23


Referensi

1. Agung Setiabudi.2020. Kuliah Sistem Mikrokontroler, Universitas Brawijaya


2. Barret, Steven F, “Atmel AVR Microcontroller Primer: Programming and
Interfacing” Morgan and Claypool, 2008.
3. Gadre, Dhananjay V, “Programming & Customizing The AVR
Microcontroller”, Mc-Graw Hill, 2001
4. Ricardo Guiterrez-Osuna. Wright State University
5. https://microchipdeveloper.com/8avr:memory [Diakses 8 Februari 2021]

01/03/2021 GDE/SISMIK/TEKNIK ELEKTRO 24

Anda mungkin juga menyukai