اطلاعیه

Collapse
No announcement yet.

نمونه کدهایی برای XMEGA

Collapse
این موضوع برجسته شده است.
X
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    پاسخ : نمونه کدهایی برای XMEGA

    نوشته اصلی توسط aed
    سلام علیکم و تشکر از همه دوستان
    سوالی داشتم در رابطه با مقدار عدد اندازه گیری شده سنسور دمای داخلی توسط کارخانه در دمای 85 درجه سلسیوس. این مقدار در بخش calibration signiture قرار دارد. من توسط تابع (read_calibration_byte(PROD_SIGNATURES_START+TEMPS ENSE1_offset و
    (read_calibration_byte(PROD_SIGNATURES_START+TEMPS ENSE0_offset در کدویژن دو بایت این مقدار را میخوانم. البته آدرس TEMPSENSE0 و TEMPSENSE1 در کدویژن تعریف نشده بود که این مقدار را با توجه به کتابخانه adc_driver.h برابر با عدد 0x2E و 0x2F قرار دادم (و مطمئن نیستم که درست است یا خیر). در دیتاشیت هم چیزی در رابطه با این آدرس ها ندیدم. حال مشکل اینجاست که مقداری که خوانده می شود برای هر دو بایت کالیبراسیون برابر با 0xFF است که فکر می کنم اشتباه است. لطفا در این مورد توضیح دهید. خیلی ممنونم.
    برای خواندن مقادیر مورد نظر لازم است از طریق رجیستر Z و بخش NVM Controller عمل شود که در کتابخانه AVR1300 مبتنی IAR، تابعی به همین منظور نوشته شده است (شخصا آن را برای سنسور دما تست کرده ام و به خوبی عمل می کند). اگر در کدویژن هم تابع موجود عملکردی به همان شکل داشته باشد، باید به درستی جواب بدهد. مگر آنکه اشکال از بخش دیگری به غیر از محتوای تابع باشد.
    اوژن: به معنای افکننده و شکست دهنده است
    دانایی، توانایی است-Knowledge is POWER
    برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
    وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
    قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
    اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
    ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

    دیدگاه


      پاسخ : نمونه کدهایی برای XMEGA

      با تشکر از جناب طراح
      تابع موجود در کدویژن برای این کار به صورت زیر است:
      کد:
      (unsigned char read_calibration_byte(unsigned char index
      {
      ;unsigned char r
      ;NVM.CMD=NVM_CMD_READ_CALIB_ROW_gc
      ;(r=*((flash unsigned char*) index
      Clean up NVM command register//
      ;NVM.CMD=NVM_CMD_NO_OPERATION_gc
      ;return r
      }
      مقدار NVM_CMD_READ_CALIB_ROW_gc برابر با 0x02 و مقدار NVM_CMD_NO_OPERATION_gc برابر با 0x00 است.
      در صورت امکان منبعی معرفی کنید که آدرس های مقدارهای کالیبراسیون ADC در آن مشخص باشد. آیا مقدار 0x2E و 0x2F جهت خواندن مقدار دمای 85 درجه درست است یا خیر. خیلی ممنون.

      دیدگاه


        پاسخ : نمونه کدهایی برای XMEGA

        با سلام
        من با پروگرامر PDI MKII و نرم افزار avr studio در قسمت Advanced مقدارهای کالیبراسیون را خواندم که برای ADC کانال A و B و سنسور دما و افست و گین DAC برابر با 0xFF بود. آیا این مقدار درست است و اینکه آیا امکان دارد این چیپ ها توسط کارخانه کالیبره نشده باشند؟ با تشکر

        دیدگاه


          پاسخ : نمونه کدهایی برای XMEGA

          مقادیر مورد نظر شما در صفحه 47 از XMEGA A Manual موجود است. برنامه ای هم که قرار داده اید درست به نظر می رسد. اما اگر با MKII اعداد را خوانده اید و ناصحیح است (به شرط انتخاب شماره صحیح در تنظیمات پروگرامر)، احتمالا ناشی از خرابی میکروکنترلر در هنگام کار یا وارد کردن محصول معیوب توسط وارد کنندگان است. بهتر است از طریق MKII روی یک میکروکنترلر دیگر هم این آزمایش را انجام دهید.
          اوژن: به معنای افکننده و شکست دهنده است
          دانایی، توانایی است-Knowledge is POWER
          برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
          وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
          قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
          اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
          ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

          دیدگاه


            پاسخ : نمونه کدهایی برای XMEGA

            جناب طراح یه سوال دارم از خدمتتون
            من دنبال یه مرجع برای دستورات هستم
            همانند index بیسکام و کد ویژن
            مرجعی کلی که از طرف خود شرکت اراعه بشه تا حدودی یاد گرفت که از خود سایت اتمل استفاده کنم ولی خوب دستوراتی هستن که حتی نمیشه توی سایت پیدا کرد
            من بعد از کلی کلنجار کامپایلر atmel studio رو انتخاب کردم
            [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

            دیدگاه


              پاسخ : نمونه کدهایی برای XMEGA

              سلام به همه عزیزان
              تاپیک فوق العاده ای درست کردین، واقعا عالیه
              من تازه کار رو Xmega شروع کردم و با bascom کد می زنم
              می خوام چند تا پروژه انجام بدم : ارتباط سریال _ PWM _ ADC و تایمر
              اگر امکان داره اساتید که با bascom این پروژه ها را در Xmega راه اندازی کردند کمک کنند
              البته من یه بورد با atxmega128a1 طراحی کردم و دارم شروع می کنم
              ممنون از شما

              دیدگاه


                پاسخ : نمونه کدهایی برای XMEGA

                سلام
                یه مدت پیش همینجوری داشتم تو نت می گشتم که تو یه سایت المانی یه پروژه جالب با xmega پیدا کردم که اینجا می زارم.
                این پروژه یه wave پلیر با lcd رنگی معروف به n96 هست و جالب این که تو طراحی اون از cpld و sram خارجی هم استفاده شده.
                همه فایل های مورد نیاز برای ساخت هست به جز سورس،که اگه بود برای موارد اموزشی خیلی خوب می شد.

                http://s1.picofile.com/file/7563901933/xMega_wave_player.rar.html
                دکتر شریعتی:

                زنده بودن را به بیداری بگذرانیم که سالها به اجبار خواهیم خفت.

                دیدگاه


                  پاسخ : نمونه کدهایی برای XMEGA

                  سلام
                  یک اموزش مرجع قرار دهید با بیسیک(بسکام) که بتونیم کامل استفاده کنیم؟

                  ممنون
                  تشکر :biggrin:
                  [glow=red,2,300]برنامه های آموزشی تست شده برای NXP LPC1768 با توابع CMSIS[/glow]
                  http://www.eca.ir/forum2/index.php?topic=76623.0

                  دیدگاه


                    پاسخ : نمونه کدهایی برای XMEGA

                    مهندس بیسیک که چیز خاصی نداره و با استفاده از مثالها و help خودش می شه تا حدود زیادی پیش رفت.بقیه کوارد هم که عمومی هست تو انجمن موجوده.خودتون یه بسم الله بگین اگه مشکلی بود دوستان تو انجمن هستن.
                    دکتر شریعتی:

                    زنده بودن را به بیداری بگذرانیم که سالها به اجبار خواهیم خفت.

                    دیدگاه


                      پاسخ : نمونه کدهایی برای XMEGA

                      در پست شماره 29، کتابخانه ای را برای LCD کاراکتری قرار داده بودم که سایز LCD در آن لحاظ نشده بود و برای سایز 20x4 نوشته شده بود. در فایل ضمیمه، نسخه جدیدتر این کتابخانه که از 9 سایز مختلف پشتیبانی می شود، قرار داده شده است. در این کتابخانه یک تابع LCDCursorOffBlink هم اضافه شده که بدون روشن کردن cursor، باعث چشمک زدن کاراکتر می شود. همچنین برای نمایش نحوه تعریف کاراکترهای فارسی، اعداد 2354 بصورت فارسی تعریف و نمایش داده شده اند (سایز LCD مورد استفاده همان 20x4 است). دوستان اگر مشکل به خصوصی را در عملکرد این کتابخانه مشاهده کردند، به من اعلام کنند.
                      فایل های پیوست شده
                      اوژن: به معنای افکننده و شکست دهنده است
                      دانایی، توانایی است-Knowledge is POWER
                      برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                      وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                      قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                      اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                      ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                      دیدگاه


                        پاسخ : نمونه کدهایی برای XMEGA

                        در نمونه کد FAT_1 که در سایت http://knowledgeplus.ir قرار داده شده روال برنامه بصورتی است که ابتدا در کارت فایلی با فرمت txt ایجاد و با قابلیت نوشتن و خواندن باز میشود و محتویات buffer در آن نوشته شده و برای اطمینان از صحت عملیات نوشتن , فایل خوانده شده و buffer با مقادیر خوانده شده در LCD نمایش داده و در انتها فایل بسته و کارت UnMount میشود.

                        هنگام اجرای برنامه به این مشکل برخوردم که با عملیات خواندن در واقع هیچگونه رفرشی در buffer انجام نمیشود و همان محتویات ابتدایی buffer نمایش داده می شود.
                        صحت این موضوع با تفکیک buffer به 2 بافر جداگانه ( Wbfr عملیات نوشتن ,Rbfr عملیات خواندن ) اثبات و مشخص شد بافر Rbfr پر نمیشود.

                        کد بگونه ای اصلاح شد که با یکبار بستن ( پس از عملیات نوشتن ) و باز کردن مجدد ، Rbfr پر شده و عملیات خواندن بدرستی انجام میشود .

                        اگر راه حل اصولی تری به ذهن دوستان رسید اعلام کنند.

                        دیدگاه


                          پاسخ : نمونه کدهایی برای XMEGA

                          در نمونه کد مورد نظر بعد از نوشتن buffer، (به دلیل باز بودن فایل) اشاره گر فایل در ابتدای آن نیست و به همین دلیل است که با خواندن مقادیر بعدی، محتویات ابتدای فایل خوانده نمی شود. در این شرایط بجای بستن و باز کردن مجدد فایل می توان با دستور زیر، ابتدا اشاره گر را به اول فایل آورد و سپس عمل خواندن را انجام داد:

                          کد:
                          res=f_lseek(&file,0);


                          ضمنا کتابخانه مذکور نیاز به اصلاحاتی دارد که بزودی آن را انجام خواهم داد.
                          اوژن: به معنای افکننده و شکست دهنده است
                          دانایی، توانایی است-Knowledge is POWER
                          برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                          وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                          قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                          اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                          ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                          دیدگاه


                            پاسخ : نمونه کدهایی برای XMEGA

                            برای اندازه گیری دما با استفاده از سنسور smt160 و سنسورهای مشابه با استفاده از مد Capture برنامه ای رو نوشتم ولی متاسفانه نتیجه مطلوب حاصل نشده.پروژه مورد نظر رو اینجا قرار می دم ،ایا تنظیمات تایمر یا روال محاسبه dutycycle درسته؟

                            http://uplod.ir/xzvuivjja6so/TIMER.rar.htm
                            دکتر شریعتی:

                            زنده بودن را به بیداری بگذرانیم که سالها به اجبار خواهیم خفت.

                            دیدگاه


                              پاسخ : نمونه کدهایی برای XMEGA

                              روشی را که بکار برده اید، بدون توجه به قابلیت های Frequency Capture و Pulse width Capture در XMEGA و دارای خطا (هم به لحاظ روش و هم به لحاظ مواردی مثل محاسبات در روتین وقفه) است. برای راهنمایی دقیق تر در ابتدا توضیح دهید که عملکرد خروجی برنامه چگونه است.
                              اوژن: به معنای افکننده و شکست دهنده است
                              دانایی، توانایی است-Knowledge is POWER
                              برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                              وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                              قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                              اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                              ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                              دیدگاه


                                پاسخ : نمونه کدهایی برای XMEGA

                                با سلام
                                محاسبات داخل روتین وقفه دقیقا مثال خود atmel می باشد.و خروجی برنامه باید مقدار دمای اندازه گیری شده توسط smt160 طبق فرمول زیر باشد.

                                کد:
                                  frequency of the output signal of the sensor lies between 1 and 4 kHz.
                                  
                                  D.C. = 0.320+0.00470*t   D.C.= duty cycle
                                                t = Temperature in °C
                                  or              
                                  duty cycle (d.c.)= 0.31924 + (0.00472 * Temperature(oC))

                                ولی در کد نوشته شده خروجی ثابت بوده و اصلا با ورودی سنسور دما یا در حقیقت پالس pwm اعمال شده به پایه مورد نظر ،تغییر نمی کند.
                                مثال زیر راه اندازی این سنسور با سری avr و با استفاده از وقفه خارجی است که عملکرد ان دقیقا درست بوده و مثال نوشته شده برای xmega تقریبا از روی این سورس است و هدف اندازه گیری مقدار dutycycle و دما با واحد capture و اشنائی با عملکرد این واحد و راه اندازی سنسور های مشابه می باشد.
                                سورس مورد نظر با کامپایلر IAR نوشته شده و شبیه سازی شده با نرم افزار پروتئوس است.

                                http://uplod.ir/cp1wjkjbfuu2/SMT160_IAR_FINAL_VERSION.rar.htm
                                دکتر شریعتی:

                                زنده بودن را به بیداری بگذرانیم که سالها به اجبار خواهیم خفت.

                                دیدگاه

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