8 Ekim 2026 Perşembe


Program Kodları

//AÇIKLAMA
//Bu uygulamada ilk başta yükselen kenarda giriş yakalamayı aktif ettik. Yükselen-düşen-yükselen
//şeklinde yakalama işlemine devam ettik. Yakalama kesmesi olduğunda sayaç değerini ICR1’e kaydettik.
//TCCR1B |= (1 << ICES1); ve TCCR1B |= (0 << ICES1); komutları ile kenar değiştirme yaptığımızda 
//ICES1’in hep 1 olduğu görüldü . Bu nedenle bitSet(); ve bitClear(); komutlarını kullandık.
int tasma_sayisi, i = 0;
float t, t1, t2, T1, T2;
float T_Atmega = (1.0 / 16000000.0);
int kenar;
void setup()
{
  Serial.begin(9600);
  pinMode(8, INPUT);    //ICP1 girişi
  pinMode(5, OUTPUT);   //PWM çıkışı

  cli();
  TCCR1A = 0;
  TCCR1B = 0;
  TCCR1B |= (0 << CS12) | (0 << CS11) | (1 << CS10);  //prescaler 1 yapılıyor
  TCNT1 = 0;  //Timer sayaç başlangıç değeri
  TIFR1 |= (1 << ICF1);     //giriş yakalama bayrağı temizlendi

  //Timer1 giriş yakalama kesmesi ayarları
  bitSet(TCCR1B, 6);        //yükselen kenar yapıldı.ICES1=0 düşen kenar. ICES1=1 ise yükselen kenar
  TIMSK1 |= (1 << ICIE1);   //Timer1 giriş yakalama kesmesi aktif edildi
  TCCR1B |= (1 << ICNC1);   //Gürültü önleyici aktif edildi.

  //Timer1 taşma kesmesi ayarları
  TIMSK1 |= (1 << TOIE1); //Overflow kesmesi aktif edildi

  sei();
}

void loop()
{
  analogWrite(5, 125);
  if (i == 2)
  {
    T2 = (T2 + (65536 * tasma_sayisi));
    t1 = T1 * T_Atmega;
    t2 = T2 * T_Atmega;
    t = t2 - t1;
    Serial.print("duty_cycle = ");  Serial.print(t, 6);  Serial.println(" sn");
    Serial.print("taşma_sayısı= "); Serial.println(tasma_sayisi);
    i = 0;
    tasma_sayisi = 0;
  }
}

ISR(TIMER1_CAPT_vect)
{
  if (i == 0)
  {
    T1 = ICR1;
    bitClear(TCCR1B, 6);     //düşen kenar yapıldı
    bitSet(TIFR1, 5);        //giriş yakalama bayrağı temizlendi
    i++;
  }
  else if (i == 1)
  {
    T2 = ICR1;
    bitSet(TCCR1B, 6);      //yükselen kenar yapıldı
    bitSet(TIFR1, 5);       //giriş yakalama bayrağı temizlendi
    i ++;
  }
}

ISR(TIMER1_OVF_vect)
{
  tasma_sayisi++;
}


Devre Şeması




0 comments:

Yorum Gönder

Arduino Eğitimi Konu - 7

Toplam Sayfa Görüntüleme Sayısı

Popular Posts

Yararlanılan Kaynaklar

İletişim

gokdag17@gmail.com