avatar_ete

PIC Basic Ders-11 (PWM Kullanımı)

Başlatan ete, 28 Ağustos 2011, 16:21:42

Hattuşa

tabi usta buyur

http://www.ebay.com/itm/New-AD9850-DDS-Signal-Generator-Module-0-40MHz-Test-Equipment-/180820399452?pt=UK_BOI_Electrical_Test_Measurement_Equipment_ET&hash=item2a19bc555c

http://www.ebay.com/itm/AD9850-DDS-Signal-Generator-Module-0-40MHz-Test-Equipment-/140776695890?pt=LH_DefaultDomain_0&hash=item20c6f1e852

http://www.ebay.com/itm/AD9850-DDS-Signal-Generator-Module-0-40MHz-2-Sine-Wave-And-2-Square-Wave-Output-/400385385193?pt=LH_DefaultDomain_0&hash=item5d38d422e9

ustam işin özü ad9850 ve ad9851 entegreleri bunların datasheetlerini incelerseniz şayet, 1 hz ile 125MHZ arası sinüs ve kare dalga üreticileridir ve işlemciler ile kontrolü mümkün, hatta ebayda hazır yapılmışı var 25-30 dolar ama onlar 2x16 lcd ve sinyal ayarı potlu bense 18F serisine grafik ekranlı ve tuş takımlısını yapmak istiyorum, tabi becerebilirsem

Hattuşa

#31
slm ETE hocam, hpwm ile şöyle bir sorunum var, sizce neden kaynaklanabilir?
ben hpwm 1 i aktif etmeyi bir pot değerine bağladım, yani ADC ölçtüm potun ve 0 ile 99 değeri arasında pot değeri oluşturdum, yazılımda eğer pot değerim 10 ve üstü olursa ADC yi aktif et, yok pot değerim 10 birimden aşağı ise hpwm 1 i kapat, bu kısım çalışıyor ancak, isis skobunda da görüldüğü üzere hpwm 1 kapalı iken minik frekans veriyor, artık ona gürültü mü dersiniz bilmiyorum, ama bu bana sıkıntı yaratıyor, zira ben hpwm den üreteceğim 3 khz ile 50-60 khz arası değeri cd4024 (frekans bölücü ile) ses katı yapmaya çalışıyorum ve bu gürültü ses olarak çıkıyor bunu nasıl keserim, (NOT; yazılımım arka planda 8 bitlik TMR0 kesmesi çalışmakta ve kesme içerisinde sadece sayaç çalışmaktadır acaba bu TMR0 kesmesinden kaynaklanabilirmi?)

Device 18F2520
Xtal 10
Config_Start
   OSC = HSPLL ; HS oscillator, PLL enabled (Clock Frequency = 4 x FOSC1)
   FCMEN = OFF ; Fail-Safe Clock Monitor disabled
   IESO = OFF ; Oscillator Switchover mode disabled
   PWRT = OFF ; PWRT disabled
   BOREN = OFF ; Brown-out Reset disabled in hardware and software
   WDT = OFF ; WDT disabled (control is placed on the SWDTEN bit)
   MCLRE = On ; MCLR pin enabled; RE3 input pin disabled
   LPT1OSC = OFF ; Timer1 configured for higher power operation
   PBADEN = OFF ; PORTB<4:0> pins are configured as digital I/O on Reset
'   CCP2MX = PORTC ; CCP2 input/output is multiplexed with RC1
   STVREN = OFF ; Stack full/underflow will not cause Reset
   LVP = On ; Single-Supply ICSP enabled
   XINST = OFF ; Instruction set extension and Indexed Addressing mode disabled (Legacy mode)
   Debug = OFF ; Background debugger disabled, RB6 and RB7 configured as general purpose I/O pins
Config_End
Declare PLL_Req TRUE '40mhz
Declare All_Digital = FALSE
PortB_Pullups =0
Declare CCP1_Pin=PORTC.2
CMCON =7
ADCON0 = %00000011                                 
ADCON1 = %00001100                                
ADCON2 = %10000000    
 
Declare  LCD_Type ALPHA   ' Alphanumeric LCD type
Declare  LCD_DTPin  PORTB.0   ' LCD data port
Declare  LCD_ENPin  PORTC.7   ' E line
Declare  LCD_RSPin  PORTB.4   ' RS line
Declare  LCD_Interface  4   ' 4-line or 8-line interface
Declare  LCD_Lines   4   ' How many lines the LCD has
Cls
DelayMS 100

TRISA =%00000111  :PORTA =0                     
TRISB =%00000000 :PORTB =0                      
TRISC =%00011011  :PORTC =0                                         
                         
Symbol GrOuNd =PORTC.0                          
Symbol LaMbA =PORTC.5 
Symbol mEnU =PORTC.1
Symbol yUkArI =PORTC.3
Symbol asAgI =PORTC.4
Symbol OrNeK =PORTA.3
Symbol PulSe =PORTA.5

Output PulSe
Input mEnU
Input yUkArI
Input asAgI                         
Input GrOuNd                                                                  
Output LaMbA  
Output OrNeK  
'//////////////KESME configrasyonu ///////////////////////////  
Symbol TMR0IF = INTCON.2 ' TMR0 Overflow Interrupt Flag         
Symbol TMR0IE = INTCON.5 ' TMR0 Overflow Interrupt Enable       
Symbol GIE = INTCON.7    ' Global Interrupt Enable              
T0CON  =%11000000             'TIMER0=8 BİT VE PRESCALE 1/2     

GIE =1
TMR0IF =1
TMR0IE =1
GIE =0

Dim SaYaC As Word
SaYaC =0
Dim GuC As Word
Dim Ad As Word
Dim AdA[12] As Word
Dim AdB[12] As Word
Dim AdC[12] As Word
Dim AdD[12] As Word
Dim AdE[12] As Word
Dim AdF[12] As Word
Dim AdG[12] As Word
Dim AdK[12] As Word
Dim AdI[12] As Word
Dim AdJ[12] As Word
Dim TaDc[12] As Word
Dim pT[12] As Word
Dim pTt As Word
Dim ArA As Byte
Dim SeC As Word
Dim X As Word
Dim TsAy As Byte
Dim AlgI As Word
Dim aLg As Float
Dim AL As Float
Dim AlgIm As Byte
Dim tSr As Byte
Dim FaRk As Byte
Dim sOnUc As Byte
Dim Fr As Float
Dim fRr As Word
Dim fFr As Word
Dim aC As Byte

degIsKeN:

fRr =3000
FaRk =0
tSr =50
aLg =0
AL =0
ArA =80
GuC =300
aC =0
On_Hardware_Interrupt GoTo KESME
GIE =1
GoTo OnMaIn

KESME:
 Context Save
 
        Inc SaYaC
        If SaYaC =200 Then SaYaC =0 '10,25 mS =98 hertz
       
        TMR0IF=0
        GIE=1             
Context Restore 

OnMaIn:
GIE =0
LaMbA =1
Print At 1,1,"MERHABA"
DelayMS 100
X =0
For X =0 To 12
AdA[X] =0
AdB[X] =0
AdC[X] =0
AdD[X] =0
AdE[X] =0
AdF[X] =0
AdG[X] =0
AdK[X] =0
AdI[X] =0
AdJ[X] =0
pT[X] =0
TaDc[X] =0
Next X

SaYaC =0
SeC =0
GIE =1
MaIn:
If SaYaC =1 Then
        
GoSub GoNdER
       
GoSub OkuPoT
      
GoSub aLgIlA
        Print At 4,10,Dec tSr," "
If tSr <=10 Then 
HPWM 1,0,0  
    Else
HPWM 1,180,5000
  
    EndIf
EndIf
GoTo MaIn

OkuPoT:
ADCON0 =%00000111
pTt =ADIn 1
DelayUS 10
While ADCON0.1 ==1 :Wend
    pT[9] =pT[8]
    pT[8] =pT[7]
    pT[7] =pT[6]
    pT[6] =pT[5]
    pT[5] =pT[4]
    pT[4] =pT[3]
    pT[3] =pT[2]
    pT[2] =pT[1]
    pT[1] =pT[0]
    pT[0] =pTt
    pT[10] =(pT[9] +pT[8] +pT[7] +pT[6] +pT[5] +pT[4] +pT[3] +pT[2] +pT[1] +pT[0]) /10
    pT[11] =(pT[11] +pT[1]) /2
    tSr =pT[11] /10
    If tSr >=99 Then tSr =99
Return

aLgIlA:
AlgI = AdF[11] -TaDc[5]
If AlgI <1 Then AlgI =0
aLg =AlgI *0.2
AL =(AL *0.8) +aLg 
'If AL <1 Then AL =0
If AL >=300 Then AL =0
AlgIm =AL
FaRk =AlgIm -tSr 
If FaRk >257 Then FaRk =0
sOnUc =(AlgIm +tSr) /2
If sOnUc >=50 Then sOnUc =50
fFr =FaRk *1500
Fr =fFr +fRr
Return


ToPrAK:
HPWM 1,0,0
If TsAy <100 Then Inc TsAy
If TsAy =1 Then Print At 4,1,"G R O U N D"
    TaDc[0] =AdA[11]
    TaDc[1] =AdB[11]
    TaDc[2] =AdC[11]
    TaDc[3] =AdD[11]
    TaDc[4] =AdE[11]
    TaDc[5] =AdF[11]
    TaDc[6] =AdG[11]
    TaDc[7] =AdK[11]
    TaDc[8] =AdI[11]
    TaDc[9] =AdJ[11]
If TsAy =99 Then Print At 4,1,"           "
Return

GoNdER:
PORTB.6 =1
OrNeK =1
DelayUS 80
OrNeK =0
PulSe =1
DelayUS GuC
PulSe =0
DelayUS ArA
DelayUS SeC
ADCON0 =%00001011
Ad =ADIn 2
DelayUS 10
While ADCON0.1 ==1 :Wend
Select SeC
    Case 0
    AdA[9] =AdA[8]
    AdA[8] =AdA[7]
    AdA[7] =AdA[6]
    AdA[6] =AdA[5]
    AdA[5] =AdA[4]
    AdA[4] =AdA[3]
    AdA[3] =AdA[2]
    AdA[2] =AdA[1]
    AdA[1] =AdA[0]
    AdA[0] =Ad
    AdA[10] =(AdA[9] +AdA[8] +AdA[7] +AdA[6] +AdA[5] +AdA[4] +AdA[3] +AdA[2] +AdA[1] +AdA[0]) /10
    AdA[11] =(AdA[11] +AdA[1]) /2
    SeC =20
 Case 20
    AdB[9] =AdB[8]
    AdB[8] =AdB[7]
    AdB[7] =AdB[6]
    AdB[6] =AdB[5]
    AdB[5] =AdB[4]
    AdB[4] =AdB[3]
    AdB[3] =AdB[2]
    AdB[2] =AdB[1]
    AdB[1] =AdB[0]
    AdB[0] =Ad
    AdB[10] =(AdB[9] +AdB[8] +AdB[7] +AdB[6] +AdB[5] +AdB[4] +AdB[3] +AdB[2] +AdB[1] +AdB[0]) /10
    AdB[11] =(AdB[11] +AdB[1]) /2
    SeC =40 
 Case 40
    AdC[9] =AdC[8]
    AdC[8] =AdC[7]
    AdC[7] =AdC[6]
    AdC[6] =AdC[5]
    AdC[5] =AdC[4]
    AdC[4] =AdC[3]
    AdC[3] =AdC[2]
    AdC[2] =AdC[1]
    AdC[1] =AdC[0]
    AdC[0] =Ad
    AdC[10] =(AdC[9] +AdC[8] +AdC[7] +AdC[6] +AdC[5] +AdC[4] +AdC[3] +AdC[2] +AdC[1] +AdC[0]) /10
    AdC[11] =(AdC[11] +AdC[1]) /2
    SeC =60 
 Case 60
    AdD[9] =AdD[8]
    AdD[8] =AdD[7]
    AdD[7] =AdD[6]
    AdD[6] =AdD[5]
    AdD[5] =AdD[4]
    AdD[4] =AdD[3]
    AdD[3] =AdD[2]
    AdD[2] =AdD[1]
    AdD[1] =AdD[0]
    AdD[0] =Ad
    AdD[10] =(AdD[9] +AdD[8] +AdD[7] +AdD[6] +AdD[5] +AdD[4] +AdD[3] +AdD[2] +AdD[1] +AdD[0]) /10
    AdD[11] =(AdD[11] +AdD[1]) /2
    SeC =80 
 Case 80
    AdE[9] =AdE[8]
    AdE[8] =AdE[7]
    AdE[7] =AdE[6]
    AdE[6] =AdE[5]
    AdE[5] =AdE[4]
    AdE[4] =AdE[3]
    AdE[3] =AdE[2]
    AdE[2] =AdE[1]
    AdE[1] =AdE[0]
    AdE[0] =Ad
    AdE[10] =(AdE[9] +AdE[8] +AdE[7] +AdE[6] +AdE[5] +AdE[4] +AdE[3] +AdE[2] +AdE[1] +AdE[0]) /10
    AdE[11] =(AdE[11] +AdE[1]) /2
    SeC =100           
 Case 100
    AdF[9] =AdF[8]
    AdF[8] =AdF[7]
    AdF[7] =AdF[6]
    AdF[6] =AdF[5]
    AdF[5] =AdF[4]
    AdF[4] =AdF[3]
    AdF[3] =AdF[2]
    AdF[2] =AdF[1]
    AdF[1] =AdF[0]
    AdF[0] =Ad
    AdF[10] =(AdF[9] +AdF[8] +AdF[7] +AdF[6] +AdF[5] +AdF[4] +AdF[3] +AdF[2] +AdF[1] +AdF[0]) /10
    AdF[11] =(AdF[11] +AdF[1]) /2
    SeC =150 
 Case 150
    AdG[9] =AdG[8]
    AdG[8] =AdG[7]
    AdG[7] =AdG[6]
    AdG[6] =AdG[5]
    AdG[5] =AdG[4]
    AdG[4] =AdG[3]
    AdG[3] =AdG[2]
    AdG[2] =AdG[1]
    AdG[1] =AdG[0]
    AdG[0] =Ad
    AdG[10] =(AdG[9] +AdG[8] +AdG[7] +AdG[6] +AdG[5] +AdG[4] +AdG[3] +AdG[2] +AdG[1] +AdG[0]) /10
    AdG[11] =(AdG[11] +AdG[1]) /2
    SeC =200  
 Case 200
    AdK[9] =AdK[8]
    AdK[8] =AdK[7]
    AdK[7] =AdK[6]
    AdK[6] =AdK[5]
    AdK[5] =AdK[4]
    AdK[4] =AdK[3]
    AdK[3] =AdK[2]
    AdK[2] =AdK[1]
    AdK[1] =AdK[0]
    AdK[0] =Ad
    AdK[10] =(AdK[9] +AdK[8] +AdK[7] +AdK[6] +AdK[5] +AdK[4] +AdK[3] +AdK[2] +AdK[1] +AdK[0]) /10
    AdK[11] =(AdK[11] +AdK[1]) /2
    SeC =300
 Case 300
    AdI[9] =AdI[8]
    AdI[8] =AdI[7]
    AdI[7] =AdI[6]
    AdI[6] =AdI[5]
    AdI[5] =AdI[4]
    AdI[4] =AdI[3]
    AdI[3] =AdI[2]
    AdI[2] =AdI[1]
    AdI[1] =AdI[0]
    AdI[0] =Ad
    AdI[10] =(AdI[9] +AdI[8] +AdI[7] +AdI[6] +AdI[5] +AdI[4] +AdI[3] +AdI[2] +AdI[1] +AdI[0]) /10
    AdI[11] =(AdI[11] +AdI[1]) /2
    SeC =500 
 Case 500
    AdJ[9] =AdJ[8]
    AdJ[8] =AdJ[7]
    AdJ[7] =AdJ[6]
    AdJ[6] =AdJ[5]
    AdJ[5] =AdJ[4]
    AdJ[4] =AdJ[3]
    AdJ[3] =AdJ[2]
    AdJ[2] =AdJ[1]
    AdJ[1] =AdJ[0]
    AdJ[0] =Ad
    AdJ[10] =(AdJ[9] +AdJ[8] +AdJ[7] +AdJ[6] +AdJ[5] +AdJ[4] +AdJ[3] +AdJ[2] +AdJ[1] +AdJ[0]) /10
    AdJ[11] =(AdJ[11] +AdJ[1]) /2
    SeC =0 
       
  EndSelect  
    
 PORTB.6 =0   
Return







End




                

Hattuşa

#32
hocam  bu arada devreyi gerçek ortamda denedim, isisde aynı şekilde
aslında yapmak istediğim şu pot değerine göre 250 hertzden 5-6 Khz arası ses frekansı oluşturmak, bunun için cd4024 kullandım 3 khz i bölerek 250 hertz civarı bir frekans üretip hoparlöre verdim, tabi hpwm 1 50-60 khz e çıkarttığımda da bölücü ile 5-6 khz e ulaşıyorum

sonuc olarak başka çözüm nasıl olabilir

ete

Soruların hepsine cevap veremeyeceğim. Dışarıdayım ve telexondan cevaplıyorum.
Hpwm sinyalini kapatmanın iki yolu var. Birinde sanki duty değeeîni sıfır olarak ayarlarsan sinyal kapanırmış gibi gelir ama aslında söylediğin paraziti yapar.
Bu nedenle sinyali kapatmanın en güzel yolu ccp1con registeri 3 ve 4 bitlerini sıfır yapmaktır.
Sınırları kurtarıyor ise freqout diye bir komut olması gerek onu deneyebilirsin.
Ete

Hattuşa

#34
SLM ete hocam bi konuda yine kafam basmadı yardımınıza ihtiyacım var
malum bir sinyal generatoru yapmak için uğraşıyorum, bunu da AD9850 hazır modülü ile yapmayı düşündüm ve bir adet temin ettim.
benim modülün 1-1 aynısını PBP da 16F628 de yapmışlar buraya kadar anladım. kontrolü ile ilgili linki veriyorum (amacım reklam değildir)
http://www.picbasic.co.uk/forum/showthread.php?t=17688

buradaki ;
DEFINE OSC 4

Clk VAR PortB.5                 ' Clock output pin
Dta VAR PortB.6                 ' Data output pin
FUd VAR PortB.7                 ' Frequency update output pin

PortB = 0
TRISB = 0                       ' All outputs

Pause 1000                      ' Let everything power up

[b]' Tuning word for 500kHz = 500000*2^32/125000000 = 17179869 or, in HEX, $010624DD
' The AD9850 wants the least significant byte first:
SHIFTOUT Dta, Clk, 0, [$DD, $24, $06, $01, $00][/b]

' Now pulse the Frequency update pin
FUd = 1 : PauseUS 10 : FUd = 0

' Blink a LED to show we're alive.
Done:
  Toggle PortB.3
  Pause 100
Goto Done
hesaplama işleminde;
1- 500kHz = 500000*2^32/125000000 = 17179869
    500 khz için uygulanan formülde matematiksel işlemi anlamadım, yani "^" işlevi nedir, ben şimdi tuş takımı ile 500 khz yerine değişkeni belirleyeceğim ilgili formulde yerine koyacağım (tabi yardım alıp  formulü oluşturabilirsem)
2- olarakta 500kHz = 500000*2^32/125000000 = 17179869 or, in HEX, $010624DD
çıkan sonucu nasıl HEXIMAL değere çevirebilirim.
araştırmalarımda belirli bir frekans üzerinde gönderilen dataların float değişkeni boyutuna ulaşması sonucu sıkıntılar oluşmakta, eğer heximal değere işlemci çevirebilirse
SHIFTOUT Dta, Clk, 0, [$DD, $24, $06, $01, $00]
komutu ile bu modülü kontrol etmek oldukça kolay olacak diye düşünüyorum
sizin düşünceleriniz nelerdir?

Hattuşa

bu arada böylesi bir (1 hz ile 40 Mhz arası) sinyal generatoru yapmak isteyen arkadaşlar olursa; aşağıdaki siteden temin edebilirler (ki ben elektronik sigarayı bu siteden almıştım,
http://www.buyincoins.com/new_en/details/new-ad9850-dds-signal-generator-module-0-40mhz-test-equipment-product-11609.html
free shipping sanırım yani ücretsiz posta yani, ben bu modülü almadım (ama aynısı bana bir arkadaşım verdi) alacak arkadaş olursa bana da haber versin beraber alalım 2-3 tane de ben temin etmek isterim. bu tip çin sitelerinden alınan malzemeler ucuz ve kargo bedava tek sorun ortalama 20 gün sürüyor teslimat

Hattuşa

500kHz = 500000*2^32/125000000

ete hocam datasheette şimdi farkettim bu 2^32 dediği; 2 üzeri 32 peki bunu nasıl hesaplatacağım
;D

ete

Proton kullandığına göre zor olmasa gerek. 0031 aarsı döngü kur 2 yi bir önceki ile sürekli çarp. 2 üzeri 32 demek 32 adet 2 nin bir biri ile çarpımı demektir.
Değişkeni LONG kullanırsın olur biter.  Kısaltma yapma imkanında var. bir sürü fazladan sıfır mevcut. Bu eşitlik sonuçta 2^32/25 e eşdeğerdir.

Ete

Hattuşa

#38
hocam
formulümüz frekans =istenen frekans değeri *2^32/12500000 ise
istenen frekans değeri =x
2^32/125000000 =Y
dersek ve Y değerine de
Y= 4294967296/125000000 => Y=34.3598 diyerek bir sabit kabul edip
yeni formulümüz
istenen frekans =X*Y
diyerek sonuca ulaşamayız mı?

EDIT= hocam buraya kadar tamam şimdi sorun 2. şıkta elde ettiğim değeri heximal olarak gönderme işlemi kaldı
SHIFTOUT Dta, Clk, 0, [$DD, $24, $06, $01, $00][/b]
buradaki işlem yani çıkan sonucu nasıl yollarım

ete

sonuç 32 bit float olduğuna göre bunu 4 ayrı byte olarak ayırıp yollayabilirsin değilmi?
Word değişkeni Byte0 - Byte1 diye arılıyor.
Long Değişkeni Byte0 - Byte1 - Byte2 -Byte3 olarak ayrılıyordu yanlış hatırlamıyorsam.
Başkada bir yol aklıma gelmiyor.
Ete

Hattuşa

Alıntı yapılan: ete - 17 Nisan 2013, 11:51:35
sonuç 32 bit float olduğuna göre bunu 4 ayrı byte olarak ayırıp yollayabilirsin değilmi?
Word değişkeni Byte0 - Byte1 diye arılıyor.
Long Değişkeni Byte0 - Byte1 - Byte2 -Byte3 olarak ayrılıyordu yanlış hatırlamıyorsam.
Başkada bir yol aklıma gelmiyor.
Ete



nasıl yani hocam anlamadım, yani 32 bitlik değişkeni nasıl 4 byte dönüştürülecek ki?

ete

1byte= 8 bit dir. 32bit/8bit=4 byte eder. Bu bakımdan 4 ayrı byte halinde bölünebilir diye düşünüyorum.
Bu konu hakkında çok fazla emin değilim. Aslında ilgi alanımın dışında bir konu ve yanlış bir şey söylememek için eniyisi konuyu kapayalım.

Ete


onurinci

AD9850 125Mhz Xtal osilator ile maximum 62.5mhz  üretebilir.
AD9851 ile 30Mhz'lik Xtal ile çip'in içindeki multipler ile 30mhz 6 ile çarpılır 180Mhz elde edilir
yine bunun yarısı kullanılır,yani en fazla 90Mhz.
teoride böyle fakat pratikte işler zorlaşır 1Mhz'de alçak geçiren filitrenin çıkışında örnek 1volt gördün diyelim 40Mhz yapınca 100mV zor görünür.ben konuya hakim değilim araştırıyorum asm ile çalışan örnekler nette mevcut fakat basic yada proton ile ne yazıkki başlanmışta bitmiş bir projeye rastlamadım.5x8 yani40 bit ötelemek gerekiyor ilk 8 bit bir kerede verilse oluyor bu çipin setup bilgilerini içeren register.
G:\RF Design\RF DDS Equipment\M1KTA\M1KTA's QRP ham radio blog August 2009.htm
http://www.picproje.org/index.php/topic,16407.0.html
http://homepage3.nifty.com/jr1pwz/ham/hf-50mhz-dds-trx/ddsexp.htm
http://www.protonbasic.co.uk/showthread.php/67460-Using-AD9851-DDS-with-Proton.?s=34ea37e5b9aa29aaf3132df15ae91ade

gibi konuyu takip ediyorum belki bende birşeyler öğrenebilirim...

Hattuşa

#43
onurici usta;
söylediğiniz frekanslara ulaşabiliyor devre ama benim için 20mhz bile çok, yani ortalama 10 mhz e çıkabilsem bana yeter,
şuan için elde ettiğim 32 bitlik veriyi nasıl göndermem gerektiğini bilmiyorum,
http://www.protonbasic.co.uk/showthread.php/67460-Using-AD9851-DDS-with-Proton./page6
burada gabi bişeyler yazmış protonda ama anlamaya çalışıyorum, kafama takılan diğer konu ise AD9850 nin datasheetinde 32 biti tek tek gönderme işleminin yapılabileceğide yazıyor (en azından ben öyle anladım)
yani
for x= 0 to 40
döngüsü ile tek tek bitler gönderilebilir mi? onu merak ediyorum.

Hattuşa

s.a.
ete hocam sonunda çözdüm, sorun şurda bazen sorunun cevabını aramak için uzaklara gitmeye gerek yokmuş,
çözüme gelince;

dim frekans as dword
dim part1 as frekans.byte0
dim part2 as frekans.byte1
dim part3 as frekans.byte2
dim part4 as frekans.byte3

diyerek elimdeki 4 bytelik dword değerini bytelere ayırabiliyormuşuz.
artık geriye bu 4 değeri veri olarak ad9850 ye gödermek kalıyor, ilginiz alakanız için teşekkür ederim, sayenizde üzerimden büyük bir yük kalktı, bu arada yardımlarından dolayı mucit23 ustaya müteşekkilim...

Powered by EzPortal