اطلاعیه

Collapse
No announcement yet.

کامپایلر IAR

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

    #16
    پاسخ : کامپایلر IAR

    راستش میتونم بگم جز بخش اولش بقیه اش را هیچی نفهمیدم فکر کنم از ضعف من در برنامه نویسی ++c باشه :cry2:
    برای مثال میشود bp_ را با ذکر مثال و بررسی تاثیر عملکرد آن در رجیستر مورد مثال توضیح دهید؟
    اگر میشود در مورد بقیه هم به این شکل عمل نمایید
    با تشکر

    اضافه شده در تاریخ :
    راستی فراموش کردم بگم اگه میشه توضیح بدید چطور میشود زیر برنامه وقفه را در IAR ایجاد کرد؟
    اگر منبعی در مورد کار با IAR دارید در اختیار ما نیز قرار دهید
    با تشکر
    [hr]
    نکته آموزشی:وقتی پروژه خود را کامپایل کردید اگر فایل hex میخواستید میتوانید در بالای قسمت لیست پروژه جایی که نوشته شده Debug گزینه Release را انتخاب کرده و پروژه را Make کنید
    در فولدر پروژه داخل پوشه Release پوشه ای به نام Exe هست که فایل hex در آنجاست اگر برنامه شما فقط مربوط به حافظه Flash باشد فایل هم نام پروژه را برای پروگرام کردن استفاده کنید و اگر غیر از این بود ...
    برای بعد این رو هنوز نمیدونم

    دیدگاه


      #17
      پاسخ : کامپایلر IAR

      به دو تعریف زیر که از header های IAR کپی شده به عنوان مثال توجه کنید:
      #define PIN7_bm 0x80
      #define PIN7_bp 7

      حال فرض کنید قرار باشد بیت شماره 7 از PORTA یک شود. به سه روش می توان این دستور را نوشت. روش اول:
      PORTA_OUTSET=0X80;

      روش سنتی در برنامه نویسی C این است که عدد 1 به اندازه ارزش مکانی بیت مورد تظر به چپ شیفت داده شود:
      PORTA_OUTSET=(1<<PIN7_bp);

      اما در IAR برای اینکه این شیفت به چپ نوشته نشود، تعاریفی با پسوند bm_ انجام شده که ارزش مکانی عدد در آن قرار نمی گیرد و بلکه مقداری متناظر با همان عدد شیفت داده شده در آن قرار می گیرد. به همین دلیل فقط کافی است، خود عبارت را قرار دهیم و شیفت به چپ لازم نیست:
      PORTA_OUTSET=PIN7_bm;

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

      دیدگاه


        #18
        پاسخ : کامپایلر IAR

        هر کاری میکنم با نوشتن این مثال ها کامپایلر ارور میده میگه تعریف نشده است!
        ;PORTA_OUTSET=PIN7_bm
        در صورتی که من توی هدرش پیدا کردم
        #define PIN7_bp 7

        دیدگاه


          #19
          پاسخ : کامپایلر IAR

          نوشته اصلی توسط شهریار رجب زاده
          هر کاری میکنم با نوشتن این مثال ها کامپایلر ارور میده میگه تعریف نشده است!
          در مسیر Project/Options/General Options/System یک گزینه Enable bit definitions in I/O include files وجود دارد که آنرا باید فعال کنید.
          اوژن: به معنای افکننده و شکست دهنده است
          دانایی، توانایی است-Knowledge is POWER
          برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
          وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
          قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
          اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
          ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

          دیدگاه


            #20
            پاسخ : کامپایلر IAR

            چرا آموزش ها قطع شد؟
            من الآن امتحان دارم نمیتونم زیاد سر بزنم
            یه سوال
            برنامه زیر دقیقا چجوری باید عمل کند؟
            کد:
            #include <ioavr.h>
            #include <intrinsics.h>
            int main()
            {
            PORTC_DIR=0xff;
            PORTC_PIN0CTRL=0x28;
            PORTC_PIN1CTRL=0x28;
            __delay_cycles(2000000);
            while(1){
            PORTC_OUT=0x01;
            __delay_cycles(2000000);
            PORTC_OUT=0x02;
            __delay_cycles(2000000);
            PORTC_OUT=0x03;
            __delay_cycles(2000000);
            PORTC_OUT=0x04;
            __delay_cycles(2000000);
            PORTC_OUT=0;
            __delay_cycles(2000000);
            }
            }
            من اون دو پایه رو به هم وصل کردم به سر منفی LED نور LED به سه شکل تغییر میکنه ولی اگر LED رو برعکس کنم و سر مثبت رو بزنم به این دو پایه نوری نمیبینم اول کار با یه پایه نور میدم یه بار هم روی دو پایه جواب داد ولی حالا هیچی

            دیدگاه


              #21
              پاسخ : کامپایلر IAR

              چرا آموزش ها قطع شد؟
              زیرا مخاطب علاقه مند و پیگیری که نتیجه پیشرفت خود را در اختیار دیگران بگذارد، یافت نشد.

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

              دیدگاه


                #22
                پاسخ : کامپایلر IAR

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

                دو تا سوال دارم
                طبق دیتاشیت توی رجیستر PIN CTRL حالات مختلفی داریم 4 تا از این ها عبارتند از:
                wired-or
                wired-and
                wired-or with optional pull down
                wired-and with optional pull up
                1- آیا با کمک دو حالت اول میتوان از هر پین خروجی tri-state بدست آورد؟
                2- در بخش مشخصات ویژه XMEGA در پاسخ به من گفته بودید:
                خروجی های Wired OR و Wierd AND در صورت لزوم بصورت خارجی به هم متصل می شوند و مطابق برداشت شما به هم وصل نیستند. تحمیل وضعیت خروجی هم به این معناست که اگر چند خروجی Wired AND به هم وصل باشند و فقط یکی از آنها Low باشد، خروجی نهایی Low خواهد بود و بقیه خروجی های High تاثیری نخواهند داشت. در مورد کاربرد های این نوع خروجی ها هم در پست جداگانه ای توضیح خواهم داد.
                فکر می کنم حالت pull up و pull down با چنین توضیحاتی مطابقت داشته باشد
                با تشکر

                دیدگاه


                  #23
                  پاسخ : کامپایلر IAR

                  وضعیت tri-state معمولا در وضعیت ورودی تعریف می شود. اما برای خروجی wired-AND هنگامی که high باشد و خروجی wired-OR هنگامی که low باشد، می توان حالت مشابهی را در نظر گرفت، به شرط آنکه pullup و pulldown وجود نداشته باشد.
                  اوژن: به معنای افکننده و شکست دهنده است
                  دانایی، توانایی است-Knowledge is POWER
                  برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                  وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                  قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                  اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                  ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                  دیدگاه


                    #24
                    پاسخ : کامپایلر IAR

                    میشه نحوه استفاده از Slew rate و اینتراپت رو توضیح بدید اینکه در کجا استفاده میشه خلاصه به طور کامل توضیح بدید
                    با تشکر

                    دیدگاه


                      #25
                      پاسخ : کامپایلر IAR

                      نوشته اصلی توسط شهریار رجب زاده
                      میشه نحوه استفاده از Slew rate و اینتراپت رو توضیح بدید اینکه در کجا استفاده میشه خلاصه به طور کامل توضیح بدید
                      درباره کاربرد محدودیت Slew Rate در تاپیک "برخی مشخصات ویژه XMEGA" توضیح داده شد(http://www.eca.ir/forum2/index.php?t...8239#msg238239).
                      از نظر کد نویسی هم باید بیت شماره 7 از رجیستر PINnCTRL یک شود. مثال:

                      PORTA_PIN2CTRL|=0X80;


                      یا بصورت صحیح تر:

                      PORTA_PIN2CTRL|=PORT_SRLEN_bm;


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

                      دیدگاه


                        #26
                        پاسخ : کامپایلر IAR

                        سوال من اینست که چطور برای اینتراپت xmega کد نویسی کنیم و اینکه آیا هر پورت دو اینتراپت جدا از هم دارند و اینکه برای مشخصات بعضی پایه ها نوشته شده اینتراپت سنکرون و آسنکرون نسبت به چیه؟
                        و اینکه اگر slew rate رو فعال کنیم چه تاثیری روی پایه میزاره یعنی مشکلی در رابطه با 0 و 1 کردن پایه ها پیش نمیاد؟اگر کارش محدود کردن سرعت باشه که نرم افزاری هم میشه انجام داد

                        دیدگاه


                          #27
                          پاسخ : کامپایلر IAR

                          در هر پورت دو نوع وقفه مجزا تعریف می شود که می توان پین های مورد نظر در پورت را به عنوان عامل ایجاد کننده هر یک از این دو وقفه در نظر گرفت. این کار از طریق رجیسترهای INT0MASK و INT1MASK انجام می شود. سنکرون و آسنکرون بودن وقفه مسئله ای است که به تشخیص تغییرات در حضور کلاک وسایل جانبی (ClkPER)مربوط می شود. به این معنی که در تمام پورت ها به شرط آنکه کلاک وسیله جانبی حضور داشته باشد، لبه های بالا و پائین رونده و تغییرات و سطح Low قابل آشکارسازی و ایجاد وقفه هستند. اما پین شماره 2 از هر پورت این قابلیت را دارد که حتی در عدم تغییرات کلاک وسیله جانبی هم لبه های بالا رونده و پائین رونده و تغییرات را آشکار کند که به آن وقفه آسنکرون گفته می شود. سطح Low هم برای تمام پورت ها صرف نظر از کلاک وسیله جانبی قابل تشخیص است. اما در وضعیت فعال میکروکنترلر باید تا پایان اجرای دستورالعمل جاری، Low بماند و در وضعیت Sleep هم باید به اندازه زمان مشخصی Low بماند که در غیر اینصورت از Sleep خارج می شود اما وقفه ای ایجاد نخواهد شد. خلاصه آنکه منظور از عبارت سنکرون، هماهنگی با کلاک وسیله جانبی است. روش فعال کردن وقفه های خارجی در بخش 2.4.1 از AVR1313 توضیح داده شده است و نمونه کدها و کتابخانه ای برای تنظیمات مختلف پورت و از جمله وقفه به همراه آن موجود است.
                          فعال کردن محدودیت Slew Rate موجب ایجاد تاخیر در صفر و یک کردن خروجی نمی شود، بلکه شکل موج خروجی را تغییر می دهد و شیب تغییرات را کمتر می کند. بنابراین با تاخیر نرم افزاری نمی توان آن را پیاده سازی کرد.
                          اوژن: به معنای افکننده و شکست دهنده است
                          دانایی، توانایی است-Knowledge is POWER
                          برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                          وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                          قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                          اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                          ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                          دیدگاه


                            #28
                            پاسخ : کامپایلر IAR

                            با سلام به دوستان.
                            قبل از هر چیز از آقای طراح به خاطر توضیحات خوبشون تشکر میکنم.
                            یه سوال دارم . چجوری میشه به IAR فهموند که در تابع printf که داره از تابع putchar که ما نوشتیم استفاده کنه . حالا تو این putchar که ما نوشتیم ممکنه دیتا رو رو usart0 ریخته باشیم ممکنه رو usart1 ریخته باشیم و یا اصلا روی lcd ریخته باشیم.
                            تو کدویژن این کار با #ALTERNATE PUTCHAR و نوشتن putchar جدید انجام میشه . تو winavr هم این کار با تعریف یک stream و پاس دادن putchar خودمون به اون و قراردادن stream خودمون با stdout اینکار انجام میشه.
                            اما تو IAR نمیدونم ؟؟؟؟
                            اگر کسی بتونه کمکم کنه ممنون میشم.

                            دیدگاه


                              #29
                              پاسخ : کامپایلر IAR

                              می توانید قبل از تابع main تابع putchar را بنویسید که در پست هقتم از لینک زیر، نمونه ای از آن را آورده شده است:

                              http://www.avrfreaks.net/index.php?n...c&start=20

                              البته به این موضوع توجه کنید که printf در 3 یا 4 مد مختلف قابل تعریف است که هر یک حجم خاص خود را اشغال می کنند و این مدها از منوی Projects/Options/General Options/Library Options قابل تنظیم هستند.
                              اوژن: به معنای افکننده و شکست دهنده است
                              دانایی، توانایی است-Knowledge is POWER
                              برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                              وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                              قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                              اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                              ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                              دیدگاه


                                #30
                                پاسخ : کامپایلر IAR

                                شما فرمودین در 4 مد مختلف کار میکنه. منظورتون Full DLib , Normal DLib , CLib , Custom CLib , DLib هست ؟
                                میشه تفاوت اصلی اونا رو بگین.
                                چجوری میشه یه Stream تعریف کرد. اگر لطف کنید یه توضیح بدین ممنون میشم.

                                دیدگاه

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