اطلاعیه

Collapse
No announcement yet.

اسیلاتور داخلی میکرو (BASCOM)

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

    اسیلاتور داخلی میکرو (BASCOM)

    باسلام

    یه سوال در مورد اسیلاتور داخلی میکرو دارم . در دستور CRYSTAL $ اعداد مختلفی قرار میگیرد (بدون تغییر فیوز بیتها) هرچه اعداد بالاتر میره فرکانس اسیلاتور داخلی کم میشه علتش رو نفهمیدم .(اعداد100000به بالا)
    اگه امکان داره راهنمائی کنید. متشکرم

    #2
    پاسخ : اسیلاتور داخلی میکرو (BASCOM)

    وقتی عدد کریستال رو عوض میکنین باید فیوز بیت رو هم تغییر بدین و روی همون عدد مچ کنین و گر نه سرعت بر عکس پایین هم میاد
    علم چندانکه بيشتر خواني چون عمل در تو نيست ناداني

    دیدگاه


      #3
      پاسخ : اسیلاتور داخلی میکرو (BASCOM)

      خوب قربون دستت این عددی که توی برنامه مینویسی به کامپایلر میگی سرعت واقعی میکرو چنده تا کامپایلر برای تاخیرها حلقه ها رو تنظیم کنه

      مثلا توی مدار lcd گذاشتی و lcd سرعتش خیلی کمتر از میکرو پس میکرو به تاخیر نیاز داره و شما سرعت رو به کامپایلر اعلام کینید که مثلا چند دور توی حلقه بیخود بچرخه تا تاخیر ایجاد بشه

      میکرو هم معمولا وقتی میخرید بغیر از بعضیا همه 1 مگاهرتز کار میکنن(اسیلاتور داخلی)
      با فیوز بیت میشه این فرکانس رو داخلی 1 یا 2 یا 4 یا 8 مگا هرتز داخلی کرد یا خارجیش کرد که دیگه با کریستال سرعت مشخص میشه


      شما میکرو تون 1 مگاهرتز سرعت داره به کامپایلر مثلا میگید 16 مگاهرتز پس میکرو 16 برابر سرعتش کمتر از حد انتظاره
      به وبلاگم سر بزنید

      دیدگاه


        #4
        پاسخ : اسیلاتور داخلی میکرو (BASCOM)

        نوشته اصلی توسط dr21
        باسلام
        هرچه اعداد بالاتر میره فرکانس اسیلاتور داخلی کم میشه علتش رو نفهمیدم
        دوست عزیز

        فرکانس اسیلاتور داخلی کم نمیشه ( مگر اینکه فیوز بیت ها را دست زده باشید) ولی سرعت اجرای برنامه شما کم میشه .

        یادتون باشه که همه تاخیر هایی که در نظر میگیرید نرم افزاری هستند و بعنوان مثال برای تاخیر 1 ثانیه و با تعریف کریستال 1 مگ ، ممکن است از یک loop با تعداد گردش 1000 بار استفاده بشه ( خود کمپایلر این کار را انجام می ده)

        حالا اگه شما کریستال را 2 مگ انتخاب کنید ، چون سیمولاتور تصور می کند شما از کریستال 2 برابر استفاده کردید ، تعداد تکرار loop را 2000 بار میکند تا همان یک ثانیه تاخیر را داشته باشید.( چون شما هنوز همان کریستال 1 مگ را در عمل استفاده میکنید ، زمان تاخیر شما 2 برابر می شود .

        موفق باشید

        دیدگاه


          #5
          پاسخ : اسیلاتور داخلی میکرو (BASCOM)

          درود
          ظاهرا تا من این پست رو مینوشتم دوستان زحمت جواب دادن رو کشیدند اما باز هم من این پست رو میزارم و شما بخوان:
          معمولا این دستورها توی کامپایلر ها فقط برای این هست که کامپایلر متوجه بشه تاخیرها رو چطور تنظیم کنه، شما با این دستور به کامپایلر میگید که قصد دارید از میکرویی استفاده کنید که داره با فرکانس مثلا 1مگاهرتز کار میکنه و از این طریق میکرو متوجه میشه که دستوراتی که باید تولید کنه باید با توجه به این تولید بشه که میکرو در فرکانس 1 مگاهرتز میخواد کار کنه، یا به عبارتی با فرض اینکه هر سیکل اجرای دستور یک میکرو ثانیه طول میکشه کدهارو تولید میکنه. برای روشن تر شدن موضوع من یک مثال میزنم.
          فرض کنید شما که برنامه نویس هستید دنده ماشین رو عوض میکنید و من که راننده ماشین هستم در نقش کامپایلر طبق دستورات شما پدال گاز رو کنترل میکنم:
          مثلا این ماشین اگر توی دنده یک باشه پدال گاز رو تا ته فشار بدیم 50 کیلومتر بر ساعت سرعت میگیره، و اگر توی دنده دو باشه 100 کیلومتر، حالا شما به من میگید که ماشین توی دنده 2 هست و از من میخواید من 50 کیلومتر سرعت برم، من با توجه به اینکه برای این سرعت در دنده دو باید پدال رو به اندازه نصف فشار بدم اینکار رو میکنم و ماشین همون 50 کیلومتر که انتظار داشتیم رو میره، اما اگر شما به من بگید ماشین دنده دو هست و اون رو توی دنده 1 قرار بدید، باز من فکر میکنم توی دنده دو هست و پدال رو به اندازه نصف فشار میدم اما چون شما اون رو توی دنده یک قرار دادید ماشین به جای اینکه با سرعت 50 کیلومتر در ساعت حرکت کنه،با سرعت 25 کیلومتر در ساعت حرکت میکنه.
          کامپایلر هم همینطور هست، اگر شما به اون بگید که نوسانساز 1 مگاهرتز هست اون فرض میکنه که با 1 میلیون سیکل زمان 1 ثانیه تولید میشه، حالا اگر شما بهش بگید یک مگاهرتز هست اما میکرو رو توی حالت 4 مگاهرتز قرار بدید اون باز همون 1 میلیون سیکل رو برای مدت 1 ثانیه در نظر میگیره اما در این حالت یک میلیون سیکل زمانی یک چهارم یک ثانیه تولید میکنه چون سرعت اجرای هر سیکل بالا رفته و تاخیر های شما کوتاه تر میشند.
          حالا شما هرچی سرعت کریستال رو برای کامپایلر بیشتر تعریف میکنید اون فکر میکنه که برای یک تاخیر باید سیکلهای بیشتری تولید کنه تا بتونه تاخیر مورد نیاز رو ایجاد کنه، غافل از اینکه سرعت نوسانساز میکرو توسط شما کمتر از اون چیزی که تعریف کردید قرار داده شده و وقتی که کامپایلر سیکهای بیشتر برای تاخیر ها تولید میکنه عملا فقط زمان تاخیر شما زیاد میشه و شما احساس میکنید که سرعت کار پایین اومده.
          در نتیجه شما برای اینکه دقیق ترین مقدارهارو داشته باشید باید سرعتی که به کامپایلر میگید با سرعتی که از طریق فیوزبیت ها مشخص میکنید یکی باشه، برای میکرو سرعت کار همیشه از طریق فیوز بیتها مشخص میشه ، شما دستور crystal رو هرچی تعریف کنید سرعت کار میکرو ثابت هست اما چون کد با توجه به سرعت دیگه ای تولید شده، تاخیر ها متفاوت در میاد و شما احساس میکنید این میکرو هست که داره با فرکانس متفاوتی کار میکنه، در صورتی که فرکانس کار میکرو همیشه پیرو چیزی هست که از طریق فیوز بیت ها مشخص شده براش.
          از آنجا که گاهی فرصت بازخوانی پست نیست، بابت غلط های املایی و نگارشی احتمالی معذرت میخوام.
          هیچیک از پاسخ هایی که میدم را کاملا تایید نمیکنم و ممکن هست اشتباه کرده باشم، اگر من به نوشته ام مطمئن هستم شما مشکوک باشید.
          اگر در حل مشکل من کمک کردید و دکمه تشکر رو نزدم حتما فراموش کردم کوچکترین کمک شما برایم ارزشمند است!
          اگر به هر طریقی از من ناراحت شدید حتما با یک پیام خصوصی تذکر بدهید تا مشکل رو حل کنیم و رابطه ی صمیمانه، پایدار بماند.
          شاد و موفق باشید

          دیدگاه


            #6
            پاسخ : اسیلاتور داخلی میکرو (BASCOM)

            آفرین این توضیح از همش کاملتره

            دیدگاه

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