2 Temmuz 2025 Çarşamba

 



Bu uygulamada timer1 kesmesi kullanıldı. Timer1 başlangıç değeri 0 ve bitiş değeri 15624 olarak ayarlanarak 1 sn'de bir programın kesme alt programına giderek buradaki ledin durumunu değiştirmesi sağlandı. 

NOT: Bu uygulamadaki kesme işlemi Proteus'ta çalışmadı. Bu nedenle fiziksel Arduino kartında deneme yapıldı ve çalıştı.


void setup()

{

      pinMode(9, OUTPUT);

      cli();          //tüm kesmeler durduruldu

      TCCR1A = 0;     //TCCR1A register 0'lanıyor

      TCCR1B = 0;     //TCCR1B register 0'lanıyor

      TCNT1  = 0;     //timer1 başlangıç değeri sıfırlandı

      OCR1A = 15624;      //timer1 bitiş/karşılaştırma değeri belirlendi

      TCCR1B |= (1 << WGM12);   //CTC(Clear Timer on Compare Match) mod açıldı

      TCCR1B |= (1 << CS12) | (1 << CS10);      //prescalar değeri 1024 yapıldı

      TIMSK1 |= (1 << OCIE1A);      //timer1 karşılaştırma kesmesi aktif edildi

      sei();          //tüm kesmelere izin verildi

}


void loop()

{

  

}


ISR(TIMER1_COMPA_vect)

{

      digitalWrite(9, !digitalRead(9));

      OCR1A = 15624;  //timer1 bitiş/karşılaştırma değeri tekrar belirlendi.

}



_______________________________________________________________________________________________________________________________________________________


0 comments:

Yorum Gönder

Arduino Eğitimi Konu - 7

Arduino Eğitimi Konu - 9

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

Seri İletişim Protokolleri

Sensörlerin Arduino İle Kullanımı

Popular Posts

Yararlanılan Kaynaklar

İletişim

gokdag17@gmail.com