AD9833 sinüs sinyal üreteci.

Başlatan onurinci, 02 Kasım 2025, 21:11:41

ete

İşin doğrusu Clk seçiminide yapmak elbette. Sen ekliyorsan eksiği tamamlamış oluyorsun.
Açıkçası ben Analog girişli programlarda FRC kullanmayı pek sevmiyorum. Sebebi data sheetlerde bu seçimle alakalı açıklamadır.
"When the device frequency is greater than 1 MHz, the A/D RC clock source is only recommended if the conversion will be performed during SLEEP"
Açıklaması şöyle , Cihaz OSC frekansı 1 Mhz den büyük ise A/D RC Clk seçimi yada kaynağı yalnızca işlemci uykuda iken bir çevrim yapılacak ise tavsiye edilir diyor. Bu ifade hemen hemen her işlemci data sheet'inde yazıyor.
Bu nedenle bölünmüş OSC frekansını her zaman tercih ederim.

Programlarda deklarasyon kısmında bir şey seçip sonra Register seçimleri ile onu değiştirmek de yanlış. Derleme esnasında böyle bir durrum nasıl işleniyor bilmiyorum ama herhalde son komut ne ise ona uyuluyordur. Ama Deklerasyon baştan değerlendiriliyor ise boşu boşuna birçok lüzumsuz işlem yapılıyor olsa gerek. Bu nedenle seçimlerimde Deklarasyonu bozacak seçimler yapmam. Yada deklarasyonu değiştiririm.
Genelde bu tür ayarlamalar için Pic_Multicalc.exe programını kullanırım ve o program hiç RC osilatör seçmez.

Her neyse sen derlemeleri yapıp ardından da son programların denemelerini yaparsan ve sonuçları bize söylersen bizde neyin doğru neyin yanlış olduğunu daha iyi anlayacağız.

Ete

Pepe

'****************************************************************
'*  Name    : AD9833_Pepe.BAS                                   *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2025 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 10.11.2025                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
	'****************************************************************
	'*  AD9833 DDS Generator - PIC12F675                            *
	'*  Frecuencia base: 455.000 Hz ±1.500 Hz según ADIN(1)         *
	'****************************************************************
	 
	Device = 12F675
	Config FOSC_INTRCIO, WDTE_OFF, PWRTE_OFF, MCLRE_OFF, BOREN_OFF, CP_OFF, CPD_OFF
	Declare Xtal = 4
	 
	Declare Create_Coff On
	Declare Optimiser_Level 3
	Declare Watchdog Off
	
	Declare Adin_Res = 10
	Declare Adin_Tad = FRC
	Declare Adin_Stime = 20
	 
	Symbol ADFM = ADCON0.7
	Symbol DAT  = GPIO.2
	Symbol CLK  = GPIO.4
	Symbol ENA  = GPIO.5
	Symbol tx   = GPIO.0
	 
	Dim ADCValue   As Word
	Dim Frecuencia As Dword
	Dim frec       As Dword
	Dim FreqLSB    As Word
	Dim FreqMSB    As Word
	Dim adcval     As Word
	Dim temp       As SWord 

	TRISIO = %00000011      ' GP0 y GP1 entradas
	GPIO = $20
	 
	ADFM = 1
	ANSEL = %00000010       ' AN1 habilitado
	 
	DelayMS 100
	
    adcval = 1024 
	
    '--- Inicialización AD9833 ---
	
    ENA = 0
	DelayUS 10
	SHOut DAT, CLK, MsbFirst_H, [$0100\16]  ' Reset
	ENA = 1
	DelayMS 200
	 
	'--- Bucle principal ---
	Do
	    If tx = 1 Then
	        ADCValue = ADIn 1
	    Else
	        ADCValue = 511                     
	    EndIf                  
	    
	    If ADCValue <> adcval Then

	         adcval = ADCValue
	     
	         temp = ADCValue - 512   
             
             If temp < 0 Then Inc temp 
	        
             Frecuencia =  temp * 1500 / 511       ' +/-  1500
	         
             Frecuencia= 455000 + Frecuencia
	       
	  '--- Conversión a palabra de frecuencia para AD9833 ---

	     frec = (Frecuencia * 268.435456) / 25  ' Factor 2^28 / MCLK (25 MHz) 
	     
         ENA = 0
	     
	        FreqLSB=(frec & $3FFF) | $4000
	        FreqMSB=((frec>>14) & $3FFF) | $4000   
	    
	        SHOut DAT, CLK, MsbFirst_H, [$2000\16, FreqLSB\16, FreqMSB\16, $C000\16, $2000\16]
	 
	     ENA = 1
	        
	        DelayMS 50
	     EndIf 
	Loop

onurinci

Caro Pepe, todos os 3 arquivos Hex que você enviou ontem estão funcionando sem problemas, não notei nenhuma diferença.

AD9833_Pepe,AD9833_Pepe+ ,AD9833_Pepe.

Potenciômetro à esquerda: 453,005 Hz. Potenciômetro à direita: 456,505 Hz. Potenciômetro central. ADC 2,5 Volts: 454,993. Ao pressionar o botão, o sinal é constante em 455,005 Hz.


Do outro lado do mundo, agradeço-te pelo apoio que me tens dado... com amor.




onurinci

Hocam selam günlük raporu ekledim..

ete

Onur,
İşini görecek bir veya bir kaç program var elinde. Birini kullanırsın artık.
Bu işi burada keselim diyorum ne dersin.?

Varsa başka bir şey devam edelim.

Ete

onurinci

Hocam haklısınız. emekleriniz ve ilginiz için çok teşekkür ederim..sevgiler..

Powered by EzPortal
▲