PAYLAŞIM - ARDUINO KESME (INTERRUPT) Uygulama Tekniği
ÖRNEK KESME PROGRAMI LİNKİ:
https://drive.google.com/open?id=13JQrjacp2bJGCdS-fAEfLQIi8Gn71384
ARDUINO genelde teker işlem yaparak çalışır. Fakat içerdiği iki KESME pinlerini kullanarak veTIMER yardımı ile ona iki işi aşağı yukarı gerçek zamanda yaptırmak mümkündür.
Ekteki örnek program bu tekniği uygulayarak D2 ve D3 pinlerini KESME olarak tanımlıyor.
Bağlantılar:
D2 ------------- GND
D3 ------------- GND
D2 KESME bu pinin HIGH olduğu zaman ateşlemesine ve intRtn_H() işlemini yapmasına ayarlı.
D3 KESME bu pinin CHANGE olduğu zaman ateşlemesine ve intRtn_C() işlemini yapmasına ayarlı.
Bunlara göre test için:
D2 kablosunu GND den ayırdığınız zaman pin HIGH olup intRtn_H() rutinini çalıştıracaktır.
Seri Monitör de buna uyan mesajları yazacaktır.
D3 kablosunu GND den ayırdığınız zaman pin CHANGE olup intRtn_C() rutinini çalıştıracaktır.
SERI Monitör de buna uyan mesajları yazacaktır.
Kabloları geri taktığınızda da standard SERI mesajları her iki portun durumunu yazacaktır.
KESME kullanırken dikkat edilecek noktalar:
DELAY() kullanılmaz
MILLIS() artmaz
SERIAL veri okuma düzenli olmayabilir
KESME uuygulanabilecek PIN ler ARDUINO modellerine göre değişir. Her zaman referans sayfasını kontrol edin:
https://www.arduino.cc/reference/en/language/functions/external-interrupts/attachinterrupt/
Bu örnek programda göreceğiniz bir başka teknik de DELAY() yerine kullanılabilecek intDELAY() fonksiyonudur.
Bu fonksiyon MICROS() komutu kullanarak yukarıdaki problemi elimine ediyor.
Gördüğünüz gibi her iki ISR rutini de bu intDelay() kullanarak istenen yavaşlatmayı uyguluyor.
KESME olaylarını halleden rutinlerin çok çabuk çalışması ve fazla lüzümsuz işleri yapmaması gerektiğinden, her iki ISR rutinde de birer FLAG (bayrak) kullanılmıştır.
Bu teknik, KESME olayını tanımlayıp bu veriyi ana LOOP() kısmına iletmekte kullanılır. Böylece KESME ye ait mesajlar vs KESME ISR rutini dışında halledilir.
Umarım bu örnek program KESME ile çalışmaya başlayan arkadaşlara yardımcı olur.
İyi çalışmalar.