«

»

Jul 18

Blinking LED dengan Compare Match Interrupt

Berikut adalah sebuah contoh program untuk membuat sebuah LED pada board NS.One berkedip dengan frekuensi 2 Hz, dengan menggunakan compare match interrupt TIMER1.

NS.One adalah board berbasis mikrokontroler AVR ATmega32 yang dikembangkan oleh tim riset NEXT SYSTEM Robotics Learning Center dengan merujuk pada platform Arduino.

void setup()
{
  bitSet(DDRC,PC5);      // PC5 as output
  // initialize timer1 
  noInterrupts();        // disable all interrupts
  TCCR1A = 0;
  TCCR1B = 0;
  TCNT1  = 0;
  OCR1A = 31250;         // compare match register 16MHz/256/2Hz
  bitSet(TCCR1B,WGM12);  // CTC mode
  bitSet(TCCR1B,CS12);   // 256 prescaler 
  bitSet(TIMSK,OCIE1A);  // enable timer compare interrupt
  interrupts();          // enable all interrupts
}

ISR(TIMER1_COMPA_vect)          // timer compare interrupt service routine
{
  bitWrite(PORTC,PC5,!bitRead(PORTC,PC5));   // toggle LED
}

void loop()
{
  // your program here...
}

Contoh program di atas adalah salah satu contoh yang diangkat di kelas pelatihan Pemrograman Mikrokontroler AVR dengan Bahasa C yang diadakan NEXT SYSTEM Robotics Learning Center | ITC Kosambi Ruko F2 | Baranang Siang 6-8, Bandung 40112 | (022) 4222062, (022) 70775874 | web: edukasi.nextsys.web.id | email: info@nextsys.web.id