T

12C

Başlatan toys-23, 13 Kasım 2011, 09:23:09

toys-23

Merhaba ETE Hocam
Amatör bi radyo entefresi ile 12c protkolünde haberleşme yapmam gerekiyor.Firma datasheet inde aşağı yukarı bu bilgiler var.Fazla yer kaplamaması açışından kısaltım.Derslerinizde 12c protokolünü defalarca okudum.Ama bana bu aşağıdaki bilgilerle bu entegre ile nerden başlamalıyım küçükte olsa bi örnek verebilirmisiniz.

register write is 24-bit long, including a r/wbit,7-bit register address , and 16-bit data (MSB isthe first bit).
R/W     A[6:0]   D[15:0]
If register address is more than 7FH, first write 0x0001 to 7FH, and then write value to the address subtracted by 80H. Finally write 0x0000 to 7FH
Example: writing 85H register address is 0x001F .
Move 7FH 0x0001;
Move 05H 0x001F; 05H=85H-80H
Move 7FH 0x0000;

It includes two pins: SCLK and SDIO.
A I2C interface transfer begins with START condition, a command byte and data bytes, each byte has a followed ACK (or NACK) bit, and ends with STOP condition. The command byte includes a 7-bit chip address and a r/wbit. The 7-bit chip address is 7'b0101110 when SEN is high, or is 7'1110001 when SEN is low.The ACK ( or NACK) is always sent out by receiver. When in write transfer, data bytes is written out from MCU, and when in read transfer, data bytes is read out Figure 1. I2C Interface Write Timing Diagram
The information contained herein is the exclusive property of RDA and shall not be distributed, reproduced, or disclosed in whole or in
part without prior written permission.
So 42H[15:0]=225*1(mV)= Binary (225)= 0000000011100001
41H[15:0]=225*2(mV)= Binary (450)= 0000000111000010

ete

I2C haberleşmesinde her bir cihazın bir device adresi vardır. Bu adres PBP da Control adı altında yer alır.
Komut kullanımı I2CWrite  Datapin, Clkpin, Control,[Veri1,veri2....] şeklindedir.
Burada önemli olan kontrol byte'ı yani device adrestir. Senin açıklamalarında bunu tam olarak algılayamadım.
Açıklamalara bakılırsa şöyle yapman gerekiyor;
I2CWRITE  Data_Pin, CLK_Pin , %00101110,[Data.Byte1,Data.Byte0]

Yazdıklarında control registeri bir %1110001 şeklinde bir %0101110 şeklinde verilmiş. Hangisi doğru anlamadım.
Şayet bu komut çalışmaz ise bu sefer shiftout komutunu kullanabilirsin.
Orada SHIFTOUT  Data_pin, CLK_Pin,1,[R/W biti,Device adres, veri1,veri2]
R/W biti okumada sıfır olacak yazma için 1 olacaktır.

Ete

toys-23

Tesekkür ederim hocam.

medes

toys-23
amator radyo entegresi diyorsunuz fakat engre nosunu vermemişsiniz  bu bir pll entegresi ise
nosunu verirseniz program protokolu hakkında bilgi vermeye çalışırız. saygılarımla
medes

toys-23


medes

toys-23
pll kontrol yapmak için kullanılan komut SHIFTOUT DTT,CL,1,[veri] kullanılır. yapmak istediğin alıcımı
yoksa vericimi  ona göre veri hesabı yapılarak gönderilir. zannediyorum mb1502 iki veri ile kontrol
ediliyor. ete hocam daha önceki sitede pll kitleyemedim. şeklinde  bir konu açılmıştı hocam o konuyu tekrardan buraya ilave ederse sana daha çok yardımcı olur. orada programın tamamı olacak zannediyorum. ayrıca gogle'de sadece mb1502 yazarsan orada
antrak.org.tr - Dual Bant VHF Alıcı sitesinde istediğin dökümanlar mevcut yapmak istediğinde takıldığın yerde yardımcı olurum.saygılarımla
medes

ete

#6
Önceki forumda yer alan konu ile ilgili mesajların önemli kısımlarını ardışık olarak aşağıya koydum
Alıntı YapTogier Yazmış
DEFINE SHIFT_PAUSEUS 10
'***********************  DEĞİŞKEN VE SABİTLER  ******************
DTT  VAR PORTA.1 
CL   VAR PORTA.0 
LE   VAR PORTA.2
   
CMCON=7       
TRISA=%11111000
TRISB=%11111111 

GONDER:
DTT=0:CL=0:LE=0                 
SHIFTOUT DTT,CL,1,[0\1,320\13,1\1]
PulsOut LE,10
PAUSE 50                     
SHIFTOUT DTT,CL,1,[85\11,104\7,0\1]   
PulsOut LE,10                   
PAUSE 50
DTT=%0:CL=%0:LE=%0
return                                       
End

4000/12,5=320
148.000-10,7=137.300mhz
137300/12,5/128= 85
137300/12,5-(85*128)=104

örneğin 149mhz se 150mhz hepsine kitliyo 148 kitleyemedim şimdiden teşekkürler

Ete Cevaplamış;
Soru işareti koyduğuna göre ne oluyor yokmu cevap veren demek istiyorsun. Konu çok fazla kişiyi ilgilendirmiyor. Bu konu ile uğraşan az. Üstelik çok bilinmeyenli denklem gibi bir şey.
Data sheet'e baktım. Daha öncede dikkatimi çekmiş idi. Birileri bir program yazmış her kes onu kopyalıyor. Sende öyle yapmışsın. AMa bir terslik var. Açıklaması şöyle;
Data sheet derki yollanan bilgide Control biti "1" olursa yollanan bilgi 15 bitlik Latch'a gider,
Control biti "0" olursa yollanan bilgi 18 bitlik latch a gider.
Şimdi senin programda ilk yollanan bilgiye bakalım;
SHIFTOUT DTT,CL,1,[0\1,320\13,1\1]
önce kaç bit  yollandığına bakalım.  0\1 ile 1 bit, 320\13 ile 13 bit ve 1\1 ile 1 bit olmak üzere toplam 15 bit bilgi yollanıyor.  Bunun birisi kontrol biti olduğuna göre 14 bit yollanıyor demektir. Halbuki burası 15 bit +1 bit kontrol biti olması gerekmezmi? Bu durumda 13 rakamı 14 olarak verilmeli bence.
Data formatına bakılırsa 16 bitlik bilgi verilmesi gerekiyor.  Format şöyle;
Sıfırıncı bit en sağda ve 16 bit en solda olmak üzere;
SW + Ref_Counter + Control biti
SW=H olursa Bölücü 64, L olursa 128 oluyor sen bunu 128 olarak kullanmışsın.
Shiftout komutunda 1 parametresi yollanan bilginin yüksek duyarlıklı (MSB first) önce olmak üzere yollanmasını sağlar.
Senin yolladığın ilk komuta bakarsak yollama sırası doğru ancak bit sayısı eksik gibi geliyor bana.
Önce bölücü bit olan sıfır yollanacak ardından , ref_counter 14. bitten başlayarak 1 ci bite kadar verilecek ve en sonda ise Control biti verilecektir. Böylece toplam yollanan bit sayısı 16 olacaktır.
Sende ise 15 bit oluyor.
İkinci gurup yollanan bilgilerde bir kusur görünmüyor. 19 Bit shift register için 19 bit bilgi yollanıyor ve bu 18 bit latch ile alınıyor.
Bulabildiğim tek kusur bu . Bunun dışında ne bölücüleri ne counter olayını nede diğerlerini anlamıyorum. Çünki konudan epeyce uzağım.

Alıntı YapMedes Cevap Yazmış
togier arkadaşım  ete hocam'ın teşhisi doğrudur sw=1 olarak seçeceksin ref=14 bit olarak göderecesin yalnız  N=85   A=104 olarak hesaplamışsın hiçbir zaman A nın N den büyük olmaması
gerekir benim hesabıma göre N=185 olması A=0 olması lazım bunları yerine koyarsan pll'in %yüz
148.000Mhz de kitleyecekti kolay gelsin

Alıntı YapKamil Cevap Yazmış
Hocam işinize yararmı bilmiyorum bu likte bilgiler var
saygılar
http://www.uwe-kerwien.de/dreibeis.htm

Alıntı YapTogier Cevap Yazmış
4000/12,5=320  => 4000mhz osilatör kristal mb1502 12.5 ise step aralığı bunu iste 2.5,6.5,12.5,25 yapılabilir ne kadar küsüratlıfırakaslarda çalıştığın önemli
148.000-10,7=137.300mhz => 148mhz cihazımızın alma  yapacağı frekens 10.7 ise ara frekans 137.300 de pll  çok düşük bir seviyede gönderme yapar burdan pll kitleyip kitlemedini anlarız
bundan sonrası malum standart hesablar
137300/12,5/128= 85
137300/12,5-(85*128)=104

Ete Cevaplamış
Kaynak aslında çok güzel. Epeyce detay verilmiş ama dili almanca olunca epeyce zorlandım. Tabiiki tercüme ettirerek okumaya çalıştım ama Google tercümesi felaket. Yinede anlaşılıyor bir şeyler.
Anladığım kadarı ile ;
İlk parametre olan R değeri ki buna Programlanabilir Referans Bölücü yada sayıcı deniliyor.
Bunu hesaplamak için;
R= Kristal Osc / Ara Frekans yada adım frekansı
Bizim örnekte ;
R= 4000 (Khz) / 12,5 KHz= 320

Sonraki Parametre Ntoplam denilen parametre oluyor. Buda,
Ntop=Kilitleme Frekansı/Adım Frekansı = 148000(Khz) / 12,5 KHz=11840
P (bölücü=64 alıyoruz herhalde)
N=Ntop / P = 11840 / 64 =  185 çıkıyor.
A değeri ise =Ntop - (N * P) 11840 - (185 * 64) = 11840 -11840 = 0 çıkıyor.
Böylece bulunana değerler;
Ref Bölücü (R)= 320
N Bölücü         = 185
A değeri..........=    0
Bulunmuş oluyor.
Benim için hala bazı bilinmeyenler var,
Kristal OSC neye göre seçiliyor. Kimi 12Mhz almış kimi 10 Mhz almış. Bizde 4 Mhz alınmış.
P bölücüsü 64 yada 128 oluyor sanırım ama neye göre seçiliyor.
Ara Frekans yada adım frekansını bizmi seçiyoruz ? öyle ise neye göre seçiyoruz. BU seçimin devre ile alakası yok ise devre kendini bu seçime göre nasıl ayarlıyor?.
Tabiiki bu sorularım işi bilenlere komik gelebilir. Temelde PLL mantığını bilmemek yatıyor.
Verilen ALmanca sitede bunun temeli anlatılıyor ama anlayabilene aşkolsun. Her neyse yavaş yavaş öğreneceğim bunuda.

Ete

Alıntı YapMedes Cevap Yazmış
togier
bilmiyorum pll kitledimi kitlemedimi gönderme frekans'ı herhangi bir işleme tabi tutulmadan hesaplanır
yalnız şoyle bir kural var vhf frekanslarda hiç bir zaman sw=128 kullanılmaz hesaplarını alt ust eder
sağlıklı hesap yapman için sw=64 olarak hesaplarını yap .
alma frekans'ını hesaplar iken bilmiyorum devre hazır bi devremi yoksa senin düzenlediğin bir devremi
bazı alıcılarda 10.7+148.000=158.700mhz olur bazı alıcılarda 148.000-10.7=137.300 şelinde alıcı frekansları'da aynı şekilde hesaplanır sw=64 üzerinden hesaplarını yapmalısın bu konuda sorun olur ise yardımcı olmaya çalışırım.

Alıntı YapMedes Yine mesaj yazmış
ete hocam
hesaplama tekniği doğrudur  bende aynı hesap tekniği ile hesapladım değerler aynı çıkıyor hesap yaparken yapılması gereken pll entegresinin datasheet'inde belirtiliyor vhf frekans'larda sw=64'e bölme yapılır hf'larda sw=128 'e göre hesaplama yapılır bu bölme işlemi entegrede okunarak karşılaştırma yapılmaktadır karşılaştırma yapılan entegrenin kristal frekansından elde edilen referans frekans'ı ile kaşılaştırılarak eşit ise pll kitler   R değeri frekans'ın hangi frekans arttırma şeklinde kullanacağını belirtmek içindir örneğin 12.5-25-50-khz şeklinde hangisi seçilir ise o frekans'ın katları şelinde artar
25khz seçili ise 147.900mhz olan frekans'ımız 147.900+25=147925--147950 şeklinde devam eder
bu 25khz değişikliğini sadece A değeri ile oynayarak değiştirilebilinir aksi mümkün değildir N değeri
bölündüğünde kaşılaştırma frekans'ı birimini  elde ederiz .
R değeri pll entegresinde kullanılan kristale göre hesaplanır bu değer entg.datasheet'inde belirtilmiştir. farklı kristallerde sorun çıkabilir.
ara frekans  filitre frekanslarını biz seçeriz isteyen 10.700mhz isteyen 21.000mhz isteyen 33.000mhz
seçebilir. firmalar farklı imkanlar sunuyorlar. adım frekans'ı dediğiniz 12.5-25- 50khz olması gerek
bu adımları kişi kendi ihtiyacına göre seçebilme hakkına sahiptir.saygılarımla

Alıntı YapKamil Cevap Yazmış
PLL konusun da bildiğim kadarı ile bir örnek vereyim.
ÇALIŞMA FREKANSI 65535 khz 
16 BİT N KONTÜR OLSUN
REFERANS OSC 10240KHZ

R=10240KHZ/100=102,4KHZ
FREKANS=65535/100 N=655,35
N=655,35 dan başlıyor N655 ile N65535 kadar 100khz lik
adımlar elde ediyoruz.

R=10240KHZ/10=1024KHZ ( adım 10khz)
FREKANS=65535/10 N=6553,5
N=6553,5 dan başlıyor N6553 ile N65535 kadar 10khz lik
adımlar elde ediyoruz.

R=10240KHZ/1=10240KHZ ( adım 1khz)
FREKANS=65535/1=N65535

N=65535 dan başlıyor  65534 ve 65536 olmuyor
Sadece N65535 te çalışıyor.

FREKANSI BİR ARTIRALIM FREKANS 65536KHZ OLSUN
R=10240KHZ/1=10240   ( adım 1khz)
FREKANS=65536/1=N65536
İşte burada A kontür devreye giriyor
Çünki FEKANS=65536/1 N=65536 eder bu değer N de yok. 
N nin en fazla alacağı değer 65535 dir.
DOĞRUSU:
R=10240KHZ/2=5120KHZ   
FREKANS=65536
A/2=32768
N=32768 başlıyor 32768 ile 65535 kadar 1khz lik
adımlar elde ediyoruz
A yı ikiye böldüğümüz için
R yide ikiye bölüyoruz

Alıntı YapMedes Cevap Yazmış
kamil
vermiş olduğun örnek doğrudur fakat her pll enteğre üreticisi ürettiği entegre pll hesaplamasını zaten
datasheet'inde vermektedir üretim standardı olarakta bu üç unsurun mutlaka hesalanarak entegreye gönderilmesi gerektiğidir buda R değeri N değeri A değeridir  aksi düşünülemez dikkat ettiyseniz
R=320    N=185    A=0  görüldüğü üzere A  değeri sıfır olmasına rağmen bunu pll entegresine göndermeme gibi bir lüxsümüz yok sıfırda olsa ( 0) olarak göderilmesi gerekliliğidir.önemli olan kurallara uymaktır kurallara uyulduğu taktirde olmayacak yapılamayacak bir icraat düşünemiyorum.
inşallah değerli bilgilerinizden yararlanmak üzere         

Hepsi bu kadar . Bütün bunlardan bir sonuç çıkar umarım.

Ete





toys-23

Hocam sağolun çok faydalı bilgiler, umarım buradan diğer ilgilenen arkadaşlarada faydası olur.

Powered by EzPortal