اطلاعیه

Collapse
No announcement yet.

تنظیم رجیسترهای ADC با استفاده از رابط اینترفیس ATmega128

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

    تنظیم رجیسترهای ADC با استفاده از رابط اینترفیس ATmega128

    با سلام،
    من یک ADC دارم که چند تا رجیستر برای تنظیم گین و افست دارد، توی دیتا شیتش گفته که برای تنظیم این رجیسترها باید از طریق رابط سریال مقادیر این رجیسترها تنظیم شوند.
    از نظر سخت افزاری فکر میکنم باید پایه های MOSI و MISO و SS و SCK میکرو رو به پایه های اینترفیس ADC متصل کنم، سپس توی کدویژن SS رو صفر کنم و دیتا رو به اسلیو یعنی ADC انتقال بدهم، (البته SPI رو هم بایستی فعال کنم) تا اینجا به نظرتون کارم درسته؟ مشکل اینجائه که این چند تا رجیستر که برای تنظیم گین و افست ADC هستند برای codevision تعریف شده نیستند که، چطوری به کدویژن بفهمونم که این رجیسترهای ADC هستند که باید این مقادیر رو بگیرن؟
    خواهشا هر کس اطلاعات و تجربه ای در این زمینه یا موارد مشابه داره اینجا مطرح کنه...ممنونممم

    #2
    پاسخ : تنظیم رجیسترهای ADC با استفاده از رابط اینترفیس ATmega128

    مشکلتون کجاست؟
    ss رو زمین می کنید (معمولا پایه ss اکتیو لو هستش) ، بعد دیتای مورد نظرتون (آدرس یا خود دیتا) رو با spi برای ADC می فرستید. اسم ADC رو بگید.
    ---------
    .
    .
    ...........

    دیدگاه


      #3
      پاسخ : تنظیم رجیسترهای ADC با استفاده از رابط اینترفیس ATmega128

      با تشکر
      مشکل همین فرستادن دیتاست،
      نام مبدل AD80066 است که دارای چندین رجیستر داخلی است که این رجیسترها بایستی مقدار دهی بشوند تا مبدل بتواند عمل کند، مثلا رجیستر PGA باید 0x50 شود، توی کدویژن هیچ لایبرری برای تعریف این مبدل وجود ندارد و مشکل شناساندن آن است، میشه لطفا واضحتر توضیح بدید؟
      کسی تجربه ای در زمینه ارتباط با پروتکل سریال و مقدار دهی رجیستر دارد؟

      دیدگاه


        #4
        پاسخ : تنظیم رجیسترهای ADC با استفاده از رابط اینترفیس ATmega128

        کدویژن که نداره و نباید هم داشته باشه، چون قرار نیست برای همه قطعات کتابخونه داشته باشه.
        مثلا رجیستر PGA یک آدرسی داره با شماره 0x02 و مقدارش هم باید باشه 0x50 . خب شما اول آدرسو می فرستی و بعدش هم دیتا رو . یعنی :
        [code=c]spi(0x02);delay;spi(0x50);[/code]
        اون تاخیر هم ناچیزه و اگر با سرعت بیشتر از 2MHz برای spi دارید کار می کنید، باید لحاظ بشه.
        ---------
        .
        .
        ...........

        دیدگاه


          #5
          پاسخ : تنظیم رجیسترهای ADC با استفاده از رابط اینترفیس ATmega128

          ممنونم از پاسختون، متوجه شدمم دقیقا که چی میگین :agree:..فقط یه مشکلی دارم که میشه لطف کنین و بررسی کنین، منظورتون از آدرس صفحه 14 دیتاشیت AD80066 هستش که با نام INTERNAL REGISTER MAP مشخص شده؟ توی دیتاشیت فقط همانجا اومده از آدرس صحبت کرده...ممنون میشم اگه یه نگاه بندازین....واقعا ممنونم از پاسختون

          دیدگاه


            #6
            پاسخ : تنظیم رجیسترهای ADC با استفاده از رابط اینترفیس ATmega128

            خواهش می کنم.
            بله. همون صفحه. صفحات بعدش هم در مورد رجیسترا و بیت هاش حرف زده.
            عکس پایین رو هم از دیتاشیت برداشتم. شما دو تا 8 بیتی در نظر بگیر. اون بیت R\W هم برای نشون دادن اینه که میخوای رجیستر رو بخونی یا بنویسی.
            ---------
            .
            .
            ...........

            دیدگاه


              #7
              پاسخ : تنظیم رجیسترهای ADC با استفاده از رابط اینترفیس ATmega128

              ممنونم، تشکر..خیلی کمک کردین...

              دیدگاه


                #8
                پاسخ : تنظیم رجیسترهای ADC با استفاده از رابط اینترفیس ATmega128

                نوشته اصلی توسط ajapyy
                کدویژن که نداره و نباید هم داشته باشه، چون قرار نیست برای همه قطعات کتابخونه داشته باشه.
                مثلا رجیستر PGA یک آدرسی داره با شماره 0x02 و مقدارش هم باید باشه 0x50 . خب شما اول آدرسو می فرستی و بعدش هم دیتا رو . یعنی :
                [code=c]spi(0x02);delay;spi(0x50);[/code]
                اون تاخیر هم ناچیزه و اگر با سرعت بیشتر از 2MHz برای spi دارید کار می کنید، باید لحاظ بشه.

                سلام
                ADC من 16 بیتی هستش، یعنی رجیسترهایی که باید کانفیگ بشن 16 بیتی اند ولی spdr توی میکرو 8 بیتیه....من چه جوری باید این ارتباط را برقرار کنم؟واضحتر بخوام بگم اینطوریه که توی همون شکل بالا SDATA 16 بیتی هستش، ولی SPDR من 8 بیتیه یعنی من اگه اول آدرس رو صورت 8 بیت و بعد دیتارو بلافاصله بفرستم ADC متوجه میشه ؟

                دیدگاه


                  #9
                  پاسخ : تنظیم رجیسترهای ADC با استفاده از رابط اینترفیس ATmega128

                  نوشته اصلی توسط Soheilas

                  سلام
                  ADC من 16 بیتی هستش، یعنی رجیسترهایی که باید کانفیگ بشن 16 بیتی اند ولی spdr توی میکرو 8 بیتیه....من چه جوری باید این ارتباط را برقرار کنم؟واضحتر بخوام بگم اینطوریه که توی همون شکل بالا SDATA 16 بیتی هستش، ولی SPDR من 8 بیتیه یعنی من اگه اول آدرس رو صورت 8 بیت و بعد دیتارو بلافاصله بفرستم ADC متوجه میشه ؟
                  بله همینطوره.
                  ---------
                  .
                  .
                  ...........

                  دیدگاه


                    #10
                    پاسخ : تنظیم رجیسترهای ADC با استفاده از رابط اینترفیس ATmega128

                    تشکر

                    دیدگاه


                      #11
                      پاسخ : تنظیم رجیسترهای ADC با استفاده از رابط اینترفیس ATmega128

                      من رجیسترهامو با اینترفیس سریال تنظیم کردم....کدش به صورت زیر است:
                      کد:
                         PORTB.0=0 ;        //Congiguration Bit
                         spi(0x00); 
                         //delay_us(1);
                         spi(0x0E);
                         PORTB.0=1 ;   
                         
                          PORTB.0=0 ;        //Mux bit
                          spi(0x10); 
                          //delay_us(1);
                          spi(0x08);
                          PORTB.0=1 ;  
                          
                          PORTB.0=0 ;        //Gain A bit
                         spi(0x20); 
                         // delay_us(1);
                         spi(0x3f);
                         PORTB.0=1 ;
                      ولی الان مشکلی که دارم اینه که به وردین مبدل انالوگ یه دیجیتال هر چی مقادیر متفاوت در ورودی میدمم...خروجی ثابته....برای این مبدل باید پالس تولید کنیم و همزمان با پالس خروجی رو بگیریمم..کسی میدونه این مشکل واسه چیه؟!!!!

                      دیدگاه


                        #12
                        پاسخ : تنظیم رجیسترهای ADC با استفاده از رابط اینترفیس ATmega128

                        من فکر میکنم مشکل از ارتباط spi ام است، برای تنظیم ADC بایت 4 تا 16 بیت ارسال کنم با ارتباط spi، من کد رو به صورت زیر تغییر دادم...ولی باز هم جواب نداد...کسی میدونه چه جوری میتونم 16 بیت را از طریق spi 8 بیتی میکرو بفرستم و چه جوری مطمئن شم که رجیسترهام درست ست شده؟
                        کد:
                            PORTB.0=0 ; 
                           Conf=0x000E;
                           spi((Conf & 0xFF) >> 8);    // Output the MSB first
                           //delay_us(1);
                           spi(Conf & 0xFF);      // Followed by the LSB
                           PORTB.0=1 ;   
                           
                            PORTB.0=0 ; 
                            Mux=0x1008;       //Mux bit
                            spi( (Mux & 0xFF) >> 8 ); 
                            //delay_us(1);
                            spi(Mux & 0xFF);
                            PORTB.0=1 ;  
                            
                            PORTB.0=0 ;        //Gain A bit
                           spi(0x20); 
                           // delay_us(1);
                           spi(0x3f);
                           PORTB.0=1 ; 
                        
                            PORTB.0=0 ;        //offset A bit
                           spi(0x60); 
                           // delay_us(1);
                           spi(0x3f);
                           PORTB.0=1 ;

                        دیدگاه


                          #13
                          پاسخ : تنظیم رجیسترهای ADC با استفاده از رابط اینترفیس ATmega128

                          [code=c]spi((Conf & 0xFF) >> 8); // Output the MSB first[/code]
                          این اشتباهه.
                          این درسته :
                          [code=c]spi((Conf & 0xFF00) >> 8); // Output the MSB first[/code]
                          ---------
                          .
                          .
                          ...........

                          دیدگاه


                            #14
                            پاسخ : تنظیم رجیسترهای ADC با استفاده از رابط اینترفیس ATmega128

                            تشکر
                            از کجا میتوانم متوجه بشم رجیسترهام درست تنظیم شده اند؟

                            دیدگاه


                              #15
                              پاسخ : تنظیم رجیسترهای ADC با استفاده از رابط اینترفیس ATmega128

                              نوشته اصلی توسط Soheilas
                              تشکر
                              از کجا میتوانم متوجه بشم رجیسترهام درست تنظیم شده اند؟
                              1- قبل و بعد از نوشتن بر روی رجیسترها اونارو بخونید.
                              2- عملکرد قطعه رو قبل و بعد از نوشتن بر روی رجیسترها مقایسه کنید.
                              ---------
                              .
                              .
                              ...........

                              دیدگاه

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