سوال در رابطه با تنظیمات میکرو

مهندس stack و heap رو میشه مقدارشون رو عوض کرد؟stack دقیقا وظیفش چیه؟
2-اینکه اگه پروگرم تایپ میکرو رو روی بوت لودر بزاریم و کد بزنیم اون کد کجا اجرا میشه؟
3-اینکه انالوگ کامپرتور و spi و twi در کجا ها استفاده میشه؟مثالی میشه ازشون بزنید
4- اینکه اگه فیوز بیت رو پروگرم کنیم و تیکش رو بزنیم بعد میتونیم تیک رو برداریم و انپروگرم کنیم؟مثلا الان تیک EESAVE زده شده.میشه تیک رو برداشت و پروگرم کرد بعد دیگه از eeprom محاقظت نکنه؟یا همچنین کلاک داخلی میکرو رو عوض کرد؟

5-فیوز بیت SUT مربوط به استارتاپ تایم میکرو کارش چیه؟
و به عنوان سوال اخر jtag در میکرو استفاده ای داره؟
ببخشید مهندس سوالام زیاد شد.بجث AVR تموم شد منم سوالات نهاییم رو فرستادم.ممنون از حوصله ای که قرار میدید

۲.در مورد بوت لودر توضیح دادم در یکی دیگه از پست ها.
۳. واحد های twi و مقایسه گر آنالوگ کمتر استفاده میشن در عمل. قسمت مقایسه گر آنالوگ که دقیقا کار opAmp رو انجام میده که توضیحش رو دادیم ما خود اپ امپ. قسمت twi هم یک نوع ارتباط به اسم two wire هست که من زیاد ندیدم استفاده بشه. اگه سرچ کنید می تونید در موردش اطلاعات بدست بیارید. ارتباط spi که البته در ماژول nrf هم ازش استفاده کردیم، یک نوع ارتباط master و slave هست (فکر کنم این رو هم توضیح دادیم در بسته، مطمئن نیستم) که برای راه اندازی بعضی ماژول ها استفاده میشه.
۴.بله، بعدا میشه اون تیک رو برداشت. فقط دقت کنید که بعضی از این تنظیمات ممکن هست میکروی شما رو در حالتی قرار بده که دیگه نتونید ازش استفاده کنید. مثلا اگه روی کریستال خارجی ست کنید، دیگه بدون کریستال خارجی کار نمی کنه.
۵.ترکیب sut با cksel فرکانس کاری میکرو رو مشخص می کنه. به دیتاشیت مراجعه کنید.
۶. jtag یک روش پروگرم کردن و مانیتور کردن میکرو هست که کار جالبی که انجام میده این هست که شما میتونید میکرو و رجیستر های داخلیش رو در زمانی که میکرو داره کار می کنه مانیتور کنید. این مورد در arm توضیح داده شده.

مهندس خیلی ممنون از حوصله و صبر زیادتون.لطف کردید

حافظه ‌ram در میکرو ها به دو قسمت تقسیم میشه. یک قسمت که از بالای حافظه (ابتدای حافظه) برداشته میشه بهش میگن stack و کارش این هست که میکرو هرجایی باید یک اطلاعاتی رو در ram ذخیره می کرد، از این حافظه استفاده میکنه. (مثلا در یک تابع، شما یک متغیر تعریف کردید، میکرو میاد این رو داخل stack میذاره و بعد که تابع کارش تموم شد، پاکش می کنه. مگه اینکه متغیر از نوع static باشه.)

یک قسمت از حافظه هم از پایین حافظه (انتهای حافظه) تخصیص داده میشه به عنوان heap که برای dynamic memory allocation استفاده میشه. تصور کنید که شما یک آرایه دارید که نمی دونید چند خونه هست و کاربر قرار هست که تعداد خونه هاش رو از طریق سریال برای شما ارسال کنه. با چیزهایی که یک میکروی معمولی در اختیار ما میذاره، شما راهی برای پیاده سازی این سناریو ندارید. ولی با استفاده از heap شما می تونید به صورت پویا و dynamic به تخصیص حافظه بپردازید. در میکرو های معمولی شما نمی تونید اینکار رو بکنید و حتما باید از یک سیستم عامل میکرو مثل freeRTOS استفاده کنید و مبحث پیشرفته ای هست.
این نوع متغیر ها در پایین رم به اسم heap ذخیره میشن و واضح هست که حتما باید حواستون باشه که این دو حافظه به هم نرسن. (یکی از بالا پر می کنه و یکی از پایین و نباید هیچوقت به همدیگه برسن)