2 Temmuz 2025 Çarşamba

 



Bu uygulamada Timer1 kesmesi kullanıldı. Kesme işlemi için harici clock sinyali söyle oluşturuldu:

Arduino'nun 3 nolu pininden PWM sinyali gönderildi. Sonra bu pin 220ohm direnç ile 5 nolu pine bağlandı. 5 nolu pin Timer1'in harici clock girişidir. Yani Arduino'nun kendi ürettiği PWM sinyali alınıp tekrar  kendine harici clock sinyali olarak verildi. Arduino'nun 3 nolu pininden PWM çıkışının frekansı 490 hz'dir. Timer1 çözünürlüğü de 1469 yapıldı. Bu değerler kesme süresin 3 sn olmasını sağladı. Böylece program her 3 sn'de bir kesme alt programına giderek buradaki ledi yaktı. Ana programa dönünce led söndürüldü.

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(13, OUTPUT);

      pinMode(3, OUTPUT);

      cli();          //tüm kesmeler durduruldu

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

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

      TCNT1  = 0;     //sayaç değeri sıfırlandı

      OCR1A = 1469;     //timer1 çözünürlüğü

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

      TCCR1B |= (1 << CS12) | (1 << CS11) | (1 << CS10);  //external clock yapıldı. yükselen kenarda tetikleme olacak

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

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

}


void loop()

{

      digitalWrite(13, LOW);

      analogWrite(3, 127);      //3 nolu pine %50 görev döngüsünde PWM sinyali gönderildi.

}


ISR(TIMER1_COMPA_vect)

{

      digitalWrite(13, HIGH);

      delay(2000);

}


_______________________________________________________________________________________________________________________________________________________


0 comments:

Yorum Gönder

Arduino Eğitimi Konu - 7

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