timer/counter
DESCRIPTION
Timer/Counter. Apa itu timer/counter?. Merupakan suatu pencacah(counter) yang bisa menghitung naik/turun Pencacah berupa register 8 bit/16 bit Nilai cacahan yg tersimpan di register tersebut akan naik/turun pada transisi naik (positive edge) clock masukan. Gambaran timer. enable. Clock in. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Timer/Counter](https://reader036.vdokumen.com/reader036/viewer/2022082319/56814400550346895db09385/html5/thumbnails/1.jpg)
Timer/Counter
![Page 2: Timer/Counter](https://reader036.vdokumen.com/reader036/viewer/2022082319/56814400550346895db09385/html5/thumbnails/2.jpg)
Apa itu timer/counter?
• Merupakan suatu pencacah(counter) yang bisa menghitung naik/turun
• Pencacah berupa register 8 bit/16 bit
• Nilai cacahan yg tersimpan di register tersebut akan naik/turun pada transisi naik (positive edge) clock masukan
![Page 3: Timer/Counter](https://reader036.vdokumen.com/reader036/viewer/2022082319/56814400550346895db09385/html5/thumbnails/3.jpg)
Gambaran timer
Register pencacah Clockinternal
Clockeksternal
Clock in
select
mux
enable
![Page 4: Timer/Counter](https://reader036.vdokumen.com/reader036/viewer/2022082319/56814400550346895db09385/html5/thumbnails/4.jpg)
Timer dan counter
• Timer : clock untuk timer berasal dari clock yang dipakai oleh sistem (internal).Jika kita menggunakan kristal, clock untuk timer bersumber dari kristal. Timer biasanya digunakan untuk pewaktuan
• Counter: clock berasal dari pin Tn(T0,T1 atau TOSC1-TOSC2). Digunakan untuk mencacah event dari luar(mencacah pulsa dsb)
![Page 5: Timer/Counter](https://reader036.vdokumen.com/reader036/viewer/2022082319/56814400550346895db09385/html5/thumbnails/5.jpg)
Sumber clock untuk timer
• Langsung terhubung ke clock sistem(f_clk)
• Lewat prescaler(pembagi)– f_clk/8– f_clk/64– f_clk/256– f_clk/1024
![Page 6: Timer/Counter](https://reader036.vdokumen.com/reader036/viewer/2022082319/56814400550346895db09385/html5/thumbnails/6.jpg)
Timer 0
• Timer 8 bit• Register yang digunakan:
– TCNT0 register pencacah, menampung nilai yang dicacah
– TCCR0 register kontrol, untuk memilih mode operasi, memilih prescaler
– OCR0 register untuk menentukan nilai maks pada mode operasi compare
– TIMSK register untuk meng-enable/disable dan memilih interupsi timer(digunakan juga di timer1 dan 2)
– TIFR register flag yang menandai terjadinya suatu interupsi timer (digunakan juga di timer1 dan 2)
![Page 7: Timer/Counter](https://reader036.vdokumen.com/reader036/viewer/2022082319/56814400550346895db09385/html5/thumbnails/7.jpg)
Mode Operasi Timer 0
Mode Normal– Register TCNT0 count up dari suatu nilai
sampai mencapai nilai 0xFF kemudian restart ke nilai 0x00
– Peristiwa restart itu disebut overflow– Pada saat overflow, bit TOV0 akan logika 1
dan mengakibatkan interupsi(jika interupsi di-enable)
![Page 8: Timer/Counter](https://reader036.vdokumen.com/reader036/viewer/2022082319/56814400550346895db09385/html5/thumbnails/8.jpg)
Mode Operasi Timer 0
2. Mode clear timer on compare match(CTC)• TCNT0 akan count up dari suatu nilai
sampai mencapai nilai maks (< 0xFF)• Nilai maks ini didefinisikan di register
OCR0• Setelah mencapai nilai maks, TCNT0
akan reset kembali ke 0x00 dan bit OCF0 (output compare flag) akan set
• Interupsi akan terjadi jika di-enable
![Page 9: Timer/Counter](https://reader036.vdokumen.com/reader036/viewer/2022082319/56814400550346895db09385/html5/thumbnails/9.jpg)
Mode Operasi Timer 0
3. Fast PWM mode
4. Phase correct PWM
3 dan 4 akan dibicarakan pada pertemuan berikutnya
![Page 10: Timer/Counter](https://reader036.vdokumen.com/reader036/viewer/2022082319/56814400550346895db09385/html5/thumbnails/10.jpg)
Register TCNT0
![Page 11: Timer/Counter](https://reader036.vdokumen.com/reader036/viewer/2022082319/56814400550346895db09385/html5/thumbnails/11.jpg)
Register TCCR0,bit WGM
• Bit WGM digunakan untuk memilih mode operasi
![Page 12: Timer/Counter](https://reader036.vdokumen.com/reader036/viewer/2022082319/56814400550346895db09385/html5/thumbnails/12.jpg)
Reg TCCR0 bit COM
• Digunakan untuk konfigurasi mode CTC(compare match)
![Page 13: Timer/Counter](https://reader036.vdokumen.com/reader036/viewer/2022082319/56814400550346895db09385/html5/thumbnails/13.jpg)
TCCR0 bit CS
• Untuk memilih sumber clock dan prescaler
![Page 14: Timer/Counter](https://reader036.vdokumen.com/reader036/viewer/2022082319/56814400550346895db09385/html5/thumbnails/14.jpg)
Output Compare Register (OCR0)
• Digunakan untuk menyimpan nilai ‘compare’ yang akan selalu dibandingkan dengan nilai TCNT0 pada mode compare match
![Page 15: Timer/Counter](https://reader036.vdokumen.com/reader036/viewer/2022082319/56814400550346895db09385/html5/thumbnails/15.jpg)
Timer interrupt mask register
• Digunakan untuk aktivasi interupsi timer, yang digunakan untuk timer 0 hanya bit 0 dan 1
![Page 16: Timer/Counter](https://reader036.vdokumen.com/reader036/viewer/2022082319/56814400550346895db09385/html5/thumbnails/16.jpg)
Memakai timer 0 dalam program
• Memakai timer 0 dalam mode overflow,menggunakan interupsi– Setting vektor interupsi, memberikan perintah RJMP
pada alamat vektor interupsi timer 0 overflow, yaitu alamat 0x009
– Inisialisasi : mengisi nilai awal TCNT0– Setting TCCR0 untuk setting mode operasi overflow
(WGM00=0,WGM01=0) dan memilih sumber clock dan prescaler (CS02 .. CS01)
– Meng-enable bit TOIE0 pada register TIMSK– Meng-enable global interrupt (perintah SEI)
![Page 17: Timer/Counter](https://reader036.vdokumen.com/reader036/viewer/2022082319/56814400550346895db09385/html5/thumbnails/17.jpg)
Timer 0 compare match
• Memakai timer 0 dalam mode compare match,menggunakan interupsi– Setting vektor interupsi, memberikan perintah RJMP
pada alamat vektor interupsi timer 0 overflow, yaitu alamat 0x013
– Inisialisasi: mengisi nilai awal TCNT0 dan mengisi nilai OCR0
– Setting TCCR0 untuk setting mode operasi overflow (WGM00=0,WGM01=1) dan memilih sumber clock dan prescaler (CS02 .. CS01)
– Meng-enable bit TOIE0 pada register TIMSK– Meng-enable global interrupt (perintah SEI)
![Page 18: Timer/Counter](https://reader036.vdokumen.com/reader036/viewer/2022082319/56814400550346895db09385/html5/thumbnails/18.jpg)
Contoh soal
• Buatlah sebuah tampilan pencacah naik yang ditampilkan di LED pada PORTC. Pencacah naik setiap 1 detik. Kristal yang digunakan 4 MHz. Sistem juga menampilkan variasi nyala LED pada PORTB, yang timing-nya diatur dengan delay register
![Page 19: Timer/Counter](https://reader036.vdokumen.com/reader036/viewer/2022082319/56814400550346895db09385/html5/thumbnails/19.jpg)
Setting timer• Misalnya diinginkan menggunakan timer 0 dalam mode normal
(overflow)• timer dirancang overflow 0.01 detik sekali (100 Hz-biar frekuensi
tidak terlalu kecil)• Karena frekuensi overflow cukup rendah, gunakan prescaler 1024,
jadi frekuensi xtal 4 MHz akan dibagi 1024 baru masuk ke pencacah• F_pencacah=4 M/1024 = 3906.25 Hz• Untuk mencapai 100 Hz harus dibagi 39• Sehingga TCNT0 harus diisi dahulu dengan nilai sebesar 0xFF – 39
= 216, nilai ini juga harus diisikan ulang pada saat interupsi timer• Timer 0 sudah bisa overflow tiap 0.01 detik, supaya bisa
menghasilkan 1 detik, pada rutin interupsi timer dilakukan operasi increment register bantu