Anda di halaman 1dari 8

MODUL 2

TE201427
Sistem Mikroprosesor dan
Mikrokontroler
MODUL 2
TIMER COUNTER

1. Dasar Teori
Timer dan Coutner merupakan salah satu peripheral yang dimiliki oleh mikrokontroler
ATMega328p. Timer dan Counter memiliki fungsi pewaktu dan pencacah. Adapun peripheral Timer
dan Counter pada mikrokontroler ATMega328p dimiliki oleh Timer Counter 0, Timer Counter 1,
dan Timer Counter 2. masing-masing peripheral Timer memiliki resolusi yang berbeda. Timer
Counter 0 dan Timer Counter 2 memiliki resolusi 8 bit, sedangkan Timer Counter 1 memiliki
resolusi 16 bit.
Sebagai pewaktu, peripheral Timer Counter dapat digunakan untuk menghasilkan sinyal
Pulse Width Modulation (PWM) dan Timer interrupt. Sinyal PWM banyak digunakan untuk
aplikasi kendali motor DC, sedangkan Timer Interrupt banyak digunakan untuk pensamplingan
dengan interval waktu yang konstan.
Sebagai pencacah, peripheral Timer Counter dapat menghitung jumlah pulsa, sehingga
peripheral Timer Counter dapat digunakan sebagai interface dengan rotary encoder. Selain itu,
Timer Counter juga dapat digunakan untuk menghitung lebar pulsa yang terhubung oleh pin
mikrokontroler.
Register yang terdapat pada peripheral Timer Counter 0 antara lain Timer Counter Control
Register A (TCCR0A), Timer Counter Control Register B (TCCR0B), Timer Counter Interrupt
Mask Register (TIMSK0), General Timer Counter Control Register (GTCCR), Timer Counter
Counter Value Register (TCNT0), Timer Counter Output Compare Register A (OCR0A), Timer
Counter Output Compare Register B (OCR0B), dan Timer Counter Interrupt Flag Register (TIFR0).
Timer Counter 1 dan 2 memiliki beberapa tambahan register. Pada Timer Counter 1, tambahan
register pada register low untuk 8 bit LSB dan register high untuk 8 bit MSB. Sedangkan pada
Timer Counter 2 terdapat Asynchronous Status Register.

Gambar 1: diagram blok peripheral Timer Counter


Gambar 2: Ouput PWM

Sinyal PWM dihasilkan dari perbandingan antara nilai pada register TCNT dan Output
Compare Register (OCR). Perbandingan kedua nilai register menghasilkan tingkah laku pada pin
Output Compare (OC) tergantung mode yang dikonfigurasi pada register TCCRA yang dapat
ditunjukkan melalui Tabel 1, Tabel 2, dan Tabel 3. Mode dari PWM dapat dikonfigurasi juga
melalui register TCCRA sesuai dengan Tabel 4.
Sebagai pewaktu, nilai register TCNT akan naik melalui trigger dari sumber clock. Sumber
clock dapat berasal dari clockspeed yang digunakan mikrokontroler, yaitu sekitar 16MHz, atau
dapat dibagi menggunakan prescaler yang terdapat pada register TCCRB. Nilai prescaler berkisar
antara 1 hingga 1024. Nilai prescaler dapat ditunjukkan melalui Tabel 5.
Apabila peripheral Timer Counter difungsikan sebagai pencacah, maka pada register
TCCRB dikonfigurasikan pin T0 sebagai sumber clock. Trigger sumber clock dapat dipilih falling
edge detection atau rising edge detection. Konfigurasi pin T0 sebagai sumber clock dapat
ditunjukkan melalui Tabel 5.
Tabel 1. Compare output mode, non-PWM

Tabel 2. Compare output mode, Fast PWM

Tabel 3. Compare output mode, Phase Correct PWM

Tabel 4. Mode PWM

Tabel 5. Prescaler clocksource

Inisialisasi peripheral Timer Counter sebagai pewaktu dan menghasilkan sinyal PWM dapat
dilakukan dengan mengkonfigurasi pin OCA atau OCB sebagai output. Kemudian menentukan
mode PWM, compare output mode, dan clocksource. Dutycyle dari sinyal PWM ditentukan oleh
Register OCRA dan OCRB. Sedangkan inisialisasi Timer Counter sebagai pencacah dilakukan
dengan mengkonfigurasi pin T0 pada Timer Counter 0 sebagai input. Kemudian mode PWM
normal, compare output mode normal dan pin T0 sebagai clocksource.

Percobaan 1: Penghasil Sinyal PWM


1. Buka program Microchip Studio, dan buatlah project menggunakan bahasa assembly.
2. Tulis program seperti berikut:
start:
.equ ledA= 200
.equ ledB= 2

ldi r16,0b01100000
out ddrd,r16
ldi r16,0b00000000
out portd,r16

ldi r16,0b10100001
out tccr0a,r16
ldi r16,0b00000101
out tccr0b,r16
ldi r16,ledA
out OCR0A,r16
ldi r16,ledB
out OCR0B,r16

3. Lakukan debug pada program yang tertulis pada instruksi no 2.


4. Amati register yang berubah, kemudian jelaskan PORT dan pin ke berapa berfungsi sebagai
apa!
5. Buatlah rangkaian seperti gambar di bawah ini dan sambungkan arduino dengan PC

6. kemudian upload program ke arduino uno denga melalukan build program (tekan tombol f7)
dan pilih menu Tools→avr_usb
7. Amati kedua LED pada arduino uno dan jelaskan pengaruh program dengan mikrokontroler
arduino uno anda!

Percobaan 2: Pencacah
1. Buka program Microchip Studio, dan buatlah project menggunakan bahasa assembly.
2. Tulis program seperti berikut:
start:
ldi r16,0x00
out ddrd,r16

ldi r16,0xff
out ddrc,r16
clr r16
out portc,r16

ldi r17,0x06
out tccr0b,r17

loop:
in r18,tcnt0
out portc,r18
rjmp loop
3. Lakukan debug pada program yang tertulis pada instruksi no 2.
4. Amati register yang berubah, kemudian jelaskan PORT dan pin ke berapa berfungsi sebagai
apa!
5. Buatlah rangkaian seperti gambar di bawah ini dan sambungkan dengan PC

6. Kemudian upload program ke arduino uno denga melalukan build program (tekan tombol
f7) dan pilih menu Tools→avr_usb
7. Amati kedua LED pada arduino uno saat pushbutton ditekan dan jelaskan pengaruh program
dengan mikrokontroler arduino uno anda!

Percobaan 3: Dimmer
1. Buka program Microchip Studio, dan buatlah project menggunakan bahasa assembly.
2. Tulis program seperti berikut:
start:
clr r16
clr r18
out ddrc,r16

ldi r16,0x20
out ddrd,r16
clr r16
out portd,r16

ldi r17,0x21
out tccr0a,r17
ldi r17,0x02
out tccr0b,r17

loop:
out ocr0b,r18
in r19,pinc
cpi r19,0x01
breq backtoloop
inc r18
backtoloop:
rjmp loop

3. Lakukan debug pada program yang tertulis pada instruksi no 2.


4. Amati register yang berubah, kemudian jelaskan PORT dan pin ke berapa berfungsi sebagai
apa!
5. Buatlah rangkaian seperti gambar di bawah ini dan sambungkan dengan PC

6. Kemudian upload program ke arduino uno denga melalukan build program (tekan tombol
f7) dan pilih menu Tools→avr_usb
7. Amati kedua LED pada arduino uno saat pushbutton ditekan dan jelaskan pengaruh program
dengan mikrokontroler arduino uno anda!
Tugas
1. Buatlah program dalam bahasa assembly untuk dimmer LED yang dapat diatur dari 2
pushbutton, pushbutton pada pin A0 untuk meningkatkan kecerahan LED, sedangkan
pushbutton A1 untuk menurunkan kecerahan LED.

Anda mungkin juga menyukai