Codevision AVR Counter ATMega menggunakan timer0

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
      }
}

counter timer avr atmega anotherorion

download source code counter atmega menggunakan codevision avr dan proteus

BELI BUKU MIKROKONTROLLER AVR
Belajar Sendiri Mikrokontroler AVR Seri ATMega8535: Simulasi, Hardware dan Aplikasi
Lingga Wardhana
Pemrograman Mikrokontroler AVR Atmega16: Menggunakan Bahasa C (CodeVision AVR)
Heri Andrianto
Mikrokontroler AVR ATmega8/32/16/8535 dan Pemrogramannya dengan Bahasa C pada WinAVR
Ardi Winoto
Aplikasi dan Teknik Pemrograman Mikrokontroler AVR Atmel
Sidik Nur C
Pemrograman Bahasa C Untuk Mikrokontroler ATMEGA8535
Ary Heryanto
Teknik Rancang Bangun Robot Tingkat Dasar
Andi Nalwan
20 Aplikasi Mikrokontroler ATMega 8535 & ATMega 16 Menggunakan Bascom-AVR
Afrie Setiawan
Mikrokontroler AVR ATMEGA8535
Syahrul

Tinggalkan komentar

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.

Ingin produk/website Anda kami ulas? Silahkan klik tombol dibawah ini