اطلاعیه

Collapse
No announcement yet.

یکی بگه اصلا چرا XMEGA ؟

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

    پاسخ : یکی بگه اصلا چرا XMEGA ؟

    شما هر چی بیشتر بدونین به نفعتونه.

    دیدگاه


      پاسخ : پاسخ : پاسخ : پاسخ : یکی بگه اصلا چرا XMEGA ؟

      نوشته اصلی توسط رضا سپاس یار
      من کمی سرچ کردم و متوجه شدم که اکثر میکروکنترلرها حداکثر یک واحد QEI برای راه اندازی انکودر دارن. حالا سوالم اینه که حداکثر چند انکودر رو میشه با XMEGA دیکود کرد؟ (به صورت سخت افزاری و بدون دخالت CPU و پایه های وقفه).
      از حداکثر 3 عدد encoder بصورت سخت افزاری پشتیبانی می کند.

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

      دیدگاه


        پاسخ : پاسخ : یکی بگه اصلا چرا XMEGA ؟

        نوشته اصلی توسط طراح
        ... چنانچه دوستان از موجود بودن این خانواده ها در بازار داخل و به خصوص بردهای آموزشی بر مبنای این شماره ها اطلاع حاصل کردند، لطفا از طریق پیغام خصوصی به من اطلاع دهند.
        شرکت هایی مثل کویر الکترونیک برد STM32F3DISCOVERY که از خانواده نزدیک به STM32F334xx هستش رو وارد کرده که می تونید ببینید. با STM32F334xx مقداری فاصله داره ولی شاید دوست داشته باشید یه نگاهی بهش بندازید(و شاید بخوایید بخرید). این دومین فروشگاهی هستش که دیدم STM32F3 رو داره می فروشه و ارزونم می فروشه. به قیمتش هم نگاه کنید. محل فروش این فروشگاه خود تهران هم هستش. آدرسش اینجا هستش: http://www.electronic724.com/contact-us
        ولی توی این فروشگاه هیچی به اندازه این برد لانچ پد تگزاس اینسترومنت چشم منو به خودش ندوخت!!!!
        تقریبا مجاب شدم که یکیشو بخرم. منظورم این برده:


        LaunchPad Evaluation Kit EK-TM4C123GXL



        واقعا انتظار دیدن همچین چیزی توی ایران رو نداشتم!! باید اعتراف کنم که شوکه شدم! یعنی واقعا یه میکروی ARM با هسته Cortex-M4 توی ایرانه! یه میکروی با پردازنده تیوا(Tiva)!!!! :-O
        اطلاعات پردازنده اینجاست:


        Texas Instruments TM4C123GH6PM

        اونایی که فیلتر-شکن ندارن می تونن تقریبا توی این صفحه همه اطلاعاتشو ببینن:

        Texas Instruments TM4C123GH6PM

        جناب طراح،
        خوب میکرو و برد بالایی رو نگاه کنید! خصوصا اطلاعات میکرو رو. نظرتون چیه؟ خصوصا واسه اون PWM که می خواستین.

        دیدگاه


          پاسخ : یکی بگه اصلا چرا XMEGA ؟

          سلام دوستان
          من میدونم که xmega دارای event system کامل و خوبی هست. آیا میکرو های ARM مخصوسا سری های STM داری این خصوصبت هست یا نه؟

          دیدگاه


            پاسخ : یکی بگه اصلا چرا XMEGA ؟

            سلام

            چند نکته:

            1- نکته ای از میکرو باستانی: 8051
            در دنیای طراحان آی سی، جاییکه نیاز به داشتن یک واحد پردازشی و کنترلر در کنار سایر امکانات باشد
            و قیمت ارزان مورد نظر باشد هسته پردازشی 8051 یک گزینه رایج است( سرعتهایی تا حد 600 مگاهرتز ذکر شده است )
            ( چون IP آن رایگان بوده و بارها استفاده شده و عملکرد آن احراز و اثبات شده )

            2-
            سوال این تاپیک، برای کسانیکه وارد دنیای تولید انبوه شده اند، به گونه دیگری تفسیر می شود.
            برای هر محصول تولید انبوه که نیاز به میکروکنترلر دارد، موارد ذیل مهمند:

            - قیمت
            - وضعیت کیفی محصول
            - مدت منحنی آموزش
            - هزینه کامپایلر و IDE
            - هزینه پروگرام و ....
            - سهولت دسترسی به توزیع کننده + مدت تاخیر تحویل
            - چشم انداز توسعه آینده و ارتقاپذیری طرح
            - سهولت دسترسی به افراد جایگزین برای تیم توسعه
            - ....

            بررسی سوالهای فوق می تواند تیم طراحی محصول را به نتایج ذیل برساند:

            - استفاده از ATTINY با 8 پایه و قیمت 350 تومانی : راه حل است
            - استفاده از PIC12Fxx با 8 پایه و قیمت 450 تومانی : راه حل است
            - استفاده از AT89C1051 با 24 پایه و قیمت 500 تومانی : راه حل است
            - .....
            - استفاده از ATXMEGAxxxx .... راه حل است
            -......
            -استفاده از ARM .... راه حل است
            -
            (توجه: قیمتها برای "تیراژ زیاد" است )

            بنابراین ، مطالعات و بررسی های طرح ، نوع میکرو را تعیین خواهد نمود.

            3-
            کفه ترازو به مرور به نفع میکروهای 32 بیتی و 16 بیتی، سنگینتر می شود.
            بنا براین، مهندسین طراح علاوه بر آموزش 8 بیتی ها، ضروری است 16 و 32 بیتی های رایج را نیز فرا بگیرند.

            4-
            برای کارهای موردی و تک و پروژه ای ( یا کم تیراژ )
            تحلیل به نحو دیگری است که دوستان در پستهای قبلی اشاره نموده اند.

            5-
            اساسا" آمار عمده میکروکنترلرهای مصرفی در جهان، سایر برندها و عناوین هستند و در ایران مسیر متفاوت از دنیاست...


            درود
            گشتی در لاله زار
            http://www.eca.ir/forum2/index.php?topic=76138.0

            http://www.eca.ir/forum2/index.php?topic=76141

            دیدگاه


              پاسخ : یکی بگه اصلا چرا XMEGA ؟

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

              البته بحثی که اول تاپیک مطرح شد در مورد ضرورت یادگیری XMEGA با بودن میکروهای ARM است و استفاده از میکروهای 8051 و AVR در جای مناسبش بر هیچکس پوشیده نیست.
              بنده خودم هم با میکروهای ATtiny، ATMega، STM32F103 و LPC17xx و 8051 و حتی بورد های ARM لینوکسی و WinCE کار کردم. و هر کدوم جای خودشون رو دارن.

              اما برداشتی که از صحبت اساتید میشه اینه که اول پروژه مشخص بشه، (Who، Why، What، When، Where و حتی How) و بعد حتی اگر تجربه ای روی میکروی انتخاب شده از قدیم نبود، در اون زمان یادگیریش رو انجام داد.
              که البته منطقی تر هم به نظر میرسه.

              اما نتیجه بعدی که بنده بهش رسیدم، برتری میکروهای موجود نسبت به هم دیگه در یکسری امکانات خاص (بیشتر برتری XMega نسبت به STM32 یا LPC) هست که ممکنه در حالت عادی نیازی نباشه. (برای پروژه های خاص)
              و اینکه یکی از مزیت های Xmega نسبت به میکروهای ARM نزدیکی بیشتر اون به AVR هست که سادگی یادگیری رو به ارمغان میاره.

              پس شخصاً ترجیح میدم برای یادگیری از میکروهای قوی مطرح در صنعت شروع کنم (مثلاً STM32F103) و بیشتر سعی در آموزش مفاهیم پایه ARM و Cortex دارم و علاوه بر یادگیری رجیسترهای پایه STM32 به اموزش پایه ای و استفاده از بعضی کتابخونه هایی مثل Cmsis بپردازم تا در صورت نیاز یک پروژه اگه نیاز باشه از LPC Cortex استفاده کنم بتونم از تجربه قبلیم استفاده کنم. حالا اگر پروژه ای مطرح شد که تنها پاسخگوی اون XMega باشه اون موقع با توجه به زمینه AVRی که دارم قسمت های مورد نیاز اون رو یاد میگیرم.

              البته یه صحبتی هم هست که بیشتر ضعف دوستان که توی انجمن دیده میشه که همش از غیر صنعتی بودن یه میکرو یا درست اجرا نشدن برنامه هاشون شاکی هستنو گردن AVR میندازن یا ... نشأت گرفته از مشکلات برنامه نویسی اصولیه!
              به نظر من وقتی یکی به برنامه نویسی C مسلط باشه و الگوریتم پروژه اش رو بدونه، یادگیری امکانات جدید یک میکرو و استفاده از رجیسترهای اون راحت تر میشه!

              با تشکر

              «پشتکار» «پشتکار» «پشتکار»

              دیدگاه


                پاسخ : پاسخ : یکی بگه اصلا چرا XMEGA ؟

                نوشته اصلی توسط Rohalamin
                جناب طراح، خوب میکرو و برد بالایی رو نگاه کنید! خصوصا اطلاعات میکرو رو. نظرتون چیه؟ خصوصا واسه اون PWM که می خواستین.
                من جزئیات شماره tm4c123gh6pm را بصورت کلی بررسی کردم که از نظر خروجی های pwm با بررسی اجمالی datasheet به نظر می رسد پاسخگوی نیاز صورت مسئله Dead time باشد. اما بطور کلی به لحاظ قدرت peripheral ها در مقایسه با خانواده های مشابه در سطح متوسطی است و اگر بحث پردازشی و Cortex-M4 بودن آن مطرح نباشد، با توجه به قیمت بالای آن احتمالا خانواده های مناسب تر و ارجح تری برای انتخاب یافت شوند.
                اوژن: به معنای افکننده و شکست دهنده است
                دانایی، توانایی است-Knowledge is POWER
                برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                دیدگاه


                  پاسخ : یکی بگه اصلا چرا XMEGA ؟

                  Advanced motion control, featuring: eight Pulse Width Modulation (PWM) generator blocks, each with one 16-bit counter, two PWM comparators, a PWM signal generator, a dead-band generator, and an interrupt/ADC-trigger selector; two PWM fault inputs to promote low-latency shutdown; two Quadrature Encoder Interface (QEI) modules, with position integrator to track encoder position and velocity capture using built-in timer

                  این 2 تا قسمت که هایلایت کردم برام خیلی جالبه اینکه یه تایمر برای سرعت انکودر گذاشته و ورودی فالت برای pwm

                  -------
                  پ .ن :
                  اوه اوه قیمتش 8.5 دلار
                  از جمله ی رفتگان این راه دراز
                  باز آمده ای کو که به ما گوید راز
                  هان بر سر این دو راهه از روی نیاز
                  چیزی نگذاری که نمی آیی باز

                  دیدگاه


                    پاسخ : یکی بگه اصلا چرا XMEGA ؟

                    دوستان سلام بحث های جالبی مطرح شد
                    یک سوال عجیب شاید مربوط به موضوع !!
                    میکرو کنترلر ها دارای عمر خاصی هستن ؟؟
                    (صد در صد باید باشن !!!)
                    سوال من اینه که میکرو کنترلر ها چند سال عمر میکنن ؟
                    و ایا این عمر رابطه ای با فرکانس کاریشون داره ؟
                    و اینکه بعد از پایاین عمر میکرو چه بلایی سرش میاد ؟( از لحاظ مدار داخلی چه اتفاقی براش می افته که خراب میشه از لحاظ عقلی کمی غیر قابل باور است قطعه ای که مکانیکی نباشد خراب شود !!!)
                    علت بحث در این باره مطرح شدن عمر کنتور های برق دیجیتال بود که گفته شده طبق استاندارد باید 50 سال عمر داشته باشن oo:
                    و میکر کنترلر های معمولی پاسخ گوی 50 سال نیستند !!!
                    [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

                    دیدگاه


                      پاسخ : پاسخ : یکی بگه اصلا چرا XMEGA ؟

                      میبینم که مهندس gani هم توی بحث شرکت کرده. عالیه! Yeeeeaaah!
                      مهندس دلم برات تنگ شده بود. خوشحالم که بعد از یه مدت طولانی میبینمت. یاد دوستان قدیمی و با محبت و همچنین با سواد بخیر.


                      نوشته اصلی توسط طراح
                      من جزئیات شماره tm4c123gh6pm را بصورت کلی بررسی کردم که از نظر خروجی های pwm با بررسی اجمالی datasheet به نظر می رسد پاسخگوی نیاز صورت مسئله Dead time باشد. اما بطور کلی به لحاظ قدرت peripheral ها در مقایسه با خانواده های مشابه در سطح متوسطی است و اگر بحث پردازشی و Cortex-M4 بودن آن مطرح نباشد، با توجه به قیمت بالای آن احتمالا خانواده های مناسب تر و ارجح تری برای انتخاب یافت شوند.
                      نوشته اصلی توسط meerkat
                      Advanced motion control, featuring: eight Pulse Width Modulation (PWM) generator blocks, each with one 16-bit counter, two PWM comparators, a PWM signal generator, a dead-band generator, and an interrupt/ADC-trigger selector; two PWM fault inputs to promote low-latency shutdown; two Quadrature Encoder Interface (QEI) modules, with position integrator to track encoder position and velocity capture using built-in timer

                      این 2 تا قسمت که هایلایت کردم برام خیلی جالبه اینکه یه تایمر برای سرعت انکودر گذاشته و ورودی فالت برای pwm

                      -------
                      پ .ن :
                      اوه اوه قیمتش 8.5 دلار
                      بله؛ در بیشتر موراد محصولات تگزاس گرون هستن که البته به نظر علت های خاص داره. انگار به همین دلیل هم هستش که بیشتر افراد تمایل دارن با محصولات شرکتهایی مثل ST کار کنن.

                      دیدگاه


                        پاسخ : یکی بگه اصلا چرا XMEGA ؟

                        نوشته اصلی توسط حامد رحیمی
                        دوستان سلام بحث های جالبی مطرح شد
                        یک سوال عجیب شاید مربوط به موضوع !!
                        میکرو کنترلر ها دارای عمر خاصی هستن ؟؟
                        (صد در صد باید باشن !!!)
                        سوال من اینه که میکرو کنترلر ها چند سال عمر میکنن ؟
                        و ایا این عمر رابطه ای با فرکانس کاریشون داره ؟
                        و اینکه بعد از پایاین عمر میکرو چه بلایی سرش میاد ؟( از لحاظ مدار داخلی چه اتفاقی براش می افته که خراب میشه از لحاظ عقلی کمی غیر قابل باور است قطعه ای که مکانیکی نباشد خراب شود !!!)
                        علت بحث در این باره مطرح شدن عمر کنتور های برق دیجیتال بود که گفته شده طبق استاندارد باید 50 سال عمر داشته باشن oo:
                        و میکر کنترلر های معمولی پاسخ گوی 50 سال نیستند !!!
                        سوال جالبی هست ، فکر کنم عمر میکرو ها در درجه اول به ماندگاری اطلاعات در حافظه فلش اون بر می گرده. تو دیتاشیت با data retention مشخص شده که اون هم به شرایط دمایی بستگی داره.
                        مثلا برای stm32f103 جدول زیر از دیتاشیت برداشته شده.

                        البته باز در عمل باید دید. یعنی باید الان مدارو بسازید 30 سال بعد برید ببینید سالمه یا نه
                        شوخی کردم. اما خود این شرکت ها هم فکر نکنم اطلاعاتی که رو دیتاشیت میدن را کاملا آزمایش کرده باشند. بلکه احتمالا با آزمایش های کوتاه مدت تونستند این مقادیر را تخمین بزنند مثلا stm32f103 فکر نکنم زمان عرضه اش از 10 سال تجاوز کند.
                        با این حال شاید بتوان از روی بررسی دستگاه های قدیمی به تخمین مطمئن تری از عمر میکرو دست پیدا کرد.

                        پ.ن: چند سال پیش تابلو روانی را توی یک اتوبوس دیدم که ساعت اون از 24 هم رد می شد.

                        دیدگاه


                          پاسخ : یکی بگه اصلا چرا XMEGA ؟

                          نوشته اصلی توسط DesignerEng
                          سوال جالبی هست ، فکر کنم عمر میکرو ها در درجه اول به ماندگاری اطلاعات در حافظه فلش اون بر می گرده. تو دیتاشیت با data retention مشخص شده که اون هم به شرایط دمایی بستگی داره.
                          مثلا برای stm32f103 جدول زیر از دیتاشیت برداشته شده.

                          البته باز در عمل باید دید. یعنی باید الان مدارو بسازید 30 سال بعد برید ببینید سالمه یا نه
                          شوخی کردم. اما خود این شرکت ها هم فکر نکنم اطلاعاتی که رو دیتاشیت میدن را کاملا آزمایش کرده باشند. بلکه احتمالا با آزمایش های کوتاه مدت تونستند این مقادیر را تخمین بزنند مثلا stm32f103 فکر نکنم زمان عرضه اش از 10 سال تجاوز کند.
                          با این حال شاید بتوان از روی بررسی دستگاه های قدیمی به تخمین مطمئن تری از عمر میکرو دست پیدا کرد.

                          پ.ن: چند سال پیش تابلو روانی را توی یک اتوبوس دیدم که ساعت اون از 24 هم رد می شد.
                          خیلی از مقادیر که توی دیتاشیت های میکروها می ذارن یا بصورت تجربی هستش یا تخمینی.
                          خیلی از موراد توی یه مدار هست که فکر نکنم 50 سال عمر کنه(اصلا PCB می پوسه). تازه این 50 سال توی چه شرایط محیط؟ بعنوان مثال LNB های ماهواره های خونگی که توی آفتاب هستن در عرض حدود 10 سال فکر کنم دست بهشون بزنی مثل آرد پودر میشه. چند مدت پیش یکیشو در آوردم و وقتی دست به قطعات روی بردش می زدم راحت می ریخت. ولی در کل 50 سال واسه هر مدار الکتریکی فکر کنم خیلییییییی زیاد باشه.

                          دیدگاه


                            پاسخ : یکی بگه اصلا چرا XMEGA ؟

                            سلام
                            تو این تاپیک اطلاعات گران قیمتی وجود داره که شاید چندان مرتبط با عنوان تاپیک نباشه و به همین علت شاید خیلی ها بهش دسترسی پیدا نکن
                            از طرفی وجود یک تاپیک جامع برای بررسی تولید خدمات و محصولات ، نحوه بررسی هزینه های تولید ، محاسبات نسبت ارزش به کارایی ، نحوه پشتیبانی و خدمات پس از فروش و محاسبه هزینه های آن ، محاسبه سود و در نظر گرفتن سایر موارد مرتبط با تولید برای یک کارگاه یا شرکت کوچک موضوعیه که بینهایت میتونه برای افرادی که قصد کسب در آمد از این حوزه رو دارن و به نوعی تازه قدم تو این راه گذاشتن مفید باشه.
                            اطلاعات علمی و قنی رو شاید بشه از طریق دیتا شیت ها و اپلیکیشن نوت ها یا حتی فوروم های خارجی کسب کرد ولی یک چنین اطلاعاتی برای خیلی از ماها خارج از دسترسه
                            خواهشا اگر موافق باشید تاپیکی در این زمینه در محل مناسبش ایجاد بشه و اساتید و اهل فن که تجربه کار تولیدی یا کسب درآمد از این حوزه رو دارن اطلاعات و تجربیات خودشون رو اونجا در اشتراک بگذارن
                            ممنون
                            زندگي آن چه که زيسته ايم نيست ، بلکه آن چيزي است که از گذشته به خاطر داريم ...گابريل گارسيا مارکز

                            دیدگاه


                              پاسخ : یکی بگه اصلا چرا XMEGA ؟

                              دوستان نمیدونم قراره ته این بحث به کجا برسه. ولی این را براتون بگم که من چند جا برای استخدام که رفتم هیچ کدام XMEGA را قبول نکردن و گفتن باید با ARM کار کنید. عده ای هم که فقط و فقط روی STM ها تاکید داشتن. ما هم موندیم بی کار تا ARM یاد بگیریم. :angry:
                              من بعید بدونم با این بازاری که STM داره برای خودش میسازه در آینده هم قیمتش پایین باشه. :NO: :NO: :NO:

                              دیدگاه


                                پاسخ : یکی بگه اصلا چرا XMEGA ؟

                                مقایسه چند کد :
                                تقسیم علامت دار long در AVR :
                                i=-10
                                j=2
                                d=i/j
                                کد:
                                   28      i=-10;
                                  \  00000000  EF06        LDI   R16, 246
                                  \  00000002  EF1F        LDI   R17, 255
                                  \  00000004  EF2F        LDI   R18, 255
                                  \  00000006  EF3F        LDI   R19, 255
                                  \  00000008  ....        LDI   R30, LOW(i)
                                  \  0000000A  ....        LDI   R31, (i) >> 8
                                  \  0000000C  8300        ST   Z, R16
                                  \  0000000E  8311        STD   Z+1, R17
                                  \  00000010  8322        STD   Z+2, R18
                                  \  00000012  8333        STD   Z+3, R19
                                   29      j=2;
                                  \  00000014  E002        LDI   R16, 2
                                  \  00000016  E010        LDI   R17, 0
                                  \  00000018  E020        LDI   R18, 0
                                  \  0000001A  E030        LDI   R19, 0
                                  \  0000001C  ....        LDI   R30, LOW(j)
                                  \  0000001E  ....        LDI   R31, (j) >> 8
                                  \  00000020  8300        ST   Z, R16
                                  \  00000022  8311        STD   Z+1, R17
                                  \  00000024  8322        STD   Z+2, R18
                                  \  00000026  8333        STD   Z+3, R19
                                   30      d=i/j;
                                  \  00000028  ....        LDI   R30, LOW(j)
                                  \  0000002A  ....        LDI   R31, (j) >> 8
                                  \  0000002C  8140        LD   R20, Z
                                  \  0000002E  8151        LDD   R21, Z+1
                                  \  00000030  8162        LDD   R22, Z+2
                                  \  00000032  8173        LDD   R23, Z+3
                                  \  00000034  ....        LDI   R30, LOW(i)
                                  \  00000036  ....        LDI   R31, (i) >> 8
                                  \  00000038  8100        LD   R16, Z
                                  \  0000003A  8111        LDD   R17, Z+1
                                  \  0000003C  8122        LDD   R18, Z+2
                                  \  0000003E  8133        LDD   R19, Z+3
                                  \  00000040  ........      CALL  ?SL_DIVMOD_L03
                                  \  00000044  ....        LDI   R30, LOW(d)
                                  \  00000046  ....        LDI   R31, (d) >> 8
                                  \  00000048  8300        ST   Z, R16
                                  \  0000004A  8311        STD   Z+1, R17
                                  \  0000004C  8322        STD   Z+2, R18
                                  \  0000004E  8333        STD   Z+3, R19
                                کد بالا 661 سیکل میگیرد

                                تقسیم علامت دار long در cortex M4:
                                i=-10
                                j=2
                                d=i/j

                                کد:
                                 20      i=-10;
                                  \           main: (+1)
                                  \  00000000  0xF07F 0x0009   MVNS   R0,#+9
                                  \  00000004  0x....       LDR.N  R1,??DataTable0
                                  \  00000006  0x6008       STR   R0,[R1, #+0]
                                   21      j=2;
                                  \  00000008  0x2002       MOVS   R0,#+2
                                  \  0000000A  0x....       LDR.N  R1,??DataTable0_1
                                  \  0000000C  0x6008       STR   R0,[R1, #+0]
                                   22      d=i/j;
                                  \  0000000E  0x....       LDR.N  R0,??DataTable0
                                  \  00000010  0x6800       LDR   R0,[R0, #+0]
                                  \  00000012  0x....       LDR.N  R1,??DataTable0_1
                                  \  00000014  0x6809       LDR   R1,[R1, #+0]
                                  \  00000016  0xFB90 0xF0F1   SDIV   R0,R0,R1
                                  \  0000001A  0x....       LDR.N  R1,??DataTable0_2
                                  \  0000001C  0x6008       STR   R0,[R1, #+0]
                                26 سیکل
                                i=-2
                                j=2
                                d=i*j
                                ضرب علامت دارlong در avr :
                                کد:
                                     i=-10;
                                  \  00000000  EF06        LDI   R16, 246
                                  \  00000002  EF1F        LDI   R17, 255
                                  \  00000004  EF2F        LDI   R18, 255
                                  \  00000006  EF3F        LDI   R19, 255
                                  \  00000008  ....        LDI   R30, LOW(i)
                                  \  0000000A  ....        LDI   R31, (i) >> 8
                                  \  0000000C  8300        ST   Z, R16
                                  \  0000000E  8311        STD   Z+1, R17
                                  \  00000010  8322        STD   Z+2, R18
                                  \  00000012  8333        STD   Z+3, R19
                                   29      j=2;
                                  \  00000014  E002        LDI   R16, 2
                                  \  00000016  E010        LDI   R17, 0
                                  \  00000018  E020        LDI   R18, 0
                                  \  0000001A  E030        LDI   R19, 0
                                  \  0000001C  ....        LDI   R30, LOW(j)
                                  \  0000001E  ....        LDI   R31, (j) >> 8
                                  \  00000020  8300        ST   Z, R16
                                  \  00000022  8311        STD   Z+1, R17
                                  \  00000024  8322        STD   Z+2, R18
                                  \  00000026  8333        STD   Z+3, R19
                                   30      d=i*j;
                                  \  00000028  ....        LDI   R30, LOW(j)
                                  \  0000002A  ....        LDI   R31, (j) >> 8
                                  \  0000002C  8100        LD   R16, Z
                                  \  0000002E  8111        LDD   R17, Z+1
                                  \  00000030  8122        LDD   R18, Z+2
                                  \  00000032  8133        LDD   R19, Z+3
                                  \  00000034  ....        LDI   R30, LOW(i)
                                  \  00000036  ....        LDI   R31, (i) >> 8
                                  \  00000038  8140        LD   R20, Z
                                  \  0000003A  8151        LDD   R21, Z+1
                                  \  0000003C  8162        LDD   R22, Z+2
                                  \  0000003E  8173        LDD   R23, Z+3
                                  \  00000040  ........      CALL  ?L_EC_MUL_L03
                                  \  00000044  ....        LDI   R30, LOW(d)
                                  \  00000046  ....        LDI   R31, (d) >> 8
                                  \  00000048  8300        ST   Z, R16
                                  \  0000004A  8311        STD   Z+1, R17
                                  \  0000004C  8322        STD   Z+2, R18
                                  \  0000004E  8333        STD   Z+3, R19
                                107 سیکل

                                ضرب علامت دارlong در cortex M4:
                                i=-2
                                j=2
                                d=i*j
                                کد:
                                20      i=-10;
                                  \           main: (+1)
                                  \  00000000  0xF07F 0x0009   MVNS   R0,#+9
                                  \  00000004  0x....       LDR.N  R1,??DataTable0
                                  \  00000006  0x6008       STR   R0,[R1, #+0]
                                   21      j=2;
                                  \  00000008  0x2002       MOVS   R0,#+2
                                  \  0000000A  0x....       LDR.N  R1,??DataTable0_1
                                  \  0000000C  0x6008       STR   R0,[R1, #+0]
                                   22      d=i*j;
                                  \  0000000E  0x....       LDR.N  R0,??DataTable0
                                  \  00000010  0x6800       LDR   R0,[R0, #+0]
                                  \  00000012  0x....       LDR.N  R1,??DataTable0_1
                                  \  00000014  0x6809       LDR   R1,[R1, #+0]
                                  \  00000016  0x4348       MULS   R0,R1,R0
                                  \  00000018  0x....       LDR.N  R1,??DataTable0_2
                                  \  0000001A  0x6008       STR   R0,[R1, #+0]
                                20 سیکل

                                جمع long در AVR :
                                i=-2
                                j=8
                                d=i+j
                                کد:
                                 20      i=-10;
                                  \           main: (+1)
                                  \  00000000  0xF07F 0x0009   MVNS   R0,#+9
                                  \  00000004  0x....       LDR.N  R1,??DataTable0
                                  \  00000006  0x6008       STR   R0,[R1, #+0]
                                   21      j=2;
                                  \  00000008  0x2002       MOVS   R0,#+2
                                  \  0000000A  0x....       LDR.N  R1,??DataTable0_1
                                  \  0000000C  0x6008       STR   R0,[R1, #+0]
                                   22      d=i*j;
                                  \  0000000E  0x....       LDR.N  R0,??DataTable0
                                  \  00000010  0x6800       LDR   R0,[R0, #+0]
                                  \  00000012  0x....       LDR.N  R1,??DataTable0_1
                                  \  00000014  0x6809       LDR   R1,[R1, #+0]
                                  \  00000016  0x4348       MULS   R0,R1,R0
                                  \  00000018  0x....       LDR.N  R1,??DataTable0_2
                                  \  0000001A  0x6008       STR   R0,[R1, #+0]
                                62 سیکل

                                جمع long در cortex M4:

                                i=-2
                                j=8
                                d=i+j

                                کد:
                                 \           main: (+1)
                                  \  00000000  0xF07F 0x0009   MVNS   R0,#+9
                                  \  00000004  0x....       LDR.N  R1,??DataTable0
                                  \  00000006  0x6008       STR   R0,[R1, #+0]
                                   21      j=2;
                                  \  00000008  0x2002       MOVS   R0,#+2
                                  \  0000000A  0x....       LDR.N  R1,??DataTable0_1
                                  \  0000000C  0x6008       STR   R0,[R1, #+0]
                                   22      d=i+j;
                                  \  0000000E  0x....       LDR.N  R0,??DataTable0
                                  \  00000010  0x6800       LDR   R0,[R0, #+0]
                                  \  00000012  0x....       LDR.N  R1,??DataTable0_1
                                  \  00000014  0x6809       LDR   R1,[R1, #+0]
                                  \  00000016  0x1808       ADDS   R0,R1,R0
                                  \  00000018  0x....       LDR.N  R1,??DataTable0_2
                                  \  0000001A  0x6008       STR   R0,[R1, #+0]
                                20 سیکل

                                تقسیم علامت دار int در avr :
                                i=-10
                                j=2
                                d=i/j
                                کد:
                                   i=-10;
                                  \  00000000  EF06        LDI   R16, 246
                                  \  00000002  EF1F        LDI   R17, 255
                                  \  00000004  9300....      STS   i, R16
                                  \  00000008  9310....      STS   (i + 1), R17
                                   29      j=2;
                                  \  0000000C  E002        LDI   R16, 2
                                  \  0000000E  E010        LDI   R17, 0
                                  \  00000010  9300....      STS   j, R16
                                  \  00000014  9310....      STS   (j + 1), R17
                                   30      d=i/j;
                                  \  00000018  9140....      LDS   R20, j
                                  \  0000001C  9150....      LDS   R21, (j + 1)
                                  \  00000020  9100....      LDS   R16, i
                                  \  00000024  9110....      LDS   R17, (i + 1)
                                  \  00000028  ........      CALL  ?SS_DIVMOD_L02
                                  \  0000002C  9300....      STS   d, R16
                                  \  00000030  9310....      STS   (d + 1), R17
                                259 سیکل

                                تقسیم علامت دار int در Cortex M4:

                                i=-10
                                j=2
                                d=i/j

                                کد:
                                [code] \           main: (+1)
                                  \  00000000  0xF07F 0x0009   MVNS   R0,#+9
                                  \  00000004  0x....       LDR.N  R1,??DataTable0
                                  \  00000006  0x6008       STR   R0,[R1, #+0]
                                   21      j=2;
                                  \  00000008  0x2002       MOVS   R0,#+2
                                  \  0000000A  0x....       LDR.N  R1,??DataTable0_1
                                  \  0000000C  0x6008       STR   R0,[R1, #+0]
                                   22      d=i/j;
                                  \  0000000E  0x....       LDR.N  R0,??DataTable0
                                  \  00000010  0x6800       LDR   R0,[R0, #+0]
                                  \  00000012  0x....       LDR.N  R1,??DataTable0_1
                                  \  00000014  0x6809       LDR   R1,[R1, #+0]
                                  \  00000016  0xFB90 0xF0F1   SDIV   R0,R0,R1
                                  \  0000001A  0x....       LDR.N  R1,??DataTable0_2
                                  \  0000001C  0x6008       STR   R0,[R1, #+0]
                                [/code]

                                26 سیکل


                                بحث float که باوجود fpu قابل قیاس نیست برای بیت هم Read Modify Write به Bit Banding تغییر کرده
                                از جمله ی رفتگان این راه دراز
                                باز آمده ای کو که به ما گوید راز
                                هان بر سر این دو راهه از روی نیاز
                                چیزی نگذاری که نمی آیی باز

                                دیدگاه

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