NRF24L01 Kullanımı

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

_tnt

Bugün yaptığım denemede veri gönderip aldım. Aklıma takılan birkaç soru var. Diyelim ki farklı 5 veri gönderdik. Alıcı da en son gönderilen veri mi kalıyor,önce gönderilen veriler kayboluyormu? veya data pipe ler bu işe mi yarıyor.

cemilsivas

Peki hocam w_tx_payload değişkenine veri yüklesem bunu da okuyabilir miyim? Mesela w_tx_payload değişkenine "cemil" verisini yükledim. Bunu nasıl okuyabilirim?

cemilsivas

Hocam sanırım bu veriler bufferde tutuluyor. siz okuduk sıra okunanlar siliniyor diye biliyorum. Sanırım datapipeler birden fazla nrfden gelen veriler için kullanılıyor.

cemilsivas

__tnt hocam. Benim sorum ile ilgili deneme yaptınız mı? Lcd'ye karakterler bozuk geliyor. Ama data genişliği aynı. Bir fikriniz var mı?

_tnt

Yarın bi deneme yapıp sonucu iletirim. Donanım işyerinde.Ben bu şekilde okumustum.kodunun tamamını görmem gerekecek.

_tnt

#80
Ayrıca tx_pload registeri Rw ise (telefondan bakamıyorum) shiftin miso,sck,0,[veri1,veri2...] şeklunde okuyabilirsin.

cemilsivas



BASLA:
if tus=1 then
while tus=1: wend
CSN=0
veri=0
SHIFTOUT MOSI,SCK, 1,[adrs]
SHIFTin MISO,SCK, 0,[veri]
CSN=1
'pause 2000
lcdout $fe,$80,"Adres :",bin8 adrs
lcdout $fe,$c0,"Veri :",bin8 veri
adrs=adrs+1
endif
goto basla



hocam bu şekilde okumaya çalışıyorum

cemilsivas

Alıntı yapılan: _tnt - 21 Eylül 2016, 23:10:11
Ayrıca tx_pload registeri Rw ise (telefondan bakamıyorum) shiftin miso,sck,0,[veri1,veri2...] şeklunde okuyabilirsin.


basla1:
if tus=1 then
while tus=1:wend
veri=0
adrs=%10100000

csn=0
shiftout mosi,sck,1,[adrs]
for sayi=0 to 7
shiftout mosi,sck,1,[veriler[sayi]]
next
csn=1

lcdout $fe,1,"yazma bitti oku"
pause 2000
sayi=0
for sayi=0 to 7
veriler[sayi]=0
next
sayi=0
csn=0
shiftout mosi,sck,1,[adrs]
for sayi=0 to 7
shiftin miso,sck,0,[veriler[sayi]]
next
csn=1
lcdout $fe,1,veriler[0],veriler[1],veriler[2],veriler[3],veriler[4],veriler[5],veriler[6],veriler[7]
endif
goto basla1




hocam kod bu

_tnt

Kodlarında bi hata göremedim ama yarın test ederim.

cemilsivas

Cevabınızı bekliyorum hocam.

_tnt

#85
w_tx_payload  data gönderme komutu, okunmaz, komutu gönderdikten sonra arkasından verilerini yazarsın.

1 byte göndermek için register ayarları;

ce=0
'ADRS=wr   :VERI=%01101011 :GOSUB TX '0  crc=1, crco=1byte, pwr_up=1, Rx mod
ADRS=wr   :VERI=%01101010 :GOSUB TX '0  crc=1, crco=1byte, pwr_up=1, tx mod
ADRS=wr+1 :VERI=%00000000 :GOSUB TX '1 
ADRS=wr+2 :VERI=%00000001 :GOSUB TX '2  enable data pipe0
ADRS=wr+3 :VERI=%00000001 :GOSUB TX '3  3byte rx-tx adres
ADRS=wr+4 :VERI=%00111111 :GOSUB TX '4  1ms,15 retransmit
ADRS=wr+5 :VERI=%00000001 :GOSUB TX '5  Kanal 1
ADRS=wr+6 :VERI=%00100110 :GOSUB TX '6  250kbps, 0dBm
ADRS=wr+7 :VERI=%01100000 :GOSUB TX '7
adrs=wr+17:veri=%00000001 :GOSUB TX '17 RX payload = 1 byte

trx_adrs1=5:trx_adrs2=6:trx_adrs3=7

adrs=wr+16 'Tx adres  3 byte
CS=0
SHIFTOUT MOSI,SCK, 1,[ADRS,trx_adrs1,trx_adrs2,trx_adrs3]
CS=1
pause 10

adrs=wr+10 'Rx Adres 3 byte
CS=0
SHIFTOUT MOSI,SCK, 1,[ADRS,trx_adrs1,trx_adrs2,trx_adrs3]
CS=1

'tx-rx clear
adrs=wr+7:veri=%01110000 :GOSUB TX
pause 10
CS=0
SHIFTOUT MOSI,SCK, 1,[FLUSH_TX,FLUSH_RX]
CS=1


_tnt

#86
Alıntı Yap__tnt hocam. Benim sorum ile ilgili deneme yaptınız mı? Lcd'ye karakterler bozuk geliyor. Ama data genişliği aynı. Bir fikriniz var mı?


cemilsivas

İyi akşamlar hocalarım. Bugün yeni aldığım modüllerin alıcı verici kodları yazmaya başladım. Verici kodlarını bir bakıma hallettim gibi. Alıcı kodunda data geldiğini status registerinin 7. bitinden mi anlayacağız? Yani 7. bit 0 mı oluyor?
Aynı şekilde verici durumunda verilerin gönderildiğini status registerinin 6. pininin 0 olmasından mı anlıyoruz?

cemilsivas

Ya da fifo status registerinin 0. bitini yani rx_empty bitini mi kontrol etmeliyim? rx_empty 0 ise data vardır gibi. Okuduktan sonra da flush rx ten temizleme yaparım diye düşünüyorum.

cemilsivas

#89
İyi geceler hocalarım. Bugün alıcı ve verici kodlarını denemeye çalıştım. Ancak başaramadım.
En son denedigim kodlar şöyle

verici:


adrs=%10100000
veri="5"
csn=0
shiftout mosi,sck,1,[adrs,veri]
csn=1

ce=1
pauseus 20
ce=0


Alıcı:

verial:
ce=1
pauseus 200
adrs=%01100001
csn=0
shiftout mosi,sck,1,[adrs]
shiftin miso,sck,0,[alim[0]]
csn=1
ce=0
lcdout $fe,$c0,dec alim[0]

pause 3000'Burada 3 sn'de bir veri kontrolü yapmaya çalıştım. Irq pinini kullanmak istemiyorum.
goto verial


Alıcıdaki lcd'ye sürekli 0 değeri geliyor.

Burak hocam ve Ete hocam yardımlarınızı bekliyorum. İyi akşamlar.

Powered by EzPortal