اطلاعیه

Collapse
No announcement yet.

تولید عدد تصادفی در AVR با زبان سی - کمترین کد

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

    تولید عدد تصادفی در AVR با زبان سی - کمترین کد

    با سلام خدمت دوستان
    برای تولید عدد تصادفی من از تابع rand استفاده کردم ولی نزدیک 800 بایت از فضا رو گرفت و چون میکرو سری تاینی هست اصلا منطقی نیست ازش استفاده بشه و نصف حافظه رو اشغال میکنه.یک نفر پیشنهاد داده بود از آنالوگ به دیجیتال استفاده بشه که متاسفانه همه پایه ها استفاده شده و امکان این کار هم نیست. دوستان با کمترین کد یه روشی برای تولید عدد تصادفی به من بگین.میخوام یه عدد تصادفی بین 0 تا 15 تولید بشه .

    ممنون
    Aristar Group - Always And Forever

    #2
    پاسخ : تولید عدد تصادفی در AVR با زبان سی - کمترین کد

    کاری نداره که برادر
    برخی مواقع ادم نزدیک ترین ها رو نمیبینه و نگاهشو به دور دست ها میسپاره
    خب بیا و از ریجستر های خود رم استفاده کن
    و از هر بیت از هر بایت های مذکوره استفاده کن
    مثلا 8 تا بایت که مدام در حال استفاده هستن مثل اون 32 بیت رم که محاسبات معمولا با اون ها انجام میشه
    در کل ریجستر های زیادی هست که مدام در حال تغییر دیتا هستن
    و بیا از هر بیت اونا یه دونه انتخاب کن
    یا از تقسیم ضزب و جمع منهی دیتا ها استفاده کن و هی با جواب خودشون عملیات ریاضی انجام بده و
    از بیت هاشون استفاده کن و در نهایت به 1 تا 15 تبدیلشون کن

    دیدگاه


      #3
      پاسخ : تولید عدد تصادفی در AVR با زبان سی - کمترین کد

      اول هم خودم خواستم از مقدار تایمر استفاده کنم چون هی در حال تغییر هست ولی مشکل اینجاست که بازه تایمر از صفر تا 255 متغیر هست ولی باهاش به نتیجه خوبی نرسیدم.بازم تست بکنم ببینم چی میشه.
      Aristar Group - Always And Forever

      دیدگاه


        #4
        پاسخ : تولید عدد تصادفی در AVR با زبان سی - کمترین کد

        نوشته اصلی توسط حسین جباری
        اول هم خودم خواستم از مقدار تایمر استفاده کنم چون هی در حال تغییر هست ولی مشکل اینجاست که بازه تایمر از صفر تا 255 متغیر هست ولی باهاش به نتیجه خوبی نرسیدم.بازم تست بکنم ببینم چی میشه.
        عدد خام شما 0 تا 1 میلیارد هم باشه می تونی از اون عدد در بازه دلخواه را بدست بیاری.
        برای مورد شما کافیه اون عدد را بر 16 تقسیم کنی باقیمانده آن هر عددی باشد بین 0 تا 15 خواهد بود.

        دیدگاه


          #5
          پاسخ : تولید عدد تصادفی در AVR با زبان سی - کمترین کد

          خب از چه رجیستری استفاده بکنم که مقدارش هی در حال تغییر باشه؟تایمرها به دلیل بارگذاری همیشه تو یه بازه مشخصی در حال شمارش هستن که عملا به درد نمیخوره.
          در ضمن بحث فقط خود عدد رندم نیست بحث سر اینه که کمترین کد رو داشته باشه.میکروکنترلر 2 کیلوبایت حافظه داره که فقط میتونم از 40 درصدش استفاده کنم و مابقی برای دیتا استفاده میشه.الان هم 37 درصد استفاده شده و فقط 3 درصد دیگه امکان برنامه نویسی دارم یعنی حداکثر 60 بایت دیگه
          Aristar Group - Always And Forever

          دیدگاه


            #6
            پاسخ : تولید عدد تصادفی در AVR با زبان سی - کمترین کد

            یه متغیر انتخاب کن و بذار پشت هم از 0 تا 15 بشماره . هر وقت که خواستی مقدار رو ازش بگیری یه عددهای متفاوت بهت میده . این روش کد زیادی تولید نمیکنه(حدودا چند بایت)

            دیدگاه


              #7
              پاسخ : تولید عدد تصادفی در AVR با زبان سی - کمترین کد

              پیشنهاد خوبی بود!یه متغیر عمومی تعریف کردم که با هر بار وقفه تایمر صفر یک واحد بهش اضافه میکنه.تایمر هم هر 200 میکروثانیه در حال اجراست.البته 26 بایت جا گرفت.حالا ببینم در عمل چجوری کار میکنه.اگر جواب داد اینجا میگم.تشکر
              Aristar Group - Always And Forever

              دیدگاه

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