Arduino ICSP Pinleri – ICSP Nedir?

Arduino ICSP pinleri arduino üzerinde bulunan yazılım yüklemek amacı ile konulmuş pinlerdir. Arduino kartına program yüklemenin 2. yöntemidir. Buradan sonraki anlatım Arduino Uno referans alınarak anlatılmıştır. Diğer tüm arduino kartları da benzer özelliği sahiptir. Burada anlatılanları öğrendiğimizde diğer tüm kartları öğrenmiş oluruz. Arduino üzerindeki ICSP pinlerini ayrıntılı açıklamadan önce genel anlamda ICSP nedir tanımını öğrenelim.

ICSP Nedir: ICSP bazı yerlerde ISP olarak da geçer. İngilizce açılımı in-circuit serial programing yani devre üzerinden seri programlama. Bu pinler tamamen donanımla alakalıdır. Bu pinlerin oluşturulmasındaki amaç bir devre oluşturduğumuzu düşünelim. Her seferinde mikrodenetleyiciyi (PIC veya ATmaga Gibi) tak sök yapmadan parogramlayabilmemizi sağlar.

Mikrodenetleyici takıp sökülürken bacaklarına zarar verip kullanılmaz hale getirebiliriz. Diğer bir durumda mikrodenetleyiciyi devremize önceden lehimlemiş olabiliriz. İşte bu durumda ileriyi düşünerek programlama yapabileceğimiz pinleri devrenin üzerine bir yere çıkartıyoruz. Artık bu pinlerin adı ICSP pini oluyor.

Özellikle SMD mikrodenetleyici kullanırken çok işe yarayan bir yöntem. SMD bulunduğu noktaya lehimlenir. Her seferinde program atmak için tak sök yapması pek mümkün değildir. Bu noktada ICSP pinleri hayat kurtarır.

Arduino ICSP Pinleri İncelemesi

Burada biraz işleri karıştıracağız. Arduino modellerine baktığımızda 1 veya 2 adet ICSP pin gurubu görülür. Peki neden böyle bir durum var. DIP ATmega328 mikrodenetleyiciye sahip Arduino uno kartları üzerinde ATmega16U2 veya ATmega8U2 mikrodenetleyicisi bulunmaktadır.

8U2 ile 16U2 arasında hız ve kullanılan bellek farkı bulunur. Bu sebeple sonraki modellerde 16U2 kullanılır. SMD Arduino modellerinde ise CH340 USP to serial chip kullanılır. CH340 olan Arduino Uno kartlarında 1 tane ICSP pin grubu bulunur. Çünkü CH340 entegresi tekrar programlanamayan bir entegredir.  Önce aşağıda bulunan resmi inceleyelim.

Arduino ICSP pinleri
Arduino ICSP pinleri nedir. Nasıl kullanılır.

16U2 veya 8U2 mikrodenetleyici içeren DIP modellerinde 2. ICSP pinleri 16U2 veya 8U2 mikrodenetleyicileri programlayabilmek amacı ile konulmuştur. Tıpkı ana mikrodenetleyicimiz olan ATmega238 gibi bu mikrodenetleyidi de programlanabilir.

16U2 mikrodenetleyici görevi USB üzerinden gelen verileri seriale çevirip Ana mikrodenetleyicimiz olan ATmega328 ile haberleşmeyi sağlamaktır. Yani 1 mikrodentleyici ile haberleşmeyi başka bir mikrodenetleyici üstlenmiş durumda. 16U2 de bir mikrodenetleyici olduğuna göre gerek görüldüğü taktirde programlayabilmek amacı ile onun içinde ICSP pinleri konulmuş.

Örneğin 16U2 zarar gördü diyelim. Yenisini takıp USP serial dönüştürme programını atabiliriz. Bu programlar ATmega sitesinde vardır. Şuna da değinelim biz Arduino üzerine program yazarken önce 16U2 mikrodenetleyicisi USP den gelan datayı seriale çeviriyor.

Ardından arduino üzerinde hazır bulunan bootleader programı UART haberleşmesi üzerinden Arduino programlama işlemini başlatıyor. Bir diğer yöntem olan ICSP pinleri ile Arduino programlamanın USP ile arduino programlama arasında hiçbir benzerlik bulunmamaktadır.

Biraz karman çorman oldu ama yapacak bir şey yok kusura bakmayın. ICSP pinlerinin program atmaya yaradığını anladık. Bazı Arduino Uno modelleri üzerinde 2 ICSP grubu bazılarında 1 olduğunu öğrendik. Neden böyle olduğunu öğrendik.

ICSP Pinleri Programlama

ICSP pinleri ile Arduino karta kod atabiliriz demiştik. Peki bu işlem nasıl oluyor. Bir haberleşme lazım. Burada da devreye bir haberleşme protokolü olan SPI haberleşmesi giriyor. ICSP pinlerini kullanırsak Arduino ATmega328 mikrodenetleyicisine SPI haberleşmesi ile kod yazmış oluruz.

Biz bunu yaparken ne CH340 nede 16U2 çipi devreye girer. Bootleader da çalışmaz. Diğer programlama yöntemi ile tamamen bağımsız işler.

Biz neden bu yöntemi kullanacağız diye soracak olursanız bazı durumlarda ICSP pinleri üzerinden programlama yapmak zorunda kalabilirsiniz. Örneğin Arduino karta program atarken bootleader silinebilir. Bu durumda USP üzerinden kod yazmanız mümkün değil.

Böyle bir durumda başka bir Arduino kullanarak ICSP pinlerine bağlantı yapıp ISP kütüphanesi yardımı ile bootleader silinmiş karta bootleader atılabilir. Ayrıca normal bir program da atmamız mümkün. Bunun nasıl yapıldığına başka bir makalede değineceğim.

ATmega328 mikrodenetleyicisine yakın olan ICSP pinleri ATmega328′ in ICSP pinleridir. Aynı zamanda dijital pinlerimiz olan 11-12-13 pinleri de buradaki ICSP pinleri ile kısa devre konumundadır. Aynı anda hem ICSP pinleri hem de 11-12-13. pinleri kullanmak mümkün olmaz. Uzun uzadıya burada anlatmak pek mümkün değil. Aşağıdaki linkte Arduino Uno devre şeması bulunmaktadır. Kaç numaralı pinlerin ISCP pinleri üzerinde hangileri ile bağlı oldukları bu devre şemasına bakılarak kolayca anlaşılır.

Arduino Uno devre şeması linki için tıklayın.

Tekrarlıyorum biraz karışık oldu ancak bil bilgiyi bilmek ayrı bir iş anlatmak ap ayrı bir iş. Elimden geldiği kadar anlattım. Eğer anlamadığınız yer olursa yorumlar kısmından sorabilirsiniz. Ayrıca Instegram hesabımızdan kısa sürede bize ulaşmanız mümkün.

Instegram Hesabı:  arslanrobotik

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir