Tiny AVR 1 Serisi - SPI

 SPI detayına girmeden master mod ile kullanmak için gerekli kütüphaneyi paylaşacağım. 

SPI


SPI biriminde ana çalışma modu olarak bir normal mod bir de tampon mod vardır. Normal mod bildiğiniz SPI çalışması şeklindedir. Tek bir data registeri vardır. Veriyi yazınca shift register ile veri kayrdırılır. Aynı anda slave tarafta da aynı işlem olur. Son olarak 8 bit tamamlanınca data registerinde slave veri okunur. Bu işlem tamamlanmadan gönderim için registere veri yazılamaz. Veri çakışması olur (WRCOL) ve hatalı gönderim olur. Benzer şekilde işlem sonunda gelen veri okunmadan tekrar gönderim yapılması slave verinin kaybolmasına neden olur.

Tampon mod ile kullanımda INTFLAGS registeri DREIF bayrak biti "0" olduğu sürece gönderim için data registerine veri yazılabilir. İlk yazılan DATA registerine yazılır ve gönderilir sonraki tampona yazılır. Gönderim tamamlanınca alınan veri RX tampona yazılır. İki gönderim sonrası bir okuma yapılmalıdır.

CTRLB registeri SSD biti SS pininin nasıl kullanılacağını belirler. SSD "0" ise SPI birimi SS pinini çoklu master mod slave geçiş için kullanabilir. SS pini giriş yapıldığında master olarak kullanmak için SS pini "1" (high) yapılmalıdır. SS "0" olduğunda slave moda geçiş yapılır. SS pini çıkış yapılırsa normal bir pin olarak kullanılabilir. SSD "1" ise SPI birimi SS pinini kullanamaz normal bir pin olarak kullanılır.

SPI Mod

SCK pini boşta "0" veya "1" olması (CPOL) ve SCK pini yükselen veya düşen kenarda veri örneklemesi (CPHA) durumuna göre dört farklı mod CTRLB registeri MODE biti ile ayarlanır.
Prescaler ve düşük ya da yüksek öncelikli bit sırası gibi ayarlar CTRLA registeriyle yapılır. 

Hiç yorum yok:

Yorum Gönder