X
    Categories: mikrokontroler

Codevision AVR Counter ATMega menggunakan timer0


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.

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 dalam codevision AVR 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 : http://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

program timer codevision avr (18), program timer cvavr (6), program counter untuk menyalakan led di cvavr (4), cara menggunakan timer pada atmega16 (4), program cvavr conterup 10x penekanan tombol (4), program pwm codevision avr (3), cara program timer atmega (3), counter cvavr (3), program timer cvavr atmega128 (2), langkah langkah dalam pembuatan project codevision avr menggunakan at mega 32 (2)

Post You May Also Like

anotherorion: Priyo Harjiyono, blogger kelahiran Cilacap yang kini menjadi warga Ngayogyakarta Hadiningrat, baginya blog adalah dunia untuk menciptakan mimpi2nya. Saat ini masih disibukkan sebagai pembelajar dalam dunia pendidikan.