اطلاعیه

Collapse
No announcement yet.

کامپایلر IAR

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

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

    نوشته اصلی توسط M.M.-T
    سلام دوستان . یک سوال مبتدیانه !
    من توی IAR از این دستور برای تبدیل Int که با نام Setpoint هست به Char با نام y برای نمایش بر روی LCD استفاده کردم. ولی با اجرای این دستور در برنامه ، اصلا سیستم کار نمی کنه. وقتی این دستور رو بر میدارم همه چیز درست کار میکنه. آیا کتابخانه خاصی باید واسه Sprintf به پروژه افزوده بشه؟
    sprintf(y,"%d",Setpoint);
    بخش Project گزینه Options قسمت General Options لبه System سایز CSTACK رو ببرید بالا

    دیدگاه


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

      سلام
      من در مورد cstack و rstack و نحوه ای استفاده از فایل map در این سایت مطالبی خوندم اما یاد نگرفتم و نفهمیدم دقیقا اینها برای چی هستند
      و روش استفاده از فایل map را نفهمیدم.
      پروژه ای من الان به حدی رسیده که دیگه اجازه گرفتن متغییر محلی به من نمیده و اگر یک متغییر محلی اضافه بگیرم برنامه درست کار نمیکنه
      لطفا من را راهنمایی کنید.
      ممنون

      دیدگاه


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

        نوشته اصلی توسط شهریار رجب زاده
        بالاخره مشکلش حل شد و من تونستم یه چراغ چشمک زن بسازم :wow: :mrgreen:
        راستش من هم تازه شروع کردم و یه برنامه ساده برای روشن کردن یک led نوشتم:
        کد:
        #include<ioavr.h>
        #include<intrinsics.h>
        int main(){
         PORTC_DIR=0xFF;
        
         PORTC_OUT=0xFF; 
         while(1);
        }
        ولی کار نمیکنه.از پروگرمر TNM2000+ استفاده میکنم و فایل هگز تولید شده توسط برنامه رو میریزم تو میکرو. ولی کار نمیکنه. فکر میکنید مشکل از کجاست؟

        دیدگاه


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

          مفهوم این خطا چیست ؟ البته به ظاهر مشکلی در پروژه ایجاد نشده با هر نوع optimize صادر می شود شماره میکرو ATXMEGA64A3

          Warning[Pa050]: non-native end of line sequence detected (this diagnostic is only issued once) H:\H\D\Project\IAR\SPH2100 P\SPH2100.1\main.c 4087

          دیدگاه


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

            کسی نیست به من کمککنه؟ فقط میخوام یه led رو با میکرو روشن کنم. برنامه رو که نوشتم گزینه rebuild و make و compile رو زدم. بعد فایل هگز تولید شده رو ریختم داخل میکرو. ولی هیچ اتفاقی نیافتاد. مشکل از کجاست اساتید عزیز؟ لطفا کمکم کنین

            دیدگاه


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

              کسی نیست به من کمککنه؟ فقط میخوام یه led رو با میکرو روشن کنم. برنامه رو که نوشتم گزینه rebuild و make و compile رو زدم. بعد فایل هگز تولید شده رو ریختم داخل میکرو. ولی هیچ اتفاقی نیافتاد. مشکل از کجاست اساتید عزیز؟ لطفا کمکم کنین
              1- در option\linker در زبانه Extra output باید Generate Extra output file را فعال و در پایین آن (output format) گزینه intel-extended را انتخاب کنید .
              2- در قسمت general حتما cpu را درست انتخاب کرده اید ؟
              3- از کامپایل خطایی صادر نشده ؟

              دیدگاه


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

                برو به خط 4087 و کلید End رو بزن. میبینی که یک کاراکتر اضافه وجود داره. اون رو پاک کن درست میشه.

                دیدگاه


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

                  نوشته اصلی توسط مهدی صفر جوکار
                  1- در option\linker در زبانه Extra output باید Generate Extra output file را فعال و در پایین آن (output format) گزینه intel-extended را انتخاب کنید .
                  2- در قسمت general حتما cpu را درست انتخاب کرده اید ؟
                  3- از کامپایل خطایی صادر نشده ؟
                  مشکلم حل شد بالاخره. الان تونستم یه چشمک زن بسازم. فقط یه سوال نمیشه به پورت های میکرو بصورت بیتیمدسترسی داشت؟

                  دیدگاه


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

                    بصورت بیتی می توان نوشت ولی جهت خواندن خیر . مثلا پین 7 پورت c را بصورت خروجی تعریف کرد :
                    PORTC_DIR=PIN7_bm

                    یا خروجی را به high تبدیل کرد :
                    PORTC_OUTSET=PIN7_bm

                    یا به low:
                    PORTC_OUTCLR=PIN7_bm


                    استاد کی نژاد در این پست توضیحات خوبی ارائه نموده اند :
                    http://www.eca.ir/forum2/index.php?topic=41476.0

                    دیدگاه


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

                      نوشته اصلی توسط مهدی صفر جوکار
                      بصورت بیتی می توان نوشت ولی جهت خواندن خیر . مثلا پین 7 پورت c را بصورت خروجی تعریف کرد :
                      PORTC_DIR=PIN7_bm

                      یا خروجی را به high تبدیل کرد :
                      PORTC_OUTSET=PIN7_bm

                      یا به low:
                      PORTC_OUTCLR=PIN7_bm


                      استاد کی نژاد در این پست توضیحات خوبی ارائه نموده اند :
                      http://www.eca.ir/forum2/index.php?topic=41476.0
                      با سلام
                      از راهنمایی شما خیلی سپاسگزارم. مدتی بود به اینترنت دسترسی نداشتم. پست مربوط به آقای مهندس کی نژاد را مطالعه خواهم کرد.

                      دیدگاه


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

                        به مشکلی برخوردم در IAR که شروطی در یک while بررسی می شد
                        تعداد متغییر از نوع cahr و دو bool نیز در شرط while وجود داشت
                        ولی شرط به درستی انجام نمیشد
                        با تبدیل یکی از bool به char مشکل حل شد
                        ایا محدودیتی در این مورد وجود دارد

                        کد:
                        while(!char && char2 && !char3 && bool1 && !bool2){}

                        و همچنین این دستور

                        کد:
                        while(!char && char2 && (char0 || char4) !char3 && bool1 && !bool2){}
                        هرچه سعی کنیم لایه های نرم افزاری زیاد کرده و از سخت افزار دور کنیم مشکلات(باگ ها) کمتر خواهد شد(امنیت بیشتری خواهید داشت)
                        بهترین جواب دهنده برای سوال شما، خود شما هستید البته بعد تلاش،پشتکار و مطالعه بیشتر
                        میدونی مشکل ما کجاست؟سرمایه و مغز ها رو نمیتونیم یکجا جمع کنیم...

                        تعدادی ماژول GPS GP5MX1513F1 با بالاتریت حساسیت -170db به قیمت خرید بفروش میرسد

                        دیدگاه


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

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

                          دیدگاه


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

                            با سلام خدمت همه اساتید محترم و جناب طراح
                            من کتابخانه adc_driver رو از سایت اتمل دانلود کردم، تقریبا چیزی متوجه نشدم و خودم نشستم یه کتابخونه برای تنظیم ADC نوشتم. حالا احساس میکنم که نیاز است که کتابخونه های اتمل رو متوجه بشم. چون در غیر اینصورت باید برای تک تک قسمت های ADC باید برنامه بنویسیم. من یه قسمت از کد adc_driver رو میذارم و از دستان و جناب طراح خواهش میکنم، به من کمک کنن تا کتوجه این کدها بشم:

                            کد:
                            #define ADC_ConvMode_and_Resolution_Config(_adc, _signedMode, _resolution)   \
                            	((_adc)->CTRLB = ((_adc)->CTRLB & (~(ADC_RESOLUTION_gm|ADC_CONMODE_bm)))| \
                            		(_resolution| ( _signedMode? ADC_CONMODE_bm : 0)))


                            من متوجه نمیشم که چرا تو define اومده تابع تعریف کرده. بعضی عبارت هایی که استفاده کرده اصلا متوجه نمیشم. مثلا (_adc)->CTRLB یا در قسمت های دیگه عبارت های مشابهی استفاده شده مثل: adc->CALL
                            اینجا CALL رجیستر کالیبراسیون هست ولی متوجه دستور استفاده شده نمیشم.
                            یه سوال دیگه هم با اجازتون میپرسم، عبارت uint16_t چه مفهومی داره؟

                            ممنون میشم اگه راهنماییم کنین

                            دیدگاه


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

                              با سلام
                              نوشته اصلی توسط mhm_004
                              با سلام خدمت همه اساتید محترم و جناب طراح
                              من کتابخانه adc_driver رو از سایت اتمل دانلود کردم، تقریبا چیزی متوجه نشدم و خودم نشستم یه کتابخونه برای تنظیم ADC نوشتم. حالا احساس میکنم که نیاز است که کتابخونه های اتمل رو متوجه بشم. چون در غیر اینصورت باید برای تک تک قسمت های ADC باید برنامه بنویسیم. من یه قسمت از کد adc_driver رو میذارم و از دستان و جناب طراح خواهش میکنم، به من کمک کنن تا کتوجه این کدها بشم:

                              کد:
                              #define ADC_ConvMode_and_Resolution_Config(_adc, _signedMode, _resolution)   \
                              	((_adc)->CTRLB = ((_adc)->CTRLB & (~(ADC_RESOLUTION_gm|ADC_CONMODE_bm)))| \
                              		(_resolution| ( _signedMode? ADC_CONMODE_bm : 0)))


                              من متوجه نمیشم که چرا تو define اومده تابع تعریف کرده. بعضی عبارت هایی که استفاده کرده اصلا متوجه نمیشم. مثلا (_adc)->CTRLB یا در قسمت های دیگه عبارت های مشابهی استفاده شده مثل: adc->CALL
                              اینجا CALL رجیستر کالیبراسیون هست ولی متوجه دستور استفاده شده نمیشم.
                              یه سوال دیگه هم با اجازتون میپرسم، عبارت uint16_t چه مفهومی داره؟

                              ممنون میشم اگه راهنماییم کنین
                              اگه درست فهمیده باشم ،
                              اینی که شما گذاشتید یه تابع هست که به صورت ماکرو تعریف شده ، _signedMode و _resolution ورودی هاش هستند و _adc هم یه استراکچر هست که تو این تابع عضو CTRLB اون با توجه به اون دو تا ورودی مقدارش محاسبه میشه و مقدار دهی میشه و چون داخل استراکچر _adc به صورت اشاره گر تعریف شده برای دسترسی به اون از <- استفاده شده.

                              و uint16_t هم همون unsigned int هست .

                              دیدگاه


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

                                نوشته اصلی توسط mojtaba_led
                                با سلام
                                اگه درست فهمیده باشم ،
                                اینی که شما گذاشتید یه تابع هست که به صورت ماکرو تعریف شده ، _signedMode و _resolution ورودی هاش هستند و _adc هم یه استراکچر هست که تو این تابع عضو CTRLB اون با توجه به اون دو تا ورودی مقدارش محاسبه میشه و مقدار دهی میشه و چون داخل استراکچر _adc به صورت اشاره گر تعریف شده برای دسترسی به اون از <- استفاده شده.

                                و uint16_t هم همون unsigned int هست .
                                خیلی ممنون دوست عزیز
                                فقط چر underline قبل ورودی هاش ب کار برده؟ دلیل خاصی داره؟ یه منبع مناسبی که در مورد این چیزا اطلاعات بدست بیارم میتونین معرفی کنین؟
                                استراکچر چطور بصرت اشاره گر تعریف میشه؟ این جور برنامه نویسی استاندارد زبان c است یا فقط مربوط به نرم افزار IAR هست؟
                                تو این کد و بسیاری از کدهای دیگه اتمل، عبارت هایی برای دسترسی مستیم به بیت های یک رجیستر استفاه کرده. به عنوان مثال، ADC_CONVMODE_bm و با این عبارت، بیت مورد نظر رو تنظیم کرده، من تو برنامم ADC_CONVMODE_bm استفاده کردم ولی خطا گرفت که نمیشناسه، چطور میتونم از این روش استفاد کنم؟
                                باز هم ممنونم

                                دیدگاه

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