اطلاعیه

Collapse
No announcement yet.

َAD9833 (مولد فرکانس با فرمان از SPI)حرف گوش نمی کنه؟!!

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    َAD9833 (مولد فرکانس با فرمان از SPI)حرف گوش نمی کنه؟!!

    سلام
    از تجربیات دوستانی که در پست های مختلف در مورد AD9833 مولد فرکانس با فرمان پذیری SPI صحبت کرده بودند استفاده کردم و یه
    برد براش ساختم و برنامه براش نوشتم.
    مسئله سخت افزار و برنامه هست یا نه نمی دونم اما .مدار من همونیه که دیگران هم بستن و نقشه اش توی دیتا شیت این آی سی هست.
    برنامه هم اینه:
    کد:
        res=0x2100;
        write_command_AD9833(res);  // bit13 == 1 and reset 
        // write_command_AD9833(0x0028); // square 
    
        res=0x4000|0x3126; 
        write_command_AD9833(res); 
        lcd_gotoxy(0,0);
        sprintf(lcd_buffer,"%x",res); 
        lcd_puts(lcd_buffer);
        res=0x4000|8;
        write_command_AD9833(res);   // 0x00083126 FREQ0 (for 50 KHZ) 
        
        // res=0x8000|0x258; 
        // write_command_AD9833(res); 
        // res=0x8000|0x47;
        // write_command_AD9833(res);   // 0x000010C7 FREQ1  
            
        write_command_AD9833(0xC000);  // phase register0 
        // write_command_AD9833(0xE000);  // phase register1 
        
        
        write_command_AD9833(0x2000);  // start generate 
        
     while (1);
    ولی نمی دونم چرا اون فرکانسی که من براش تعیین میکنم تولید نمی کنه!
    کسی تجربه در این مورد داره؟
    اینم تابع write_command_AD9833

    کد:
    void write_command_AD9833(unsigned int command){ 
    unsigned int result=0;
    unsigned char LSB=0,MSB=0;
    LSB=command;
    MSB=command>>8;
     PORTB.4=0; // SS_BAR = Low 
     spi(LSB);
     spi(MSB);
     PORTB.4=1; // SS_BAR = High 
     delay_us(30);
     //lcd_gotoxy(0,0);
     //sprintf(lcd_buffer,"%x,%x",MSB,LSB); 
    //lcd_puts(lcd_buffer);
    
    
    }
    حتی شکل موج سیگنال های کلاک و دیتا و SS بار رو هم تو اسکپ برسی کردم مشکلی نداشتند.
    در جهان رازهایی هست که جز به بهای ریختن خون فاش نمی شود . شهید مرتضی آوینی

    #2
    پاسخ : َAD9833 (مولد فرکانس با فرمان از SPI)حرف گوش نمی کنه؟!!

    شاید برای شما هم پیش اومده باشه که دیگه نمی دونی چه کار باید بکنی که نکردی ؟!!!
    الان توی اون مرحله هستم.....
    در جهان رازهایی هست که جز به بهای ریختن خون فاش نمی شود . شهید مرتضی آوینی

    دیدگاه


      #3
      پاسخ : َAD9833 (مولد فرکانس با فرمان از SPI)حرف گوش نمی کنه؟!!

      این نقشه برد مدار چاپی هست که مونتاژش کردم و ادامه داستان
      توی دیتا شیت این IC در بخش ملاحظات برد مدار چاچی نوشته اگر در مدارتون از عناصر دیگه ای هم استفاده می کنید(مثل میکرو یا LCD)
      DGND و AGND رو به صورت ستاره ای به هم وصل کنید.
      این کار باعٍث پایداری می شه درست.
      اما این مداری که من بستم با روشن خاموش شدنش فرکانس های دیگه ای تولید میکنه که من بهش نگفتم.
      در جهان رازهایی هست که جز به بهای ریختن خون فاش نمی شود . شهید مرتضی آوینی

      دیدگاه


        #4
        پاسخ : َAD9833 (مولد فرکانس با فرمان از SPI)حرف گوش نمی کنه؟!!

        این نقشه
        در جهان رازهایی هست که جز به بهای ریختن خون فاش نمی شود . شهید مرتضی آوینی

        دیدگاه


          #5
          پاسخ : َAD9833 (مولد فرکانس با فرمان از SPI)حرف گوش نمی کنه؟!!

          اینم نقشه شماتیک


          دوستان کسی نیست ؟
          در جهان رازهایی هست که جز به بهای ریختن خون فاش نمی شود . شهید مرتضی آوینی

          دیدگاه


            #6
            پاسخ : َAD9833 (مولد فرکانس با فرمان از SPI)حرف گوش نمی کنه؟!!

            درود

            spi(LSB);
            spi(MSB);

            اول msb بعد lsb
            مـن هیچ ندانم که مرا آن که سرشت
            از اهل بهشت کرد یا دوزخ زشت
            جامی و بتی و بربطی بر لب کشت
            این هر سه مرا نقد و تو را نسیه بهشت

            دیدگاه


              #7
              پاسخ : َAD9833 (مولد فرکانس با فرمان از SPI)حرف گوش نمی کنه؟!!

              ولی اینجا گفته اول LSB
              Command Sequence Explained
              0x2100—Control Register
              •
              DB13 is set to 1. This allows a complete word to be loaded into a frequency register in two consecutive writes. The first write contains 14 LSBs. The second write contains 14 MSBs.
              •
              RESET bit DB8 is set to 1. This resets internal registers to 0, which corresponds to an analog output of midscale.
              0x50C7—Frequency Register 0 LSB
              •
              DB15 and DB14 are set to 0 and 1, respectively, which is the Frequency Register 0 address.
              •
              The remaining 14 bits are the 14 LSBs of data: 0x10C7 = 01 0000 1100 0111
              0x4000—Frequency Register 0 MSB
              •
              DB15 and DB14 are set to 0 and 1, respectively, which is the Frequency Register 0 address.
              •
              The remaining 14 bits are the 14 MSBs of data and are all 0s in this case.
              0xC000—Phase Register 0
              •
              DB15, DB14, and DB13 are set to 110, with DB12 set to don’t care (X), respectively, which is the address for Phase Register 0.
              •
              The remaining 12 bits are the data bits and are all 0s in this case.
              0x2000—Exit Reset
              •
              A signal appears at the output of the DAC seven MCLK cycles after RESET is set to 0.
              در جهان رازهایی هست که جز به بهای ریختن خون فاش نمی شود . شهید مرتضی آوینی

              دیدگاه


                #8
                پاسخ : َAD9833 (مولد فرکانس با فرمان از SPI)حرف گوش نمی کنه؟!!

                درود.با توجه به اینکه رجیستر SPI تو AVR دارای 8 بیته،اولا تابع زیر برای ارسال 16 بیت صحیحه؟(2 تا 8 میفرسته)

                کد:
                void spi_data_16_MSB (unsigned char data){
                	 int a;
                	 unsigned char MSB;
                	 unsigned char LSB;
                	 unsigned char mem;
                mem=data;	 
                	 MSB=(data>>8);
                	 LSB=mem;
                	 
                	a=spi_data(MSB);
                	 a=spi_data(LSB);
                	 	 
                 }
                چون از AD9833 چیزی به Master نمیاد دیگه اطلاعات SPDR رو Return نمی کنم.اون Spi_data هم برای ارسال داده 8 بیتی :

                کد:
                 unsigned int spi_data (unsigned char data){
                	
                		SPDR = data;            //Load data into the buffer
                		while(!(SPSR)&&(1<<SPIF));     //Wait until transmission complete
                		return(SPDR);           //Return received data	 
                 }
                من مطابق زیر مدارو بستم



                با توجه به شکل زیر که Control Register هست :



                من دیتا های زیر رو ارسال میکنم :

                کد:
                #include <avr/io.h>
                #include <util/delay.h>
                #include "spi.h"
                
                
                #define reset 0b0010000101101000
                #define x1 0b0101100010010011
                #define x2 0b0100000000010000
                #define x3 0b1100000000000000
                #define x4 0b0000000001101000
                
                int main(){
                	spi_master();
                	spi_presc_normal(128);
                	DDRB=0xff;
                PORTB&=~(1<<PB4);
                spi_data_16_MSB(reset);
                PORTB|=(1<<PB4);
                _delay_ms(20);
                
                PORTB&=~(1<<PB4);
                spi_data_16_MSB(x1);
                PORTB|=(1<<PB4);
                _delay_ms(20);
                
                PORTB&=~(1<<PB4);
                spi_data_16_MSB(x2);
                PORTB|=(1<<PB4);
                _delay_ms(20);
                
                PORTB&=~(1<<PB4);
                spi_data_16_MSB(x3);
                PORTB|=(1<<PB4);
                _delay_ms(20);
                
                PORTB&=~(1<<PB4);
                spi_data_16_MSB(x4);
                PORTB|=(1<<PB4);
                _delay_ms(20);
                
                
                
                
                
                
                
                
                }
                کد reset باعث میشه IC بره تو مد ریست.جفت LSB و MSB پشت سر هم نوشته بشه.از رجیستر Freq0 استفاده بشه.کلاک داخلی فعال.DAC در حالت Sleep.خروجی موج مربعی و فرکانسش تقسیم بر دو نشه.

                x1 , x2 برای تعیین فرکانس(اصلا به این مرحله نمیریسه!!!!!)
                x3 برای تعیین فاز که صفره.
                x4 هم برای خارج کردن ایسی از مد reset.

                جوابی که میگیرم نویزه!!!!!!!!!

                تنظیمات موج مثلثی رو میفرستم موج سینوسی میگیرم.سینوسی میفرستم مربعی میگیرم.فرکانس ها هم که کلا ولش کن!!!!!

                ایراد کارم کجاست؟

                دیدگاه


                  #9
                  پاسخ : َAD9833 (مولد فرکانس با فرمان از SPI)حرف گوش نمی کنه؟!!

                  دوستان کسی میتونه کمکی کنه؟

                  دیدگاه


                    #10
                    پاسخ : َAD9833 (مولد فرکانس با فرمان از SPI)حرف گوش نمی کنه؟!!

                    LiZaRd.BoY یک درد مشترک
                    بیا یه ایمیل تحدید کننده با لحنی جدی با رگه هایی ار نرمش قهرمانانه به analog devices بزنیم ببینیم توی آیسی فسقلی ترانزیستور ریختن یا شیشه خورده!!!!
                    من داره اشکم در میاد !!
                    یادمه labview رو که کار میکردم اون اوایل دم به دقیقه به NI ایمیل میزدم.انگار چند نفر کلا مشغول جواب دادن به من بودن.کلا خوب ساپورت میکردن.
                    این را ه حل جواب میده.یه نمونه کد با میکرو 8 بیتی گیربیاریم خوبه.
                    در جهان رازهایی هست که جز به بهای ریختن خون فاش نمی شود . شهید مرتضی آوینی

                    دیدگاه


                      #11
                      پاسخ : َAD9833 (مولد فرکانس با فرمان از SPI)حرف گوش نمی کنه؟!!

                      اگه به نتیجه رسیدم یه آموزش کامل ازش میذارم تو سایت.لا مذهب هیچ منبعی نیست

                      دیدگاه


                        #12
                        پاسخ : َAD9833 (مولد فرکانس با فرمان از SPI)حرف گوش نمی کنه؟!!

                        نوشته اصلی توسط LiZaRd.BoY
                        اگه به نتیجه رسیدم یه آموزش کامل ازش میذارم تو سایت.لا مذهب هیچ منبعی نیست
                        سلام
                        کار کردن باش کاری نداره
                        دیتاشیتشو بخونی 4 خط کد بزنی راه میفته
                        من با Xmega32 راش انداختم
                        درایور شبکه و nRF24L01
                        کاتالوگ محصولات
                        کنترلر CNC شش محوره برای پرینتر 3D و Pick n Place
                        شبیه ساز تک تیرانداز و سیبل دیجیتال با پردازش تصویر
                        فروش اسیلوسکوپ GWinstek GOS-630FC

                        دیدگاه


                          #13
                          پاسخ : َAD9833 (مولد فرکانس با فرمان از SPI)حرف گوش نمی کنه؟!!

                          نوشته اصلی توسط بسطام بیرامی
                          سلام
                          کار کردن باش کاری نداره
                          دیتاشیتشو بخونی 4 خط کد بزنی راه میفته
                          من با Xmega32 راش انداختم
                          دیتا شیت رو خونده اما جواب نداده مدارش ، شما که جواب گرفتی محبت کن بیا سورس کد و شماتیک مدارتو بذار بقیه استفاده کنن :job:

                          دیدگاه


                            #14
                            پاسخ : َAD9833 (مولد فرکانس با فرمان از SPI)حرف گوش نمی کنه؟!!

                            سلام دوستان
                            بعد از 7 سال چه جوابی تونست بگیرید !؟

                            دیدگاه

                            لطفا صبر کنید...
                            X