Kişisel Sayfaları
İlgi Alanları
İş Tecrubesi
Eğitim Geçmişi
Dil Becerileri
Son Forum Aktiviteleri
2Kullanıcıya ait forum aktivitesi bulunmamaktadır.
ARDUİNO KESME ATMA
Merhaba Orkut,
cli(); fonksiyonu bir süreliğine kesmeyi ayar yapman için durdurur.
TCCR1A = 0;
TCCR1B = 0;
TCNT1 = 0;
bunlar timer için yapman gereken ayarlamalardır. Timer kesmesinin düzgün çalışabilmesi için. bu register'ları daha detaylı tanımak istersen aşağıdaki linki kullanabilirsin:
http://mil.ufl.edu/5666/handouts/avr_pwm_reg_info_summary.pdf
OCR1A değişkeni eğitimde de bahsedilmişti. timer'ın saymaya kaçtan başlayacağını belirlediğimiz yer burası. burada belirttiğin değerden saymaya başlar arduino. 65536 değerine ulaştığı zaman kesmeyi meydana getirir. yani buraya yazdığın değer önemli. timer kesmesinin ne kadar sıklıkla gerçekleşeceğini bu sayı ile belirleyebilirsin
TCCR1B |= (1 << WGM12); ile timerın modunu ayarlıyor
TCCR1B |= (1 << CS12) | (1 << CS10); ile her bir sayma arasında ne kadar süre geçeceğini belirliyor. yani demin bahsettiğimiz OCR1A değişkenindeki sayı artıyordu ya, her bir artma için ne kadar süre geçmesi lazım. örnekteki değer arduino'nun kristalinin 1024'e bölümü olarak ayarlanmış. bu değerler değiştirilerek yine kesme süresi ayarlanabilir. Buraya yazacağın değerler için aşağıdaki tabloyu kullanabilirsin
http://blog.oscarliang.net/ctt/uploads/2013/05/clk_select_16bit.png
TIMSK1 |= (1 << OCIE1A); ile de timer kesmesini aktif yaptık artık
sei(); ile ayarlamalarımız bittiğini ve kesmeleri tekrar çalıştırmak istediğimizi belirtiyoruz.