Anda di halaman 1dari 4

Timer dan Counter Pada Atmega 8535

Rahmat Panji Iswandi


0910117428027

Fairuza Adha
0810117428039

1.Konsep Timer/Counter
Timer/Counter pada mikrokontroler AVR dapat digunakan untuk melakukan pencacahan waktu seperti pada jam digital maupun untuk menghasilkan sinyal PWM (Pulse Width Modulation) yakni sinyal kotak dengan frekuensi dan duty cycle yang nilainya bisa diatur. Atmega8535 memiliki tiga unit Timer/Counter yaitu Timer/Counter 0 (8 bit), Timer/Counter 1 (16 bit), dan Timer/Counter 2 (8 bit). Timer/Counter adalah sebuah unit yang dapat menghitung (Counter) dan melakukan timing dengan menggunakan frekuensi kristal sebagai sumber clock counternya internal atau sumber eksternal melalui pin T0. Konsep kerja Timer Prescaler = 1 Prescaler = 8 Prescaler = 64 Prescaler = 256 Prescaler = 1024 TIMERclock = Fcpu TIMERclock = Fcpu/8 TIMERclock = Fcpu/64 TIMERclock = Fcpu/256 TIMERclock = Fcpu/1024

TIMERclock = TIMERresolution =




 = = 0,000032 Sec = 32S

2. Prescaler Prescaler adalah nilai pembagi untuk menentukan nilai clock source. Macam macam nilai prescaler yang diizinkan adalah 1, 8 , 64 , 256 , 1024. Maximum sama dengan XTAL, minimum
XTAL/1024

3. Formula Perhitungan waktu pada timer TIMERclock = TIMERresolution = 




 = = 0,000032 Sec = 32S

5. Contoh Program
#include <mega8535.h> #include <stdio.h> // LCD di PORT B #asm .equ __lcd_port=0x18 #endasm #include <lcd.h> unsigned char buff[30]; unsigned long detik; // sub rutin saat terjadi interrupt Timer 1

interrupt [TIM1_OVF] void timer1_ovf_isr(void) { TCNT1H=0xC2; TCNT1L=0xF7; detik++; lcd_clear(); sprintf(buff,"detik %d",detik); lcd_puts(buff); } void main(void) { // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: kHz // Mode: Normal top=FFFFh // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge TCCR1A=0x00; TCCR1B=0x04; TCNT1H=0xC2; TCNT1L=0xF7; OCR1AH=0x00; OCR1AL=0x00;

OCR1BH=0x00; OCR1BL=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x04; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off // Analog Comparator Output: Off ACSR=0x80; SFIOR=0x00; // LCD module initialization lcd_init(16); // Global enable interrupts #asm("sei") lcd_putsf("wait..."); while (1) { }; }