Pengetahun Dasar dan Contoh code Timer pada Arduino

Pengetahun Dasar dan Contoh code Timer pada Arduino

Pendahuluan

Cara kerja Timer Arduino sama dengan Cara kerja Timer pada timer mikrokontroller AVR yg sudah dibahas pada artikel disini.  Hal ini dikarenakan Arduino menggunakan mikrokontroler AVR sebagai chip utamanya yaitu atmega 328, atmega 1260 atmeg2560 dll.

Pada Arduino telah disediakan(ada yg membuatkan) library untuk penggunaan timer seingga kita tak perlu menetahui detail register yg dipakai.  sedang untuk menggunakan timer pada compiler lain (misal avr-gcc atau codevision) kita sendiri yg harus menseting nilai register yg mengatur timer .

pada Arduino Timer0 sebaiknya tdk kita gunakan karena timer0 dipakai oleh fungsi delay() dan milis()

 Memakai Timer dgn bantuan Library yg sdh tersedia 

berikut ini beberapa library siap pakai  sdh sy test pada Arduino Uno (CPU atmega 328) dan Arduino Mega (CPU ATmega 2560)

1.TimerLib

2.TimerOne

3.MsTimer2

Contoh :

Memakai Timer tanpa menggunakan Library 

#include <TimerOne.h>

void setup()
{
pinMode(13, OUTPUT);   

Timer1.initialize(100000); // 100.000 ms ( 0.1 sec )
Timer1.attachInterrupt( LedBlink);
}

void loop()
{

}

/// --------------------------
/// ISR Timer Routine  , nama fungsi bisa custom
/// --------------------------
void LedBlink()
{
digitalWrite( 13, digitalRead( 13 ) ^ 1 );
}

Memakai Timer tanpa menggunakan Library 

void setup()
{
  pinMode(13, OUTPUT);

  // initialize timer1 
  noInterrupts();           // disable all interrupts
  TCCR1A = 0;
  TCCR1B = 0;

  TCNT1 = 34286;            // preload timer 65536-16MHz/256/2Hz
  TCCR1B |= (1 << CS12);    // 256 prescaler 
  TIMSK1 |= (1 << TOIE1);   // enable timer overflow interrupt
  interrupts();             // enable all interrupts
}

ISR(TIMER1_OVF_vect)        //nama fungsi harus "ISR(nama vector) 
{
  TCNT1 = 34286;            // preload timer
  digitalWrite(13, digitalRead(13) ^ 1);
}

void loop()
{
 
}

Cara kerjanya spt ini:

-Set durasi/periode  timer overflow  misal kita set 2 detik

-tiap 2 detik  terjadi overflow yg akan menimbulkan interupsi  (interupsi overflow)

-interupsi akan menjalankan fungsi ISR

-paramater fungsi ISR adalah nama vector atau vector name dari tiap jenis penyebab interupsi.  berikut vector name untuk tiap interupsi  timer yg lainya :

TIMER0_OVF_vect   adalah vector name  untuk interupsi overflow timer 0

TIMER1_OVF_vect    untuk timer 1

TIMER2_OVF_vect    untuk timer 2

TIMER3_OVF_vect    untuk timer 3   dst…..

Advertisements

About pccontrol

Berisi Tutorial Menggunakan PC untuk mengontrol Peralatan dengan cara mudah & praktis untuk pemula.

Posted on 21/09/2016, in Arduino, Daftar isi. Bookmark the permalink. Leave a comment.

Komentar ,Saran atau Pertanyaan

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: