Açıklama
Kesintili Dijital Pimler
attachInterrupt()
parametresinin ilk parametresi bir kesme numarasıdır. Normalde, gerçek dijital pimi belirli kesme numarasına çevirmek için digitalPinToInterrupt(pin)
kullanmalısınız. Eğer 3 bacağına bağlantı, örneğin, kullanımı digitalPinToInterrupt(3)
ilk parametre olarak attachInterrupt()
.
Yazı tahtası | Kesmeler için Kullanılabilir Dijital Pimler |
---|---|
Uno, Nano, Mini, diğer 328 tabanlı | 2, 3 |
Uno WiFi Rev.2, Nano Every | tüm dijital pimler |
Mega, Mega2560, MegaADK | 2, 3, 18, 19, 20, 21 |
Micro, Leonardo, diğer 32u4 tabanlı | 0, 1, 2, 3, 7 |
Sıfır | 4 hariç tüm dijital pimler |
MKR Aile panoları | 0, 1, 4, 5, 6, 7, 8, 9, A1, A2 |
Nano 33 IoT | 2, 3, 9, 10, 11, 13, 15, A5, A7 |
Nano 33 BLE, Nano 33 BLE Anlam | tüm iğneler |
nedeniyle | tüm dijital pimler |
101 | tüm dijital pinler (Sadece 2, 5, 7, 8, 10, 11, 12, 13 pinleri CHANGE ile çalışır) |
Notlar ve Uyarılar
Not
Ekli işlevin içinde, delay()
çalışmaz ve millis()
tarafından döndürülen değer millis()
. İşlevdeyken alınan seri veriler kaybolabilir. Ekli işlev içinde değiştirdiğiniz değişkenleri volatile
olarak bildirmelisiniz. Daha fazla bilgi için aşağıdaki ISR'ler bölümüne bakın.
Kesmeleri Kullanma
Kesmeler mikrodenetleyici programlarında işlerin otomatik olarak gerçekleşmesi için faydalıdır ve zamanlama sorunlarının çözülmesine yardımcı olabilir. Bir kesinti kullanmak için iyi görevler bir döner kodlayıcıyı okumak veya kullanıcı girişini izlemek olabilir.
Bir programın darbeleri her zaman bir döner kodlayıcıdan yakaladığından emin olmak istiyorsanız, nabzı asla kaçırmaz, başka bir şey yapmak için bir program yazmayı zorlaştırır, çünkü programın sensörü sürekli olarak yok etmesi gerekir meydana geldiğinde darbeleri yakalamak için kodlayıcı hatları. Diğer sensörler de, bir tıklama yakalamaya çalışan bir ses sensörünü veya bozuk para yakalamaya çalışan bir kızılötesi yuva sensörünü (fotoğraf kesici) okumaya çalışmak gibi benzer bir arayüz dinamikine sahiptir. Tüm bu durumlarda, bir kesme kullanılması, mikro denetleyiciyi girişi kaçırmadan başka işler yapmak için serbest bırakabilir.
Kesme Servisi Rutinleri Hakkında
ISR'ler, diğer birçok işlevin sahip olmadığı benzersiz sınırlamalara sahip özel işlev türleridir. Bir ISR'nin hiçbir parametresi olamaz ve hiçbir şey döndürmemelidir.
Genel olarak, bir ISR mümkün olduğunca kısa ve hızlı olmalıdır. Çiziminiz birden fazla ISR kullanıyorsa, bir seferde yalnızca biri çalıştırılabilir, mevcut kesintiler sahip oldukları önceliğe bağlı bir sırayla tamamlandıktan sonra diğer kesintiler yürütülür. millis()
kesintilere dayanır, bu yüzden asla bir ISR içinde millis()
. delay()
işlevinin çalışması için kesinti gerektirdiğinden, bir ISR içinde çağrılırsa çalışmaz. micros()
başlangıçta çalışır ancak 1-2 ms sonra düzensiz davranmaya başlar. delayMicroseconds()
herhangi bir sayaç kullanmaz, bu nedenle normal çalışır.
Genellikle global değişkenler bir ISR ile ana program arasında veri iletmek için kullanılır. Bir ISR ve ana program arasında paylaşılan değişkenlerin doğru şekilde güncellendiğinden emin olmak için volatile
olarak volatile
.
Kesmeler hakkında daha fazla bilgi için Nick Gammon'un notlarına bakın .
Sözdizimi
attachInterrupt(digitalPinToInterrupt(pin), ISR, mode)
(önerilir)
attachInterrupt(interrupt, ISR, mode)
(önerilmez)
attachInterrupt(pin, ISR, mode)
(Önerilmez. Ayrıca, bu sözdizimi yalnızca Arduino SAMD Kartlarında, Uno WiFi Rev2, Due ve 101'de çalışır.)
Parametreler
interrupt
: interrupt
sayısı. İzin verilen veri türleri: int
.
pin
: Arduino pin numarası.
ISR
: kesme oluştuğunda çağrılacak ISR; bu işlev parametre almamalı ve hiçbir şey döndürmemelidir. Bu işlev bazen bir kesme hizmeti rutini olarak adlandırılır.
mode
: kesmenin ne zaman tetiklenmesi gerektiğini tanımlar. Dört sabit, geçerli değerler olarak önceden tanımlanmıştır:
Pim azaldığında kesmeyi tetiklemek için DÜŞÜK ,
Pim her değer değiştirdiğinde kesmeyi tetiklemek için DEĞİŞTİR
Pim alçaktan yükseğe çıktığında tetiklemek için yükseliyor ,
Pim yüksekten alçağa düştüğünde DÜŞEN .
Due, Zero ve MKR1000 kartları aşağıdakilere de izin verir:
Pim yüksek olduğunda kesmeyi tetiklemek için YÜKSEK .
İadeler
Hiçbir şey değil