Popular Post

Popular Posts

Posted by : Kurnia Pratama Lahadi Putra Senin, 05 Mei 2014

MODUL VIII

 

MENGGUNAKAN TIMER

DALAM MIKROKONTROLLER ATMEGA8535


 TUJUAN
      Mahasiswa mampu menggunakan fitur timer/counter mikrokontroler.
      Mahasiswa mampu menggunakan mikrokontroler untuk membuat timer.
      Mahasiswa mampu menggunakan mikrokontroler untuk menghitung banyaknya pulsa yang masuk.


TIMER/COUNTER
Timer/counter dalam Atmega8535 ada 3 yaitu:
      Timer/counter 0
      Timer/counter 1
      Timer/counter 2            
Interrupt timer berasal dari dua sumber yaitu:
      Overflow interrupt, dimana interrupt terjadi jika TCNTn mencapai 255 untuk timer 8 bit dan 65535 untuk timer 16 bit.
      Compare match interrupt, dimana interrupt terjadi jika nilai OCR sama dengan TCNTn.

Pada dasarnya Timer hanya menghitung pulsa clock. Frekuensi pulsa clock yang dihitung tersebut bisa sama dengan frekuensi kristal yang digunakan atau dapat diperlambat menggunakan prescaler dengan faktor 8, 64, 256, atau 1024.
Contohnya jika sebuah sistem mikrokontroler menggunakan kristal dengan frekuensi 4 MHz dan timer yang digunakan adalah timer 8 bit, maka maksimum waktu timer yang bisa dihasilkan adalah:
           

                  = 1/4.000.000 x (255+1)
                  = 0,000064 s

Untuk menghasilkan timer yang lebih lama dapat digunakan prescaler, misalnya 1024, maka maksimum waktu timer yang bisa dihasilkan adalah:
             

                = 1/4.000.000 x (255+1) x 1024
                = 0,065536 s
Untuk menghitung nilai TCNT supaya menghasilkan waktu timer tertentu dipergunakan rumus berikut:
           


Dimana: 
TCNT = nilai Timer (Heksadesimal)
fCLK  = Frekuensi clock kristal yang digunakan (Hz)
Ttimer = Waktu timer yang diinginkan (detik)
N        = prescaler (1,8,64,256,1024)
1+FFh = nilai maksimum timer adalah FFh dan overflow saat FFh ke 00h

ALAT DAN BAHAN YANG DIGUNAKAN
      1 set PC/Laptop yang sudah berisi program Code Vision dan Khazama
      1 buah catu daya DC +5V
      1 buah multimeter
      1 buah ISP Downloader AVR
      1 buah sistem minimum AVR
      1 buah I/O
      1 buah kabel printer USB
      2 buah kabel pita hitam

PROSEDUR
TIMER
1.      Rangkailah peralatan yang diperlukan seperti gambar dibawah. Hubungkan soket jumper PORTC pada minimum system dengan soket jumper pada OUTPUT Trainer
I/O.

2.      Buka program Code Vision AVR
3.      Buatlah project baru. Pada saat mengeset chip dan clock, set juga bagian PORTC untuk LED serta Timer seperti gambar dibawah. Kemudian simpanlah file tersebut.
      Nilai Clock Value adalah Nilai Clock Frequency Chip (Fclock) dibagi dengan prescaller dimana prescaller tersebuat bernilai 1, 8, 64, 256, atau 1024
      Contoh jika nilai Fclock = 4 Mhz maka jika kita ingin menggunakan prescaller 1024 setting Clock Value nya adalah 4Mhz/1024=3,906 Khz
         

4.      Perhatikan blok program berikut. 
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x05;
TCNT0=0x50;
OCR0=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x01;

// Global enable interrupts
#asm("sei")

5. Tuliskan script berikut dalam interrupt:
// Timer 0 overflow interrupt service routine interrupt [TIM0_OVF] void timer0_ovf_isr(void) {
// Reinitialize Timer 0 value
TCNT0=0x50;
// Place your code here if (PINC==0)    {PORTC=0xFF;} else
   {PORTC=0x00;}

6.      Perhatikan dan catat nyala LED.
7.      Ubah nilai TCCR0 menjadi 0x04 dan 0x03. Perhatikan perbedaan nyala LED dengan nilai TCCR yang berbeda-beda.
8.      Ulangi langkah 3-7 untuk Timer2 dengan TCNT=0x80;
9.   Buat project baru untuk timer1 dengan TCNT  = 0xd5d0 
10. Perhatikan blok berikut
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 3,906 kHz
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: On
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x05;
TCNT1H=0xD5;
TCNT1L=0xD0;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x04;

// Global enable interrupts
#asm("sei")

11. Tuliskan script berikut dalam blok interrupt
// Timer1 overflow interrupt service routine interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
// Reinitialize Timer1 value
TCNT1H=0xD5D0 >> 8;
TCNT1L=0xD5D0 & 0xff; // Place your code here if (PINC==0)    {PORTC=0xFF;} else
   {PORTC=0x00;}
}
12.  Ubah nilai TCCR1B sehingga menjadi 0x04, 0x03, 0x02, 0x01. Perhatikan perbedaan nyala LED dengan nilai TCCR yang berbeda-beda.
13.  Menggunakan Timer 16bit (Timer1) dengan nilai TCCR1B=0x05, Ubah nilai TCNT sehingga menghasilkan timer 1 detik.

DATA HASIL PERCOBAAN
TIMER
No
TIMER
TCCRx
TCNTx
Kondisi Led
Delay
1
Timer0
0x05
0x50


2
Timer0
0x04
0x50


3
Timer0
0x03
0x50


6
Timer2
0x05
0x80


7
Timer1
0x05
0xD5D0


8
Timer1
0x04
0xD5D0


9
Timer1
0x03
0xD5D0


10
Timer1
0x02
0xD5D0


11
Timer1
0x01
0xD5D0


8
Timer1


00000000  11111111
1 s

ANALISA DATA
TIMER
1.      Analisa data hasil pada tabel Timer dengan menggunakan rumus :

Hitung Nilai Ttimer :
TIMER
TCCRx
TCNTx
Fclock (Hz)
Prescaler
8 / 16 bit 
T (s)
Keterangan
Timer0
0x05
0x50
4.000.000
1.024
255
0,05
Delay tidak terlihat
Timer0
0x04
0x50





Timer0
0x03
0x50





Timer2
0x05
0x80





Timer1
0x05
0xD5D0





Timer1
0x04
0xD5D0





Timer1
0x03
0xD5D0





Timer1
0x02
0xD5D0





Timer1
0x01
0xD5D0






2.      Bagaimana anda mendapatkan timer dengan Ttimer 1 detik dengan menggunakan Timer1?

Leave a Reply

Subscribe to Posts | Subscribe to Comments

- Copyright © 2013 Rokudzaime Navypet - Powered by Blogger - Distributed By Rokudza Themes - Designed by Rokudza