Picproje Elektronik Sitesi

DERLEYİCİLER => PICBasic => Konuyu başlatan: sozkarabacak - 26 Şubat 2009, 22:46:41

Başlık: PİCBASİC de bir modifiye sorusu:) MB1502 PLL
Gönderen: sozkarabacak - 26 Şubat 2009, 22:46:41
Elimizde yine bu forumdan bir arkadaşımızın yazdığı aşağıdaki yazılım var bu yazılım tek kanal olarak bizim mb1502 pll entegresine data yollayarak çok sağlıklı bir şekilde kilitliyebiliyor.
ELİMİZDEKİ YAZILIM:

'****************************************************************
'*  Name    : MB1502.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2008 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 02.01.2008                                        *
'*  Version : 1.0                                               *
'*  Notes   :MB1502 PLL SÜRÜCÜ                                                   *
'*          :                                                   *
'********************   TANIMLAR   ******************************

@ DEVICE pic16F628                                                  
@ DEVICE pic16F628, WDT_OFF              
@ DEVICE pic16F628, PWRT_ON
@ DEVICE pic16F628, INTRC_OSC_NOCLKOUT              
@ DEVICE pic16F628, PROTECT_OFF  
'***********************  DEĞİŞKEN VE SABİTLER  ******************
DTT VAR PORTA.1
CL VAR PORTA.0  
LE VAR PORTA.2    
REF VAR Word      
SW VAR Bit    
N VAR Word      
A VAR Byte        
X VAR WORD  
'***********************  AYARLAR  ********************************
CMCON=7                
OPTION_REG.7=1  
'***********************  GİRİŞ ÇIKIŞ AYARLARI  *******************
TRISA=%11111000  
TRISB=%11111111  
'*******************  DEĞER ATAMASI  ******************************
SW=0     'Prescaler değeri 128 seçildi.
REF=160  '4 MHz Xtal ile karşılaştırma frekansı 25 KHz seçildi.  
N=57     '184,600 MHz frekansına göre "N" değeri
A=88     '184,600 MHz frekansına göre "A" değeri
'*******************  PROGRAM ANA BÖLÜM  ***************************
BASLA:
GoSub HESAP  
GoSub GONDER
GoTo BASLA
'*************************  HESAP  *********************************
HESAP:
X=((128*N)+A)
X=X/40
Return
'*******************  PLL ENTEGRESİNE VERİ GÖNDER (ara program)  ****
GONDER:
DTT=0:CL=0:LE=0    
shiftout DTT,CL,1,[SW\1,REF\13,1\1]  
PulsOut LE,10
PAUSE 50                    
shiftout DTT,CL,1,[N\11,A\7,0\1]    
PulsOut LE,10                    
PAUSE 50
DTT=%0:CL=%0:LE=%0      
Return  

End


Şimdi dikkat ederseniz burda bir A değeri var bu A değeri 25 KHZ değere sahip aşağıdaki şemadanda göreceğiniz üzere ben dip swichlere değer atayarak bir frekans etrafında gezmek istiyorum bunu bu programa nasıl ekleriz?
Şema:
(http://i9.photobucket.com/albums/a74/sozkarabacak/MB1502.jpg)

Şöyle ki diyelim 1 nolu dip swici on konuma aldık 88 olan a değerini 87 yapacak ve frekans 25 khz düşmüş olacak. Diyelim 3 nolu dip swici on konuma aldık o anki kombinasyonun değeri olan a değerini 3 azaltacak yani frekansı 75 khz azaltmış olacak.
Başlık: PİCBASİC de bir modifiye sorusu:) MB1502 PLL
Gönderen: tyildizak - 26 Şubat 2009, 23:15:31
Hocam, şöyle olabilir sanırım:

'****************************************************************
'*  Name    : MB1502.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2008 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 02.01.2008                                        *
'*  Version : 1.0                                               *
'*  Notes   :MB1502 PLL SÜRÜCÜ                                                   *
'*          :                                                   *
'********************   TANIMLAR   ******************************

@ DEVICE pic16F628                                                  
@ DEVICE pic16F628, WDT_OFF            
@ DEVICE pic16F628, PWRT_ON
@ DEVICE pic16F628, INTRC_OSC_NOCLKOUT            
@ DEVICE pic16F628, PROTECT_OFF
'***********************  DEĞİŞKEN VE SABİTLER  ******************
     DTT VAR PORTA.1
     CL VAR PORTA.0
     LE VAR PORTA.2  
     REF VAR Word    
     SW VAR Bit    
     N VAR Word      
     A VAR BYTE      
     X VAR WORD  
'***********************  AYARLAR  ********************************
     CMCON=7              
     OPTION_REG.7=1
'***********************  GİRİŞ ÇIKIŞ AYARLARI  *******************
     TRISA=%11111000
     TRISB=%11111111
'*******************  DEĞER ATAMASI  ******************************
     SW=0     'Prescaler değeri 128 seçildi.
     REF=160  '4 MHz Xtal ile karşılaştırma frekansı 25 KHz seçildi.
     N=57     '184,600 MHz frekansına göre "N" değeri
     
'*******************  PROGRAM ANA BÖLÜM  ***************************
     BASLA:
     A=88     '184,600 MHz frekansına göre "A" değeri
     gosub test_A            
     GoSub HESAP
     GoSub GONDER
     GoTo BASLA
'*************************  HESAP  *********************************
     HESAP:
     X=((128*N)+A)
     X=X/40
     Return
'*******************  PLL ENTEGRESİNE VERİ GÖNDER (ara program)  ****
     GONDER:
     DTT=0:CL=0:LE=0    
     shiftout DTT,CL,1,[SW\1,REF\13,1\1]
     PulsOut LE,10
     PAUSE 50                    
     shiftout DTT,CL,1,[N\11,A\7,0\1]  
     PulsOut LE,10                    
     PAUSE 50
     DTT=%0:CL=%0:LE=%0    
     Return  



'*************************  HESAP(A)  *********************************

test_A:

    if portb.0 = 1 then A = A  - 1      
    if portb.1 = 1 then A = A  - 2
    if portb.2 = 1 then A = A  - 3
    if portb.3 = 1 then A = A  - 4
    if portb.7 = 1 then A = A  + 1
    if portb.6 = 1 then A = A  + 2
    if portb.4 = 1 then A = A  + 3
    if portb.5 = 1 then A = A  + 4

    return

End



portb ilk dört biti sırasıyla A(88 ) değerini 1,2,3 ve 4 azaltıyor,üst 4bit ise artırıyor.
Başlık: TEŞEKKÜR
Gönderen: sozkarabacak - 27 Şubat 2009, 08:44:49
Teşekkür ederim. Deneyip sonuç hakkında bilgi vereceğim.
Başlık: PİCBASİC de bir modifiye sorusu:) MB1502 PLL
Gönderen: askuzucu - 27 Şubat 2009, 14:04:23
öyle yaparsanız dip swich den dolayı a değeri sürekli değişir.
bunun yerine en kolayı;

'A=88    A Değer atamasını iptal et
A=PORTB  'a değeri ikilik sistemde port b den okunacak

böyle yaparsan direkt portb den A değerini girebilirsin.

Kodu ben denememiş idim.sıkıntı çıkardı mı?
Başlık: PİCBASİC de bir modifiye sorusu:) MB1502 PLL
Gönderen: tyildizak - 27 Şubat 2009, 14:25:58
Alıntı yapılan: "askuzucu"öyle yaparsanız dip swich den dolayı a değeri sürekli değişir.


Hocam, bunu ben de düşündüm, böyle yapmaktaki amacım, dip-switch pozisyonu değiştirildiğinde cihazı resetlemeden yeni değeri pll entegresine basmaktı, zaten sürekli ardarda ayarlanan değeri gönderiyor

(ayrıca, değer dip-switchten dolayı sürekli değişmez, dip-switch neye ayarlıysa o değerde sabit kalır, ta ki dip konumu değiştirilene kadar.)
Başlık: PİCBASİC de bir modifiye sorusu:) MB1502 PLL
Gönderen: askuzucu - 27 Şubat 2009, 14:41:05
Bir yanlış anlama oldu, kusura bakmayın.
a değerini ana gövdenin içine yerleştirmişsiniz.ona dikkat etmemişim.
bu durumda çalışır...
benim tavsiyemde de A değeri ana gövde içinde olmalı.
Başlık: Yazılım
Gönderen: sozkarabacak - 27 Şubat 2009, 20:15:53
Yazılımı denedim bu haliyle çalışıyor ama bazı sorunlar var. Birinci sorun dip swici birkaç kere ileri geri yapınca algılıyor. İkinci sorun değişen değer dip eski pozisyonuna alınınca eski frekans geri gelmiyor gidiş o gidiş:) Ben düşündüm bu durumu şuna bağladım bu hesaplamada tersi durum belirtilmemiş acaba ondan olabilir mi?
Başlık: PİCBASİC de bir modifiye sorusu:) MB1502 PLL
Gönderen: OG - 27 Şubat 2009, 20:44:41
PORTB dirençleri yok. Pullup aç
OPTION_REG.7=0
Başlık: PİCBASİC de bir modifiye sorusu:) MB1502 PLL
Gönderen: tyildizak - 27 Şubat 2009, 23:24:06
@OG üstat, evet, şemada gözden kaçırmışım, hatta pull-down olarak algılamışım, tabii bu durumda bağlıyken portb pull-up'ları da option_reg'den aktif edilirse, dip switch'ler on konumunda bağlı oldukları portu gnd'a çekecekler, bu yüzden en sondaki if "1" koşulları 0 olmalı.
Toparlarsak:


'****************************************************************
'*  Name    : MB1502.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2008 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 02.01.2008                                        *
'*  Version : 1.0                                               *
'*  Notes   :MB1502 PLL SÜRÜCÜ                                                   *
'*          :                                                   *
'********************   TANIMLAR   ******************************

@ DEVICE pic16F628                                                  
@ DEVICE pic16F628, WDT_OFF            
@ DEVICE pic16F628, PWRT_ON
@ DEVICE pic16F628, INTRC_OSC_NOCLKOUT            
@ DEVICE pic16F628, PROTECT_OFF
'***********************  DEĞİŞKEN VE SABİTLER  ******************
     DTT VAR PORTA.1
     CL VAR PORTA.0
     LE VAR PORTA.2  
     REF VAR Word    
     SW VAR Bit    
     N VAR Word      
     A VAR BYTE      
     X VAR WORD  
'***********************  AYARLAR  ********************************
     CMCON=7              
     OPTION_REG.7=0
'***********************  GİRİŞ ÇIKIŞ AYARLARI  *******************
     TRISA=%11111000
     TRISB=%11111111
'*******************  DEĞER ATAMASI  ******************************
     SW=0     'Prescaler değeri 128 seçildi.
     REF=160  '4 MHz Xtal ile karşılaştırma frekansı 25 KHz seçildi.
     N=57     '184,600 MHz frekansına göre "N" değeri
   
'*******************  PROGRAM ANA BÖLÜM  ***************************
     BASLA:
     A=88     '184,600 MHz frekansına göre "A" değeri
     gosub test_A            
     GoSub HESAP
     GoSub GONDER
     GoTo BASLA
'*************************  HESAP  *********************************
     HESAP:
     X=((128*N)+A)
     X=X/40
     Return
'*******************  PLL ENTEGRESİNE VERİ GÖNDER (ara program)  ****
     GONDER:
     DTT=0:CL=0:LE=0    
     shiftout DTT,CL,1,[SW\1,REF\13,1\1]
     PulsOut LE,10
     PAUSE 50                    
     shiftout DTT,CL,1,[N\11,A\7,0\1]  
     PulsOut LE,10                    
     PAUSE 50
     DTT=%0:CL=%0:LE=%0    
     Return  



'*************************  HESAP(A)  *********************************

test_A:

    if portb.0 = 0 then A = A  - 1    
    if portb.1 = 0 then A = A  - 2
    if portb.2 = 0 then A = A  - 3
    if portb.3 = 0 then A = A  - 4
    if portb.7 = 0 then A = A  + 1
    if portb.6 = 0 then A = A  + 2
    if portb.4 = 0 then A = A  + 3
    if portb.5 = 0 then A = A  + 4

    return

End
Başlık: frekans
Gönderen: sozkarabacak - 28 Şubat 2009, 08:40:08
Öncelikle şunu belirteyim yazılımın A değerini azaltma arttırma işlemi bu son haliyle tıkır tıkır çalıştı ilgilenen arkadaşlara teşekkür ediyorum.
Alıntı yapılan: "askuzucu"
Kodu ben denememiş idim.sıkıntı çıkardı mı?

Yazılımın frekans kısmında şöyle bir sorun var. Benim hesaplamalarıma göre bölücü 128 seçilmiş ve referans 160 olduğunda 184.600 frekansı için n=57 a=88 oluyor.

Bu değerleri yazıp sistemi çalıştırınca osilatör 183.800 frekansında çalşıyor. A değeri ile nekadar oynarsak oynayalım 60 lı değerlerden sonra a değeri hesaplamayı etkilemiyor yani a=100 de yazsak birşey değişmiyor ama a değeri 60 lı değerlerin altında mantık olarak 25 khz kaydırıyor. N değeride gerekli değerlerde çalışıyor. Bende bu sorunu şöyle bir denemeyle çözdüm ama deneme yanılma ile tabi rferans değerini 159 yaptım. Bu şekilde istediğim frekansa deneme yanılma ile getirdim.

Aklıma birde şu geldi benim yazılım denediğim devrede mb1502 nin 4mhz referans osilatörünün kristaline 0/6pf değerlikli bir trimer bağlı be trimer belki yetersiz kalıyor olabilir tabi.
Başlık: PİCBASİC de bir modifiye sorusu:) MB1502 PLL
Gönderen: askuzucu - 28 Şubat 2009, 13:10:56
Kristal frekansını kontrol et.datasheet teki hesaplar doğrudur.datasheet demiş ki;

PULSE SWALLOW FUNCTION
fvco  = [(PxN)+A] x fosc ÷ R
fVCO: Output frequency of external voltage controlled oscillator (VCO)
N: Preset divide ratio of binary 11-bit programmable counter (16 to 2047)
A: Preset divide ratio of binary 7-bit swallow counter (0≤A≤127, A<N)
fOSC: Output frequency of the external reference frequency oscillator
R: Preset divide ratio of binary 14-bit programmable reference counter (8 to 16383)
P: Preset modulus of external dual modulus prescaler (64 or 128)

buraya baktığın zaman anlaşılıyor zaten."A" bölücüsünün alacağı değer 0 ile 127 arasında olabilir ve "A" değeri "N" değerinden küçük olmalıdır.
frekens hesabında sorun yok:datasheete göre hesaplayacaksın.yazılımda görülen kısım girilen "A" ve "N" değerlerine göre frekansı ekranda görebilmek içindi.sonuçta bu bir deneme yazılımı...
kristal bacaklarına bağlı kapasiteler ile kalibrasyonu düzeltebilirsin.
Başlık: PİCBASİC de bir modifiye sorusu:) MB1502 PLL
Gönderen: askuzucu - 28 Şubat 2009, 17:38:50
istediğin frekans için şu değerleri dene;
REF=160
P=64
N=115
A=0 ile 114 arası
bu durumda n değerini değiştirmeden 184.000 dan 186.850 ye kadar ayarlayabilirsin.
184.600 için A=24 olur.
Sadece A değerini kullanarak kanal değiştirecek isen bu frekanslarda prescaler 64 e ayarlı olması daha mantıklı.
daha yüksek frekanslarda  f/128 yapabilirsin.
REF değerini değiştirme.4 MHz kristalde ref değerini 159 yaparsan step 25 KHz değil, 25.157 KHz olur...
Başlık: a değeri
Gönderen: sozkarabacak - 01 Mart 2009, 15:13:18
Evet eğer N değerei büyük olmalıdır A değerinden kuralı varsa o zaman programın çalışması normal demektir. Ben bu yazılımı başka bir arkadaşın yaptığı devrede denediğim içim bölücüyü 128 olarak seçmişti ondan o şekil denedim. Teşekkürler. Bu mantıkta galiba N değerinide aynı şekilde gövdenin içine alsak bir dip swicide ona atasak çalışır değil mi mantıken.
Başlık: PİCBASİC de bir modifiye sorusu:) MB1502 PLL
Gönderen: askuzucu - 01 Mart 2009, 17:00:35
Önbölücü seçimi önemli değil.mb 1502 registerinden atanıyor.64 de seçsen çalışır, 128 de.ama 64 seçersen a bölücüsü ile değiştireceğin kanal sayısı artar. n değerini de değiştirirsin.ama bu iş pratik değil.frekansa dayalı a ve n değerini işlemciye hesaplatmak en mantıklısı.aslan korhan ın bir yazılımı vardı.onu incele.
Başlık: bölücü
Gönderen: sozkarabacak - 01 Mart 2009, 20:17:41
Şimdi şu noktada o zaman ben datasheeti yanlış yorumlamışım datasheetten ben şunu anlamıştım datasheette SW diye bir uç var onu 1 yapınca bölücü 64 oluyor şaseye çekip 0 yapınca bölücü 128 oluyor. Ben böyle anlamıştım. yanlış mı anlamışım. Bölücü seçimi için donanımla oynamak gerek miyor mu?
Başlık: PİCBASİC de bir modifiye sorusu:) MB1502 PLL
Gönderen: ipek - 02 Mart 2009, 02:35:58
şükrü ön bölücüyü yazılımın içinden seçiyorsun sw denilen ayak mb1502 (scanner) hızlı bir şekilde tarar iken loop filitreye buradan müdahele edilebilmesi içindir. normal uygulamalarda kullanılmaz.batarya ile çalışan çhazlar buradan gelen darbeler ile çok kısa uyuma fırsatı bulurlar bataryanın durumundan %5...10 gibi tasarruf ederler.kısaca senin uygulamalarında bu bacak kullanılmayacak..
Başlık: PİCBASİC de bir modifiye sorusu:) MB1502 PLL
Gönderen: askuzucu - 02 Mart 2009, 09:37:33
yazılımın içinde bölücü ile ilgili kısımları görmüş olmalısın.ipek arkadaşın da dediği gibi bölücü yazılımla seçiliyor.64 seçersen örneğin entegre duruma göre 64 veya 65 e bölerek çalıştırır.kendi içerisinde bu oranı ayarlar.dual modulus pll lerin özelliği budur.böylece referans frekansı steple aynı olur.yani örnekte 25 KHz.olmuş.bu nedenle kiliitlenme hızlı olur, referans frekansından sızabilecek gürültüleri de duymazsın.avantajı budur.
bunun yerine ben lm7001 tercih ediyorum.önbölücü içermediği için direkt referans frekansı=step fr. oluyor.frekans yönetimi daha kolay, yok n register yok a registrer uğraştırmıyor.ama 200 MHZ nin altında çalışabiliyor.bir denememde 250 MHz ye de çıkmıştı.
Başlık: Ynt: PİCBASİC de bir modifiye sorusu:) MB1502 PLL
Gönderen: tamircihasan - 10 Haziran 2019, 21:13:46
sayın ustalarım elimde mb1504 var bir tx rx devresi yapacağım daha doğrusu eski bir araç telefonunu modifiye edip amatör frekansta kullanmak için cihazı elden geçireceğim. mb1502 ve 1504 datalarını kıyasladım iletişim yazılım kısımları aynı görünüyor sizden ricam yazılımdaki pll frekansı 439.350 gibi bir frekans için düzenlememiz mümkünmüdür veya assemblyde frekansın nasıl oluşturulduğunu izah edebilirmisiniz veya dip switch ile frekans belirleyecek şekilde bir çalışma yapmamız mümkünmüdür ? eğer bunu yapabilirsek yapacağımız çalışmayı makale haline getirip tüm amatör arkadaşlar ile paylaşmak istiyorum.

TB5HNS TamirciHasan Gonya 73'