Timer1 interrupt kullanımı
18 Ekim 2019, Cuma
Dolar : Alış : 5.7690 / Satış : 5.7794
Euro : Alış : 6.4202 / Satış : 6.4318
Ürün arama
İçerik arama
ÜYE GİRİŞİ   ÜYE OL
KATEGORİLER
Elektronik Kart Tamiri (0)
Arduino Temrinleri (28)Otomasyon (0)
Medikal (0)
Test ve Ölçüm (0)
Haberleşme (6)Güneş Panelleri (0)
Mikrodenetleyici Programlama (3)Arduino (4)Elektronik (5)Programlama (1)
Timer1 interrupt kullanımı
1636  kez incelendi.
Timer1 interrupt kullanımı
timer
 Paylaş        

Timer1 interrupt :

1 saniye timer interrupt kullanarak bir adet çıkışın saniyede bir aktif pasif edilmesi.

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------

#include <avr/interrupt.h>
#include <avr/io.h>
/*Timer 1 --16 bitlik timerdır.*/
const char LED = 13;
unsigned int value;
boolean ledState=false;
#define TCNT1_PRELOAD 49536
/*
    For our TIMER1 Interrupt:
    Clock Freq = 16MHz
    no prescale, 1
    16MHz - 0.0625us/cycle
  
    To calculator preload value to generate 1ms(1KHz)
    (65536 - t) x 0.0625us = 1000us
    t = 65536 - 1000/0.0625 = 49536
   
    To calculator preload value to generate 0.5ms(2KHz)
    (65536 - t) x 0.0625us = 500us
    t = 65536 - 500/0.0625 = 57536

 */
void setup(void)
{
  pinMode(LED, OUTPUT);
  // initialize Timer1
  noInterrupts(); // disable all interrupts
  TCCR1A = 0;
  TCCR1B = 0;
  TCNT1 = TCNT1_PRELOAD;
  TCCR1B |= (1 << CS10);   // no prescaler
  TIMSK1 |= (1 << TOIE1); // enable timer overflow interrupt
  interrupts(); // enable all interrupts 
}

void loop(void)
{
 
}

ISR(TIMER1_OVF_vect)
{
  TCNT1 = TCNT1_PRELOAD; // preload timer
  TIFR1 = 0x00; // Timer1 INT Flag Reg: Clear Timer Overflow Flag

  if (++value>=1000)
  {
    value = 0;
    ledState = !ledState;
    digitalWrite(LED, ledState);    
  }
}
 


Copyright © 2015 - Tüm Hakları KONTROL ARGE aittir.