Cara membuat counter menggunakan timer di ATmega 16. ATmega memiliki tiga buah timer yaitu T0, T1 dan T2. Timer 0 dan Timer 2 merupakan timer 8 bit sementara timer 1 merupakan timer 16 bit. Penggunaan timer setidaknya dibagi menjadi tiga, yaitu timer biasa, counter atau sebagai pengatur Pulse Width Modulation (PWM).
Timer biasa digunakan sebagai pewaktu, dengan nilai timernya disesuaikan dengan kristal oscilator dan prescaller yang digunakan. Counter dipakai untuk melakukan penghitungan/pencacahan, sementara PWM biasa digunakan untuk mengatur kecepatan motor/ intensitas kecerahan cahaya pada led.
Cara Membuat Counter Menggunakan Timer di ATmega 16
Penggunaan counter pada AVR dapat menggunakan dua cara, yang pertama menggunakan timer, dan yang kedua menggunakan bantuan variabel tertentu saat melakukan coding. Pada ATMega16 hanya timer 0 dan timer 1 yang bisa digunakan sebagai counter, yaitu lewat input T0 dan T1, sedangkan timer 2 tidak dilengkapi counter.
Prinsip penggunaan counter adalah, ketika terjadi trigger pada pin T0/T1 maka nilai TCNT akan mencacah sampai mencapai nilai maksimal (oxff pada timer0 dan 0xffff pada timer1). Trigger dapat menggunakan rissing edge maupun falling edge. Dengan demikian untuk menyalakan/mematikan lampu setelah tombol ditekan 3 kali pada timer 0 maka nilai hitung pada TCNT adalah 0xff -0x03 = 0xfd.
Output berupa LED yang dihubungkan pada PORTC.0, sementara agar nilai TCNT diset ulang setelah terjadi overflow terpenuhi dan mengubah output led nyala/padam maka interrupt overflow diaktifkan.
Yang harus diperhatikan dalam penggunaan timer adalah inisialisasi register pada timer itu sendiri, jika menggunakan timer0 maka register yang harus ada adalah TCCR0, TCNT0 dan TIMSK. Berikut listing program timer dalam CVAVR dan tampilan simulasi menggunakan ISIS proteus simulator.
/***************************************************** CodeWizardAVR V2.05.0 Advanced Project : memahami counter pada timer ATMega Version : Date : 24/03/2014 Author : Priyo Harjiyono Company : https://anotherorion.com Comments: Chip type : ATmega16 Program type : Application AVR Core Clock frequency: 8,000000 MHz Memory model : Small External RAM size : 0 Data Stack size : 256 *****************************************************/ #include <mega16.h> interrupt [TIM0_OVF] void timer0_ovf_isr(void) { TCNT0=0xfd; if (PORTC==1) {PORTC=0;} else {PORTC=1;} } void main(void) { PORTC=0x00; DDRC=0x1; // Timer/Counter 0 initialization // Clock source: T0 pin Rising Edge // Mode: Normal top=0xFF // OC0 output: Disconnected TCCR0=0x07; TCNT0=0xfd; OCR0=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x01; // Global enable interrupts #asm("sei") while (1) { // Place your code here } }
download source codeĀ counter atmega menggunakan codevision avr dan proteus
BELI BUKU MIKROKONTROLLER AVR | ||||
Lingga Wardhana |
![]() Heri Andrianto |
Ardi Winoto |
![]() Sidik Nur C |
|
![]() Ary Heryanto |
![]() Andi Nalwan |
![]() Afrie Setiawan |
![]() Syahrul |