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