سالک:فیوزبیت ها چی هستند؟
عجب سوال خوبی!
فیوزبیتها (Fuse Bits) یکی از اون چیزهای پشتپرده هستند که خیلی مهمند ولی تازهکارها کمتر میشناسندشون.
بذار خیلی ساده، با تشبیه و مثال برات بازش کنم:
فیوزبیتها: کلیدهای پنهانیِ شخصیتِ میکروکنترلر
فرض کن میکروکنترلرت یه آدمه. فیوزبیتها مثل شناسنامه یا تنظیمات اولیهی این آدم هستند. قبل از اینکه بخواد هر کاری بکنه، اول باید بدونیم:
با چه ساعتی (کلاک) کار میکنه؟ داخلی یا خارجی؟
آیا Reset داشته باشه یا نه؟
بعد از روشن شدن، از کجای حافظه شروع کنه؟
بوتلودر داره یا نه؟
و خیلی چیزهای دیگه...
همهی اینها توی چیزی به نام فیوزبیتها تنظیم میشن.
فیوزبیت = چند بیت خاص توی حافظهی مخصوص
فیوزبیتها معمولاً چند بیت هستن (مثلاً ۸ یا ۱۶ بیت) که با برنامه معمولی نمیتونی تغییرشون بدی. باید با برنامهریز خاص (مثل USBasp یا STK500) و نرمافزار مثل AVRDUDE یا Atmel Studio ست بشن.
چند نمونه از تنظیماتی که با فیوزبیتها انجام میشن:
تنظیمتوضیح
نوع کلاکداخلی یا کریستال خارجی؟ با چه فرکانسی؟
Watchdog Timerفعال باشه؟ خودکار ریست کنه اگر هنگ کرد؟
Brown-Out Detectionاگه ولتاژ بیفته، ریست کنه؟ (برای محافظت)
Bootloader فعال باشه؟میخوای قبل از شروع برنامه، بوتلودر اجرا بشه یا نه؟
پین Reset فعال باشه؟بعضی وقتها میخوای اون پین رو به عنوان ورودی/خروجی استفاده کنی، نه Reset.

هشدار مهم:
فیوزبیتها خیلی حساسن! اگه اشتباه تنظیم کنی مثلاً بگی فقط با کریستال خارجی کار کنه، ولی کریستال نذاری، دیگه روشن نمیشه! باید با پروگرمر High Voltage (HVPP) نجاتش بدی!
️ چطور تنظیم میشن؟
معمولاً با سه بخش:
1. Low Fuse
2. High Fuse
3. Extended Fuse
و بسته به مدل میکروکنترلر، ممکنه تعداد بیتها و تنظیماتش فرق کنه.
یه مثال از دنیای واقعی:
تو یه ATmega328P بخوای از کریستال ۱۶MHz استفاده کنی و بوتلودر هم بخوای، باید فیوزبیتها رو تنظیم کنی مثل:
Low Fuse: 0xFF
High Fuse: 0xDA
Extended Fuse: 0xFD
البته اینو از سایتهایی مثل Engbedded Fuse Calculator راحت درمیاری.
یه تشبیه بانمک:
فیوزبیتها مثل کلیدهای BIOS توی کامپیوترن. یهبار برای همیشه تنظیمشون میکنی تا بدونی کامپیوترت چجوری بوت شه، از کجا بوت شه، با چه تنظیماتی.