1 / 19

Timer/Counter

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.

eze
Télécharger la présentation

Timer/Counter

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Timer/Counter

  2. 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

  3. Gambaran timer enable Clock in Register pencacah Clock internal mux Clock eksternal select

  4. 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)

  5. 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

  6. 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)

  7. 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)

  8. 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

  9. Mode Operasi Timer 0 3. Fast PWM mode 4. Phase correct PWM 3 dan 4 akan dibicarakan pada pertemuan berikutnya

  10. Register TCNT0

  11. Register TCCR0,bit WGM • Bit WGM digunakan untuk memilih mode operasi

  12. Reg TCCR0 bit COM • Digunakan untuk konfigurasi mode CTC(compare match)

  13. TCCR0 bit CS • Untuk memilih sumber clock dan prescaler

  14. Output Compare Register (OCR0) • Digunakan untuk menyimpan nilai ‘compare’ yang akan selalu dibandingkan dengan nilai TCNT0 pada mode compare match

  15. Timer interrupt mask register • Digunakan untuk aktivasi interupsi timer, yang digunakan untuk timer 0 hanya bit 0 dan 1

  16. 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)

  17. 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)

  18. 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

  19. 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

More Related