اطلاعیه

Collapse
No announcement yet.

مشکل با float در avr studio

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

    مشکل با float در avr studio

    سلام.
    دوستانی که با avr studio کار کردن احتمالا به مشکل عدم نمایش float در sprintf برخورده اند.
    تو چند تا تاپیک خارجی جستجو کردم دیدم باید این متن رو تو قسمت linker وارد کنم.
    -Wl,-u,vfprintf -lprintf_flt -lm
    و درست شد اما حجم کد تولیدی از 7 کیلو به 17 کیلو افزایش پیدا کرد.
    حالا چند تا سوال پیش میاد این کد تو لینکر چکار میکنه؟
    چرا بعد از اضافه کردن این کد حجم به صورت نمایی زیاد میشه.
    چکار کنیم حجم کد رو کنترل کنیم.
    به نظرم این موضوع باید جز موضوع های مهم انجمن باشه تا کسایی که میخوان با avr studio کار کنن راحت تر به نتیجه برسه.
    Someone who can change the world
    ELECTRONIC ENGINEER

    #2
    پاسخ : مشکل با float در avr studio

    تابع sprintf در صورت کار با متغیرهای float حجم حافظه زیادی را می تواند در flash اشغال کند. در مورد حجم واقعی حافظه اشغال شده (که با فایل Hex برابر نیست) به توضیحات پست زیر مراجعه کنید:

    http://www.eca.ir/forum2/index.php?t...1960#msg541960

    در مورد سوال اصلی هم در لینک زیر توضیحاتی وجود دارد:

    http://winavr.scienceprog.com/avr-gc...n-avr-gcc.html
    اوژن: به معنای افکننده و شکست دهنده است
    دانایی، توانایی است-Knowledge is POWER
    برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
    وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
    قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
    اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
    ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

    دیدگاه


      #3
      پاسخ : مشکل با float در avr studio

      توابع printf در avr-libc دارای سه حالت هست:

      کد:
      PRINTF_MIN == "#lcSsdiuopxX%"
      PRINTF_STD == " -+#.0123456789lcSsdiuopxX%"
      PRINTF_FLT == " -+#.0123456789lEFGefgcSsdiuopxX%"
      گذشت خصلت مردان است

      دیدگاه

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