اطلاعیه

Collapse
No announcement yet.

کوچ کردن از کدویژن به AtmelStudio

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

    پاسخ : کوچ کردن از کدویژن به AtmelStudio

    سلام خدمت همگی،
    نوشته اصلی توسط dostajn
    سلام نه
    نام همین شکلی هست با یه تفاوت جزیی،آ‌ باید ریزتر بشین( راهنمایی:آ‌نام وکتور رو از برنامه کپی کنید و تو اون آدرس سرچ کنید ببینید هست یانه؟ یه حرف اضافه زدین ... )
    رشته اول ثابته و احتمالا در حافظه میکرو ذخیره میشه و آدرس برگشت داده میشه اما تو حالت دوم شما داده دینامیک دارین و باید مشخص کنید این داده کچا ذخیره شده، چون ما نداریم آدرس رو میایم با یهآ‌& به اول متغییر آدرس رو برای تابع ارسال می کنیم:
    کد:
    [left]
    ISR (USART_RXC_vect)
    *
    *
    *
    usartSend(&rc_data);
    [/left]
    در مورد نام هم خدمتتون عرض کردم، من اون نام رو از کتابخونه iom8a.h عیناً برداشته بودم و با یک _ کار نمیکنه و حتماً باید همون دوتا _ باشه.
    در مورد نوشتن متغیر rc_data چیزی که فرمودید درسته و کار میکنه با آدرس دهی (&amp ولی برای رشته m_rx_bufferای که نوشتم اینطور کار نمی کنه!

    ممنون از پاسختون
    برای وقفه دریافت باید این طور بنویسی(به تعداد underline ها توجه کن!)
    در بالاتر هم عرض کردم با دوتا underline برنامه درست جواب میده.
    ولی یک اشکال در کد وقفه بالا هست ؛ شما وقتی دریافت کردید چطور تشخیص میدی؟ باید از Flag استفاده کنی
    چرا، حواسم به Flag بود، شاید تو این مثالی که اینجا گذاشتم یادم رفته بذارم و الا من از کارکتر NewLine استفاده میکنم اغلب...
    مواردی که عرض کردید رو همشون رو انجام داده بودم، همونطور که گفتم همون اول بیشتر مث ک مشکلم با کار با رشته ها بوده!

    با تشکر از تمامی دوستانی که پاسخ دادن.
    من برم روی برنامه اصلی تغییرات رو اعمال کنم ببینم چی میشه

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

    دیدگاه


      پاسخ : کوچ کردن از کدویژن به AtmelStudio

      خسته نباشید خدمت همگی...

      برنامه رو کامپایل میکنم و وارنینگ زیر رو میده بهم :



      به این خط از برنامه گیر میده :

      کد:
      #define _N					(unsigned int)((PID_dt*F_CPU)/(long long)(256*1024))
      نمیدونم در چه صورت ممکنه تقسیم بر 0 یا overflow رخ بده.....
      این وارنینگ ها از اررور بدتر هستند!

      با تشکر
      تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

      www.intelart.ir


      ساخت کنترلر دما PID فازی با AVR [آموزشی]

      دیدگاه


        پاسخ : کوچ کردن از کدویژن به AtmelStudio

        برای من warning نداد که!

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

        دیدگاه


          پاسخ : کوچ کردن از کدویژن به AtmelStudio

          نوشته اصلی توسط کنجکاو!
          برای من warning نداد که!
          شما همینو کامپایل کردید وارنینیگ نداد؟
          البته یه چیزی رو هم بگم....بعضی وقتا که F7 رو میزنم بدون هیچ ارور و وارنینیگ و مسیج کامپایل میکنه...بعضی وقتا هم بدون اینکه کد رو تغییر بدم دوباره F7 رو میزنم و کلی وارنینگ میاد.... oo:
          قضیه ش چیه؟...اتمل استودیو باگ داره؟سیستم ما مشکل داره؟....

          جالبه من کامپایل میکنم وارنینگ داره ولی واسه شما وارنینگ نمیده!!!!!!!!
          تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

          www.intelart.ir


          ساخت کنترلر دما PID فازی با AVR [آموزشی]

          دیدگاه


            پاسخ : کوچ کردن از کدویژن به AtmelStudio

            نوشته اصلی توسط punisher.x64
            شما همینو کامپایل کردید وارنینیگ نداد؟
            البته یه چیزی رو هم بگم....بعضی وقتا که F7 رو میزنم بدون هیچ ارور و وارنینیگ و مسیج کامپایل میکنه...بعضی وقتا هم بدون اینکه کد رو تغییر بدم دوباره F7 رو میزنم و کلی وارنینگ میاد.... oo:
            قضیه ش چیه؟...اتمل استودیو باگ داره؟سیستم ما مشکل داره؟....

            جالبه من کامپایل میکنم وارنینگ داره ولی واسه شما وارنینگ نمیده!!!!!!!!
            وقتی F7 می زنید برنامه Build میشه اما اگر در برنامه تغییری نداده باشید دیگه برنامه Build نمیشه. برای این که همیشه مطمئن باشید که برنامه کامل بررسی شده از crtl+ali+F7 استفاده کنید.

            دیدگاه


              پاسخ : کوچ کردن از کدویژن به AtmelStudio

              نوشته اصلی توسط punisher.x64
              خسته نباشید خدمت همگی...
              برنامه رو کامپایل میکنم و وارنینگ زیر رو میده بهم :

              به این خط از برنامه گیر میده :
              کد:
              #define _N					(unsigned int)((PID_dt*F_CPU)/(long long)(256*1024))
              نمیدونم در چه صورت ممکنه تقسیم بر 0 یا overflow رخ بده.....
              این وارنینگ ها از اررور بدتر هستند!
              با تشکر
              دلیلش مشخص نکردن نوع پارامتر هاست ، قبلاً همینجا در موردش بحث شده
              من مقدار PID_dt را نمیدونم برای همین 0.5 فرض کردم:
              کد:
              #define PID_dt 0.5F
              #define _N					(unsigned long)((PID_dt*F_CPU)/(unsigned long)(256UL*1024UL))
              موفق باشید
              امام علی (علیه السلام) : الزکات العلم نشرهُ/ زکات علم نشر آن است

              دیدگاه


                پاسخ : کوچ کردن از کدویژن به AtmelStudio

                نوشته اصلی توسط کنجکاو!
                سلام خدمت همگی،در مورد نام هم خدمتتون عرض کردم، من اون نام رو از کتابخونه iom8a.h عیناً برداشته بودم و با یک _ کار نمیکنه و حتماً باید همون دوتا _ باشه.
                در مورد نوشتن متغیر rc_data چیزی که فرمودید درسته و کار میکنه با آدرس دهی (&amp ولی برای رشته m_rx_bufferای که نوشتم اینطور کار نمی کنه!
                ممنون از پاسختوندر بالاتر هم عرض کردم با دوتا underline برنامه درست جواب میده.چرا، حواسم به Flag بود، شاید تو این مثالی که اینجا گذاشتم یادم رفته بذارم و الا من از کارکتر NewLine استفاده میکنم اغلب...
                مواردی که عرض کردید رو همشون رو انجام داده بودم، همونطور که گفتم همون اول بیشتر مث ک مشکلم با کار با رشته ها بوده!
                با تشکر از تمامی دوستانی که پاسخ دادن.
                من برم روی برنامه اصلی تغییرات رو اعمال کنم ببینم چی میشه
                شاید فایلتون تغییر کرده (به هر دلیلی) [-X
                این از فایل iom8.h از winAVR :
                کد:
                /* USART, Rx Complete */
                #define USART_RXC_vect			_VECTOR(11)
                #define SIG_UART_RECV			_VECTOR(11)
                اون برنامه که گذاشتم کاملاً تست شده هست.
                ممکنه کامپایلرت مشکل پیدا کرده باشد! یک بار دیگه نصبش کن و تست کن
                امام علی (علیه السلام) : الزکات العلم نشرهُ/ زکات علم نشر آن است

                دیدگاه


                  پاسخ : پاسخ : کوچ کردن از کدویژن به AtmelStudio

                  نوشته اصلی توسط Abbas Sarami
                  دلیلش مشخص نکردن نوع پارامتر هاست ، قبلاً همینجا در موردش بحث شده
                  من مقدار PID_dt را نمیدونم برای همین 0.5 فرض کردم:
                  کد:
                  #define PID_dt 0.5F
                  #define _N					(unsigned long)((PID_dt*F_CPU)/(unsigned long)(256UL*1024UL))
                  موفق باشید
                  خیلی ممنونم ...درست شد...نمیدونستم باید واسه هرکدوم از عدد ها نوعش رو هم مشخص کنیم!
                  ببخشید یه سوال دیگه :بنده دارم یه لایبرری واسه کنترلر PID مینویسم....
                  یه قسمت از برنامه اینطوریه :

                  کد:
                  _PID_CONTROL_SIGNAL=_PID_ERROR*PID_Kp+_PID_I_TERM*PID_Ki+_PID_D_TERM*PID_Kd;
                  کد بالا داخل یک حلقه دائما در حال اجرا هست.
                  ضرایب kd , kp , ki اعداد ثابت هستند و I_term , D_term , Error هم متغیرهای اعشاری هستند...
                  مجموع اینها داخل COntrol signal ریخته میشه که یه عدد بزرگ در حد 800 هست...من میخوام خروجی رو به یه عدد بین 0 و 1 تبدیل کنم....
                  به نظر شما چکار میشه کرد؟
                  مثلا میتونم با یه دستور شرطی بزرگترین مقدار COntrol signal رو بدست بیارم و در هر مرحله control signal رو به همون مقدار ماکزیمم تقسیم کنم؟
                  شما راه خاصی در نظر دارید؟
                  تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

                  www.intelart.ir


                  ساخت کنترلر دما PID فازی با AVR [آموزشی]

                  دیدگاه


                    پاسخ : کوچ کردن از کدویژن به AtmelStudio

                    نوشته اصلی توسط Abbas Sarami
                    شاید فایلتون تغییر کرده (به هر دلیلی) [-X
                    این از فایل iom8.h از winAVR :
                    کد:
                    /* USART, Rx Complete */
                    #define USART_RXC_vect			_VECTOR(11)
                    #define SIG_UART_RECV			_VECTOR(11)
                    اون برنامه که گذاشتم کاملاً تست شده هست.
                    ممکنه کامپایلرت مشکل پیدا کرده باشد! یک بار دیگه نصبش کن و تست کن
                    نمی دونم! شاید :|
                    به هر حال من واسه اینکه به مشکل نخورم از همون _VECTOR(11) هم استفاده کردم از اول...
                    اما واقعاً عجیبه چرا کتابخونه های من فرق داره :|

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

                    دیدگاه


                      پاسخ : کوچ کردن از کدویژن به AtmelStudio

                      با تشکر از این تاپیک آموزنده و پر محتوا
                      دوستان اگر امکان داره کد زیر رو بررسی وتفسیر کنند.

                      ISR(TIMER0_COMPA_vect) {
                      static unsigned short ticks=500;
                      ticks--;
                      if ((ticks&127)==0) btn_tick();
                      //If no 500 ticks have passed yet, exit the subroutine.
                      if (ticks!=0) return;

                      //A second has passed.
                      ticks=500;
                      مثل اینکه راست به چپ نوشته شد. این کد مربوط به وقفه مقایسه تایمر صفر هست که در هر ثانیه 500 بار رخ میدهد. چیزی که برای من سئوال است خط سوم و فراخوانی تابع btn_tick() میباشد . به نظر شما این تابع جند بار در ثانیه فراخوان میشود؟ با فرض اینکه وقفه در هر ثانیه 500 بار رخ بدهد.

                      دیدگاه


                        پاسخ : کوچ کردن از کدویژن به AtmelStudio

                        نوشته اصلی توسط samand
                        با تشکر از این تاپیک آموزنده و پر محتوا
                        دوستان اگر امکان داره کد زیر رو بررسی وتفسیر کنند.

                        ISR(TIMER0_COMPA_vect) {
                        static unsigned short ticks=500;
                        ticks--;
                        if ((ticks&127)==0) btn_tick();
                        //If no 500 ticks have passed yet, exit the subroutine.
                        if (ticks!=0) return;

                        //A second has passed.
                        ticks=500;
                        مثل اینکه راست به چپ نوشته شد. این کد مربوط به وقفه مقایسه تایمر صفر هست که در هر ثانیه 500 بار رخ میدهد. چیزی که برای من سئوال است خط سوم و فراخوانی تابع btn_tick() میباشد . به نظر شما این تابع جند بار در ثانیه فراخوان میشود؟ با فرض اینکه وقفه در هر ثانیه 500 بار رخ بدهد.
                        این کد که خیلی ناقصه
                        سر و تهش مشخص نیست
                        [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                        معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                        معرفی نرم افزار Codewizard PWM
                        با من بیشتر آشنا شوید

                        دیدگاه


                          پاسخ : کوچ کردن از کدویژن به AtmelStudio

                          سلام دوستان
                          یه سوال دارم شاید خیلی ابتدایی باشه ولی خیلی به کارم میاد
                          توی نرم افزار کدویژن این امکان وجود داره که اگر آکولاد باز و بسته تایپ کنی میشه باز و بسته کنی
                          مثل شکل زیر


                          حالا میخواستم ببینم که توی نرم افزار اتمل هم میشه این کار رو کرد ؟؟؟
                          به خدا دارم دیوونه میشم
                          تعداد خط برنامه هام زیاده ....
                          پیشاپیش خدا خیرتون بده :smile:
                          [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                          معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                          معرفی نرم افزار Codewizard PWM
                          با من بیشتر آشنا شوید

                          دیدگاه


                            پاسخ : کوچ کردن از کدویژن به AtmelStudio

                            نوشته اصلی توسط SAMAN.ASADI
                            سلام دوستان
                            یه سوال دارم شاید خیلی ابتدایی باشه ولی خیلی به کارم میاد
                            توی نرم افزار کدویژن این امکان وجود داره که اگر آکولاد باز و بسته تایپ کنی میشه باز و بسته کنی
                            مثل شکل زیر


                            حالا میخواستم ببینم که توی نرم افزار اتمل هم میشه این کار رو کرد ؟؟؟
                            به خدا دارم دیوونه میشم
                            تعداد خط برنامه هام زیاده ....
                            پیشاپیش خدا خیرتون بده :smile:
                            آره خب...چرا نشه؟؟؟
                            هرجا که آکولاد شروع میشه کنارش یه باکس کوچولو هست روی همون که کلیک کنید کل اون بلاک باز یا بسته میشه....
                            تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

                            www.intelart.ir


                            ساخت کنترلر دما PID فازی با AVR [آموزشی]

                            دیدگاه


                              پاسخ : کوچ کردن از کدویژن به AtmelStudio

                              نوشته اصلی توسط punisher.x64
                              آره خب...چرا نشه؟؟؟
                              هرجا که آکولاد شروع میشه کنارش یه باکس کوچولو هست روی همون که کلیک کنید کل اون بلاک باز یا بسته میشه....
                              ممنون که پاسخ دادید ولی منظورم آکولاد تو آکولاده
                              اینو نگاه کنید
                              http://s5.picofile.com/file/8119172650/5.gif
                              به عنوان مثال میخوام این قسمت کوچیکش کنم
                              [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                              معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                              معرفی نرم افزار Codewizard PWM
                              با من بیشتر آشنا شوید

                              دیدگاه


                                پاسخ : کوچ کردن از کدویژن به AtmelStudio

                                کسی نیست ؟؟؟؟ :cry2: :angry:
                                خیلی برام حیاتیه ... :cry:
                                [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                                معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                                معرفی نرم افزار Codewizard PWM
                                با من بیشتر آشنا شوید

                                دیدگاه

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