TimerCounter Apa itu timercounter Merupakan suatu pencacahcounter yang

  • Slides: 19
Download presentation
Timer/Counter

Timer/Counter

Apa itu timer/counter? • Merupakan suatu pencacah(counter) yang bisa menghitung naik/turun • Pencacah berupa

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 Clock in enable Register pencacah Clock internal mux Clock eksternal select

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

Timer dan counter • Timer : clock untuk timer berasal dari clock yang dipakai

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(T 0, T 1 atau TOSC 1 -TOSC 2). Digunakan untuk mencacah event dari luar(mencacah pulsa dsb)

Sumber clock untuk timer • Langsung terhubung ke clock sistem(f_clk) • Lewat prescaler(pembagi) –

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

Timer 0 • Timer 8 bit • Register yang digunakan: – TCNT 0 register

Timer 0 • Timer 8 bit • Register yang digunakan: – TCNT 0 register pencacah, menampung nilai yang dicacah – TCCR 0 register kontrol, untuk memilih mode operasi, memilih prescaler – OCR 0 register untuk menentukan nilai maks pada mode operasi compare – TIMSK register untuk meng-enable/disable dan memilih interupsi timer(digunakan juga di timer 1 dan 2) – TIFR register flag yang menandai terjadinya suatu interupsi timer (digunakan juga di timer 1 dan 2)

Mode Operasi Timer 0 Mode Normal – Register TCNT 0 count up dari suatu

Mode Operasi Timer 0 Mode Normal – Register TCNT 0 count up dari suatu nilai sampai mencapai nilai 0 x. FF kemudian restart ke nilai 0 x 00 – Peristiwa restart itu disebut overflow – Pada saat overflow, bit TOV 0 akan logika 1 dan mengakibatkan interupsi(jika interupsi di -enable)

Mode Operasi Timer 0 2. Mode clear timer on compare match(CTC) • TCNT 0

Mode Operasi Timer 0 2. Mode clear timer on compare match(CTC) • TCNT 0 akan count up dari suatu nilai sampai mencapai nilai maks (< 0 x. FF) • Nilai maks ini didefinisikan di register OCR 0 • Setelah mencapai nilai maks, TCNT 0 akan reset kembali ke 0 x 00 dan bit OCF 0 (output compare flag) akan set • Interupsi akan terjadi jika di-enable

Mode Operasi Timer 0 3. Fast PWM mode 4. Phase correct PWM 3 dan

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

Register TCNT 0

Register TCNT 0

Register TCCR 0, bit WGM • Bit WGM digunakan untuk memilih mode operasi

Register TCCR 0, bit WGM • Bit WGM digunakan untuk memilih mode operasi

Reg TCCR 0 bit COM • Digunakan untuk konfigurasi mode CTC(compare match)

Reg TCCR 0 bit COM • Digunakan untuk konfigurasi mode CTC(compare match)

TCCR 0 bit CS • Untuk memilih sumber clock dan prescaler

TCCR 0 bit CS • Untuk memilih sumber clock dan prescaler

Output Compare Register (OCR 0) • Digunakan untuk menyimpan nilai ‘compare’ yang akan selalu

Output Compare Register (OCR 0) • Digunakan untuk menyimpan nilai ‘compare’ yang akan selalu dibandingkan dengan nilai TCNT 0 pada mode compare match

Timer interrupt mask register • Digunakan untuk aktivasi interupsi timer, yang digunakan untuk timer

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

Memakai timer 0 dalam program • Memakai timer 0 dalam mode overflow, menggunakan interupsi

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 0 x 009 – Inisialisasi : mengisi nilai awal TCNT 0 – Setting TCCR 0 untuk setting mode operasi overflow (WGM 00=0, WGM 01=0) dan memilih sumber clock dan prescaler (CS 02. . CS 01) – Meng-enable bit TOIE 0 pada register TIMSK – Meng-enable global interrupt (perintah SEI)

Timer 0 compare match • Memakai timer 0 dalam mode compare match, menggunakan interupsi

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 0 x 013 – Inisialisasi: mengisi nilai awal TCNT 0 dan mengisi nilai OCR 0 – Setting TCCR 0 untuk setting mode operasi overflow (WGM 00=0, WGM 01=1) dan memilih sumber clock dan prescaler (CS 02. . CS 01) – Meng-enable bit TOIE 0 pada register TIMSK – Meng-enable global interrupt (perintah SEI)

Contoh soal • Buatlah sebuah tampilan pencacah naik yang ditampilkan di LED pada PORTC.

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

Setting timer • Misalnya diinginkan menggunakan timer 0 dalam mode normal (overflow) • timer

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 TCNT 0 harus diisi dahulu dengan nilai sebesar 0 x. FF – 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