8 Ekim 2026 Perşembe


Programlama Kodları

//AÇIKLAMA
//Timer1 giris yakalama işleminde analog karşılaştırıcı çıkışı ACO kullanıldı. Analog karşılaştırma
//işlemi olup ACO çıkışı 1 olduğunda Timer1 sayacının (TCNT1) 16 bitlik değeri yine 16 bitlik olan 
//giriş yakalama kayıtçısına (ICR1) kopyalandı ve ICR1 kayıtçısının değeri seri port ekranına yazdırıldı. 

bool deger;
void setup()
{
  Serial.begin(9600);

  pinMode(6, INPUT); //AIN0 pini. Karşılaştırıcının + ucu
  pinMode(7, INPUT); //AIN1 pini. Karşılaştırıcının - ucu. Referans gerilim ucu

  //.........bu kısım analog karşılaştırıcı ayarları..............................
  ACSR |= (0 << ACIE);    //Anaog karşılaştırıcı kesmesi kapatıldı
  ACSR |= (0 << ACBG);    //Bandgap Referance Voltajı kapatıldı
  ACSR |= (0 << ACD);     //Analog Karşılaştırıcıya güç verildi
  ADCSRB |= (0 << ACME);  //ADC açıldı
  ADCSRA |= (1 << ADEN);  //Multiplex Input kapatıldı
  DIDR1 |= (1 << AIN1D) | (1 << AIN0D); //AIN1 ve AIN0 pinleri digital girişe kapatıldı

  //.........bu kısım Timer1 giriş yakalama için ACO pini kullanım ayarları........
  TCCR1A = 0;
  TCCR1B = 0;
  TCCR1B |= (1 << CS12) | (0 << CS11) | (1 << CS10);  //prescaler 1024 yapılıyor
  TCCR1B |= (1 << ICES1);   //ICES1=0 ise; düşen kenar. ICES1=1 ise yükselen kenar
  ACSR |= (1 << ACIC);      //giriş yakalama tetik kaynağı olarak analog karşılaştırıcı çıkışı ACO seçildi
  TIFR1 |= (1 << ICF1);     //giriş yakalama bayrağı temizlendi
  TCNT1 = 0;                //Timer1 sayaç başlangıç değeri
}

void loop()
{
  Serial.print("ICR1 Giriş Yakalama Kayıtçısı= ");
  Serial.println(ICR1);
  deger = bitRead(ACSR, 5);
  Serial.print("ACO Biti= "); Serial.println(deger);
  delay(500);
}


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