NRF24L01 Kullanımı

Başlatan erdogan2734, 26 Haziran 2016, 00:07:04

alisumer

$61 gelen veriyi okuma komutudur: SHIFTOUT PORTA.1, PORTA.2, 1,[$61] gönderdikten sonra
ardından NRF ye gelen veriyi almak için :SHIFTIN PORTA.1, PORTA.2, 1,[A,B,C....32] şeklinde okuma yapmalısın
mod ayarı nemli ,türkçesini söyleyim sen bakarsın shift komutunu kullanmadım hiç çünkü , nrf spi haberleşmesinde clk boşta iken low  ilk önce veri başlar mod önemli protonda modlara bak
.registere veri yazank için ise  SHIFTOUT PORTA.1, PORTA.2, 1,[$26,$FF]şeklinde komut gönderebilirsin bu komut ile NRF nin RF_SETUP registerine FF ayarı yapmış olursun csn = 0 dan sonra bekleme yapmana gerek yok sadece iki komut arasına 10 us bi bekleme yap ms bekleme çok
csn = 0
SHIFTOUT PORTA.1, PORTA.2, 1,[$26,$FF]
csn = 1
pauseus 10
csn = 0
SHIFTOUT PORTA.1, PORTA.2, 1,[$20,$0F]
csn = 1
gibi shift out mod konusunu araştır ben salladım 1 i kullanmadım bilmiyorum bu komut modu doğru ise çalışır
Hep meraktan

Dtmf

Eyvallah hocam 😊 musait olunca hemen deniyorum verdiginiz resimleri inceledim olayi hemen hemen cozdum gibi.sagolun hocam

Dtmf

#167
......

alisumer

 Diğer kodların doğruluğunu varsayarak ilk gözüme çarpanlar.nrf ye gnderdiğin ilk komut $AA ben bunu spı haberleşmenin ilk komutu olarak $FF komutunu tercih ettim çünkü "simulasyonda" ilk komut sonrasında nedense pic spi göndermede bayağı bir bekleme yapıyor göndermek için sebebini bilmiyorum ( belki simulasyonun hatasıdır) FF komutu bu bekleme esnasında yanlışş bir komut vermeme adına NRF ye hiç birşey yapma komutu olmalı bence.ikinci olarak .nrf nin ilk kanalı doğrulama usulu ile çalışıyor  eğer CRC aktif ise alıcıdan vericiye aynı kanalı kullanarak doğrulama kodu geri gönderiliyor o yüzden $30 ve $A2 kanalı aynı olmalı diye bir anlam çıkardım datashitten ve öyle yaptım alıcı ve verici için bu iki register aynı olmalı zaten datasında da görüldüğü gibi aynı kullanılmış. $E1 ve $E2 komutları fifoları silmek için kullanılıyor bence kullanmalısın her gönderme tamamlandığında silmesen de olur diyorlar ama hata verebiliyormuş ben kullandım .$31 kaç byte veri göndereceğini ve alacağını ayarlar 6 byte ayarlamış 5 byte göndermişsin sorun yok ama simulasyonda alıcı kısmında 6 byte beklerken 5 byte boş veri gönderince verilerin yeri karışabiliyor bence kaç byte göndericeksen sadece o kadar veri için ayarlamalısın.geri kalanlarına bakmadım tek tek bi bunları düzelt öyle dene. bacak bağlantılrına dikkat et ve ben pic i nrf bağlantısı olduğunda ve veri gönderildiğinde alındığında uyandırmak için irq kesme bacağını kullandım böylece pic nrf içinde veri varsa okuma yapıyor yok ise hiç uğraşmadan diğer kodları çalışıyor göndermede de aynı gönderdi ise yeni veri gnderiyor göndermedi ise belli bir süre bekleyip tekrar deniyor gibi kesme kullanmasssan sürekli veri geldi mi diye bakmak status veya fifo status registerini okuman gerekicek ki manasız bence.ama veri gelmeden veya yarımyamalak geldiğnde okuma yapmamak yada veri gitmeden fifoya tekrar yazmamak için nrf nin hazır olup olmadığını verinin gittiğini veya geldiğini kontrol etmen gerekiyor .
Hep meraktan

alisumer

ayrıca nrf registerleri ya power off modunda yada CE düşükte iken yapılabiliyor.bence ayar sırasında CE yi düşük tutmak için öncesinde CE = 0 demelisin en azından yada power on yapma işini register ayarlarının sonunda yapmalısın.
Hep meraktan

Dtmf

#170
..

Dtmf

#171
ete hocam ıyı gunler pıc ı spı da donanımsal olarak nasıl transrıcıver olarak ayarlarız sspcon ve sspstat da

Dtmf

verıcı:
SSPSTAT=%11000000
SSPCON = %00100000

alıcı:
SSPSTAT=%01000000
SSPCON = %00100101


alisumer

Dtmf CE=0 yada power off da register lere yazılır demişim sen CE= 1 yapmis hemde power on  yapmışsın. kanalları TX ve RX için aynı olsun demişim gene farklı yazmışsın.bence dikkatli okumalısın
Hep meraktan

Dtmf

#174
Alı hocam hersey ıcın tesekkurler :) ben yuzme ogrenmeden gole daldım sanırım.tabırı caizse ben once yuzmeyı ogreneyım alı hocam asagıdakı program $01 den $08 ye kadar olan regısterlerı okuyor sabahtan bu yana bayagı ugrastım sonunda regısretlerı okumayı basardım.yanlıs anlamadıysam regıster okumak ıcın $00 degerı ,regıstere yazmak ıcın $20 degerı verıyoruz.örnegın SHOUT........1,[$20,$01] yerıne SHOUT...[$21] yazsakta oluyor degılmı hocam

Dtmf

#175
....

alisumer

Bende acemiyim dtmf hoca değilim datashete ı boşver sadece sana gönderdiğim resimlerden yapardın işi belliki programlama diline ve mantığına hakim değilsin pek yada iş yoğunluğundan kafayı veremiyorsun veya arduino körelmiş seni 😊 evet yazmak için $20 + register = "registeryaz" sonrasinda da o register vermek istediğin değeri gonderiyorsun .okumak için direk register in hex adresini gönderip dinlemeye geçiyorsun
Hep meraktan

Dtmf

Spi hic calismadim buzamana kadar i2c ve uart uzerine calistim.is yogunlugu etkilemez olurmu biraz zor bi meslegim var nede olsa arada firsatlari degerlendiriyorum iste nrf guzel bir modul.ardunio lya gelince 10 defa anca programlamisimdir hic sevmem kendilerini😊🖒

Dtmf

#178
..

Dtmf

ete hocam kımse yardımcı olamayacakmı?en azından nerede sorun var soylesenız duzeltsem gonderım yapamıyorum

Powered by EzPortal