جلسه 13: تایمر یک، شمارش ۱۶ بیتی و اندازهگیری پالس
در جلسهٔ 13 دورهٔ آموزش میکروکنترلر ATmega32 به سراغ «تایمر یک، شمارش ۱۶ بیتی و اندازهگیری پالس» میرویم. هدف این است که مفهوم را از مشاهدهٔ واقعی جدا نکنیم: بازه شمارش بزرگتر، مقایسه و مفهوم input capture. این مسیر برای کسی طراحی شده که میخواهد با تراشه AVR یک پروژه قابل توضیح و قابل آزمایش بسازد، نه اینکه فقط نام رجیسترها را حفظ کند. هر بار نسخه دقیق قطعه و ابزار خود را ثبت کنید؛ نمونهٔ ATmega32A در مواردی به دیتاشیت خودش نیاز دارد.
هدف یادگیری و پیشنیاز

پس از این جلسه باید بتوانید بازه شمارش بزرگتر، مقایسه و مفهوم input capture را با زبان خود توضیح دهید، یک آزمون کوچک طراحی کنید و نتیجه را با انتظار مقایسه کنید. پیشنیاز شما شناخت پایههای تغذیه، روش خاموشکردن امن منبع و توانایی خواندن نقشه پایهها از دیتاشیت است. اگر یکی از این موارد را هنوز انجام ندادهاید، ابتدا جلسههای قبل را مرور کنید. نام بسته، شماره قطعه و نوع ابزار را کنار یادداشت آزمایش بنویسید؛ این سه داده در عیبیابی بعدی بسیار کمک میکنند.
وسایل و آمادهسازی
تراشه ATmega32 یا ATmega32A، منبع تغذیه تنظیمشده متناسب با نسخه تراشه، بردبورد یا برد آزمایش، پروگرامر سازگار، مولتیمتر و قطعه مرتبط با «تایمر یک، شمارش ۱۶ بیتی و اندازهگیری پالس» را آماده کنید. پیش از هر جابهجایی سیم، تغذیه را قطع کنید. جهت قرارگیری تراشه، پایههای VCC و GND و AVCC و وضعیت RESET را بر اساس دیتاشیت همان قطعه بررسی کنید. عکسهای این مقاله برای شناخت ظاهریاند و نقشه اتصال نیستند.
اصل فنی به زبان ساده
بازه شمارش بزرگتر، مقایسه و مفهوم input capture. در یک میکروکنترلر، نتیجهٔ نرمافزار به تنظیم سختافزار وابسته است. اگر کلاک واقعی با فرکانسی که کامپایلر فرض میکند فرق داشته باشد، زمان و ارتباطها خطا پیدا میکنند. اگر پایهای همزمان برای چند وظیفه استفاده شود، باید اولویت آنها را مشخص کرد. محدودهٔ ولتاژ و جریان را از جدول الکتریکی دیتاشیت بخوانید و هیچ خروجی را جای منبع تغذیه بار پرمصرف به کار نبرید. یک فرض را در هر مرحله تغییر دهید تا علت هر نتیجه معلوم بماند.

اجرای آزمایش مرحله به مرحله
- سؤال آزمون را بنویسید: «زمان دو رویداد را به تعداد تیک تبدیل کنید و محدوده شمارش را بررسی کنید».
- قطعات و اتصالات را با منبع خاموش و با راهنمای همان برد آماده کنید.
- ولتاژ تغذیه و زمین مشترک را پیش از پروگرام اندازه بگیرید.
- برنامه یا تنظیم لازم را تنها برای همین بخش اجرا کنید و ورودی را تغییر دهید.
- نتیجه را در جدول «ورودی، انتظار، مشاهده، توضیح» ثبت کنید.
زمان دو رویداد را به تعداد تیک تبدیل کنید و محدوده شمارش را بررسی کنید. بار اول از یک وضعیت ساده و بدون قطعات اضافی شروع کنید. بار دوم مقدار ورودی یا شرط آزمایش را تغییر دهید تا تفاوت نتیجه را ببینید. بار سوم همان آزمایش را بعد از قطع و وصل تغذیه تکرار کنید؛ پایداری رفتار از یک مشاهده تصادفی ارزشمندتر است. هنگام تغییر تنظیمات برنامه، نام فایل و تاریخ آزمایش را ثبت کنید تا نسخههای مختلف با هم اشتباه نشوند.
چه نتیجهای درست است؟
اندازه پالس باید با واحد و فرکانس شمارنده گزارش شود. انتظار خود را پیش از اجرای آزمایش بنویسید و بعد داده واقعی را کنار آن قرار دهید. اگر مشاهده و انتظار تفاوت دارند، ابتدا دستگاه اندازهگیری و تغذیه را بررسی کنید، سپس سراغ برنامه بروید. صرف روشن شدن LED یا نمایش یک عدد نشانه صحت کامل سیستم نیست؛ برای هر ورودی دستکم دو حالت متفاوت را امتحان کنید و مقدارهای مرزی را نیز در نظر بگیرید.

خطاهای رایج و روش پیدا کردن علت
سرریز نادیدهگرفتهشده باعث عدد ظاهراً معتبر اما غلط میشود. برای عیبیابی، اول وجود و مقدار تغذیه را در محل تراشه بسنجید، بعد زمین، وضعیت ریست و منبع کلاک را بررسی کنید. پس از آن اتصالات رابط و نام پایهها را با دیتاشیت تطبیق دهید. اگر پیام خطای ابزار دارید، متن دقیق پیام و تنظیمات پروژه را نگه دارید. تغییر همزمان چند سیم یا چند سطر برنامه باعث میشود نفهمید کدام تغییر مشکل را حل کرده است.
تمرین تکمیلی و معیار ارزیابی
تمرین این جلسه آن است که آزمایش «تایمر یک، شمارش ۱۶ بیتی و اندازهگیری پالس» را یک بار با شرایط اولیه و یک بار با یک تغییر کنترلشده اجرا کنید. در گزارش کوتاه خود هدف، قطعات، نسخه تراشه، پیشبینی، نتیجه و علت تفاوت احتمالی را بنویسید. معیار موفقیت فقط گرفتن خروجی نیست: باید بتوانید توضیح دهید چرا نتیجه به دست آمد، کدام بخش آن را اندازه گرفتید و برای تکرار آزمون چه تنظیماتی لازم است. اگر به نتیجه نرسیدید، گزارش خطا هنوز یک خروجی آموزشی مفید است.
نکته طراحی برای پروژه واقعی
در محصول واقعی، «تایمر یک، شمارش ۱۶ بیتی و اندازهگیری پالس» باید با دیگر بخشها هماهنگ شود. مصرف حافظه، زمان پاسخ، خطای اندازهگیری، نویز و رفتار هنگام روشن شدن دوباره را جدا بررسی کنید. پایههایی که نقش جایگزین دارند را روی نقشه پروژه علامت بزنید تا هنگام افزودن نمایشگر یا ارتباط سریال تداخل ایجاد نشود. قبل از مونتاژ دائمی، یک آزمایش کوچک با همان نوع تغذیه و همان قطعات نهایی انجام دهید. عکس نمایشی قطعات جایگزین نقشه و دیتاشیت نیست.
پرسشهای کوتاه
آیا همین مراحل برای همه نسخهها یکسان است؟ خیر؛ نام دقیق تراشه، بستهبندی و دیتاشیت را ملاک بگیرید. آیا بدون ابزار اندازهگیری میتوان نتیجه را تأیید کرد؟ برای بعضی رفتارها مشاهده اولیه ممکن است، اما برای ولتاژ، زمانبندی و خطاهای متناوب اندازهگیری لازم است. اگر آزمایش کار نکرد از کجا شروع کنم؟ از تغذیه و زمین و ریست شروع کنید و تنها بعد از تأیید آنها سراغ تنظیمات کلاک و نرمافزار بروید.
جمعبندی و ادامه مسیر
در این درس، «تایمر یک، شمارش ۱۶ بیتی و اندازهگیری پالس» را به یک پرسش قابل آزمون تبدیل کردیم و معیار مشاهده را مشخص کردیم. نتیجهٔ خود را با یک عکس از چیدمان قطعات، فایل کد یا تنظیمات و جدول اندازهگیری نگه دارید. جلسه بعد بر همین نتیجه تکیه میکند؛ اگر خروجی هنوز پایدار نیست، قبل از رفتن به بخش بعدی علت را پیدا کنید. پیوندهای دوره: جلسه قبل جلسه بعد.
منبع فنی: دیتاشیت رسمی ATmega32A از Microchip. مشخصات نسخهٔ ATmega32 را با سند همان مدل تطبیق دهید.
ثبت دقیق آزمایش تایمر یک، شمارش ۱۶ بیتی و اندازهگیری پالس
برای اینکه شخص دیگری بتواند کارتان را تکرار کند، فقط نوشتن «کار کرد» کافی نیست. نام قطعه، نوع پروگرامر، منبع کلاک، ولتاژ اندازهگیریشده، نسخه برنامه و شرایط ورودی را ثبت کنید. سپس خروجی مشاهدهشده را با واحد یا وضعیت منطقی بنویسید. اگر چند بار آزمون میکنید، نتیجه هر بار را جدا بگذارید. تفاوت بین آزمونها ممکن است از تماس بردبورد، افت تغذیه یا تغییر تنظیمات باشد. گزارش دقیق به شما کمک میکند هنگام افزودن بخش بعدی، نقطهٔ سالم قبلی را بشناسید.
آزمون مرزی و بازبینی
بعد از آزمون اصلی، حالت حداقل و حداکثر ورودی مجاز را از منظر منطقی بررسی کنید؛ از حدود الکتریکی دیتاشیت فراتر نروید. سیستم را یک بار بدون ورودی اختیاری و یک بار با ورودی معتبر راهاندازی کنید. در هر دو حالت، خروجی باید تعریفشده باشد. اگر مقدار ناپایدار میبینید، قبل از افزودن تأخیر نرمافزاری، کیفیت اتصال و منبع تغذیه را بسنجید. برای «تایمر یک، شمارش ۱۶ بیتی و اندازهگیری پالس» این روش باعث میشود یک نتیجه اتفاقی را با عملکرد قابل اعتماد اشتباه نگیرید.
ارتباط این جلسه با کل دوره
کار روی بازه شمارش بزرگتر، مقایسه و مفهوم input capture مستقل از بقیه مدار نیست. هر تصمیم درباره پایهها، کلاک و زمان پاسخ روی ارتباط با نمایشگر، حسگر و حافظه اثر میگذارد. هنگام توسعه، یک جدول تخصیص پایه تهیه کنید و کنار هر پایه وظیفه، جهت و وضعیت شروع را بنویسید. اگر یک پایه بعداً برای قابلیت دیگری لازم شد، پیش از جابهجایی سختافزار، کاربرد آن را در همه بخشهای برنامه جستوجو کنید. این عادت از خطاهای دشوار در پروژه نهایی جلوگیری میکند.
چکلیست پایان جلسه
آیا نسخه تراشه مشخص است؟ آیا ولتاژ در محدوده مجاز اندازهگیری شده؟ آیا قطعه جانبی با سطح سیگنال سازگار است؟ آیا انتظار قبل از مشاهده ثبت شده؟ آیا دستکم دو حالت ورودی آزموده شده؟ آیا نتیجه و خطاها قابل تکرارند؟ اگر پاسخی نامشخص است، همان مورد را به تمرین بعدی تبدیل کنید. با این روش هر جلسه یک خروجی مستند به پروژه اضافه میکند و محتوای آموزش از یک توضیح صرف به راهنمای آزمایش تبدیل میشود.
جلسه 12: تایمر صفر برای تیک زمانی
در جلسهٔ 12 دورهٔ آموزش میکروکنترلر ATmega32 به سراغ «تایمر صفر برای تیک زمانی» میرویم. هدف این است که مفهوم را از مشاهدهٔ واقعی جدا نکنیم: تقسیمکننده کلاک، شمارش تایمر، سرریز و مقایسه با هدف تولید تیک. این مسیر برای کسی طراحی شده که میخواهد با تراشه AVR یک پروژه قابل توضیح و قابل آزمایش بسازد، نه اینکه فقط نام رجیسترها را حفظ کند. هر بار نسخه دقیق قطعه و ابزار خود را ثبت کنید؛ نمونهٔ ATmega32A در مواردی به دیتاشیت خودش نیاز دارد.
هدف یادگیری و پیشنیاز

پس از این جلسه باید بتوانید تقسیمکننده کلاک، شمارش تایمر، سرریز و مقایسه با هدف تولید تیک را با زبان خود توضیح دهید، یک آزمون کوچک طراحی کنید و نتیجه را با انتظار مقایسه کنید. پیشنیاز شما شناخت پایههای تغذیه، روش خاموشکردن امن منبع و توانایی خواندن نقشه پایهها از دیتاشیت است. اگر یکی از این موارد را هنوز انجام ندادهاید، ابتدا جلسههای قبل را مرور کنید. نام بسته، شماره قطعه و نوع ابزار را کنار یادداشت آزمایش بنویسید؛ این سه داده در عیبیابی بعدی بسیار کمک میکنند.
وسایل و آمادهسازی
تراشه ATmega32 یا ATmega32A، منبع تغذیه تنظیمشده متناسب با نسخه تراشه، بردبورد یا برد آزمایش، پروگرامر سازگار، مولتیمتر و قطعه مرتبط با «تایمر صفر برای تیک زمانی» را آماده کنید. پیش از هر جابهجایی سیم، تغذیه را قطع کنید. جهت قرارگیری تراشه، پایههای VCC و GND و AVCC و وضعیت RESET را بر اساس دیتاشیت همان قطعه بررسی کنید. عکسهای این مقاله برای شناخت ظاهریاند و نقشه اتصال نیستند.
اصل فنی به زبان ساده
تقسیمکننده کلاک، شمارش تایمر، سرریز و مقایسه با هدف تولید تیک. در یک میکروکنترلر، نتیجهٔ نرمافزار به تنظیم سختافزار وابسته است. اگر کلاک واقعی با فرکانسی که کامپایلر فرض میکند فرق داشته باشد، زمان و ارتباطها خطا پیدا میکنند. اگر پایهای همزمان برای چند وظیفه استفاده شود، باید اولویت آنها را مشخص کرد. محدودهٔ ولتاژ و جریان را از جدول الکتریکی دیتاشیت بخوانید و هیچ خروجی را جای منبع تغذیه بار پرمصرف به کار نبرید. یک فرض را در هر مرحله تغییر دهید تا علت هر نتیجه معلوم بماند.

اجرای آزمایش مرحله به مرحله
- سؤال آزمون را بنویسید: «یک تیک دورهای بسازید و مقدار زمان مشاهدهشده را با محاسبه از فرکانس واقعی مقایسه کنید».
- قطعات و اتصالات را با منبع خاموش و با راهنمای همان برد آماده کنید.
- ولتاژ تغذیه و زمین مشترک را پیش از پروگرام اندازه بگیرید.
- برنامه یا تنظیم لازم را تنها برای همین بخش اجرا کنید و ورودی را تغییر دهید.
- نتیجه را در جدول «ورودی، انتظار، مشاهده، توضیح» ثبت کنید.
یک تیک دورهای بسازید و مقدار زمان مشاهدهشده را با محاسبه از فرکانس واقعی مقایسه کنید. بار اول از یک وضعیت ساده و بدون قطعات اضافی شروع کنید. بار دوم مقدار ورودی یا شرط آزمایش را تغییر دهید تا تفاوت نتیجه را ببینید. بار سوم همان آزمایش را بعد از قطع و وصل تغذیه تکرار کنید؛ پایداری رفتار از یک مشاهده تصادفی ارزشمندتر است. هنگام تغییر تنظیمات برنامه، نام فایل و تاریخ آزمایش را ثبت کنید تا نسخههای مختلف با هم اشتباه نشوند.
چه نتیجهای درست است؟
انحراف زمان نشان میدهد تنظیم کلاک یا prescaler نیاز به بررسی دارد. انتظار خود را پیش از اجرای آزمایش بنویسید و بعد داده واقعی را کنار آن قرار دهید. اگر مشاهده و انتظار تفاوت دارند، ابتدا دستگاه اندازهگیری و تغذیه را بررسی کنید، سپس سراغ برنامه بروید. صرف روشن شدن LED یا نمایش یک عدد نشانه صحت کامل سیستم نیست؛ برای هر ورودی دستکم دو حالت متفاوت را امتحان کنید و مقدارهای مرزی را نیز در نظر بگیرید.

خطاهای رایج و روش پیدا کردن علت
کپی مقدار رجیستر از تراشه دیگر بدون خواندن دیتاشیت خطا ایجاد میکند. برای عیبیابی، اول وجود و مقدار تغذیه را در محل تراشه بسنجید، بعد زمین، وضعیت ریست و منبع کلاک را بررسی کنید. پس از آن اتصالات رابط و نام پایهها را با دیتاشیت تطبیق دهید. اگر پیام خطای ابزار دارید، متن دقیق پیام و تنظیمات پروژه را نگه دارید. تغییر همزمان چند سیم یا چند سطر برنامه باعث میشود نفهمید کدام تغییر مشکل را حل کرده است.
تمرین تکمیلی و معیار ارزیابی
تمرین این جلسه آن است که آزمایش «تایمر صفر برای تیک زمانی» را یک بار با شرایط اولیه و یک بار با یک تغییر کنترلشده اجرا کنید. در گزارش کوتاه خود هدف، قطعات، نسخه تراشه، پیشبینی، نتیجه و علت تفاوت احتمالی را بنویسید. معیار موفقیت فقط گرفتن خروجی نیست: باید بتوانید توضیح دهید چرا نتیجه به دست آمد، کدام بخش آن را اندازه گرفتید و برای تکرار آزمون چه تنظیماتی لازم است. اگر به نتیجه نرسیدید، گزارش خطا هنوز یک خروجی آموزشی مفید است.
نکته طراحی برای پروژه واقعی
در محصول واقعی، «تایمر صفر برای تیک زمانی» باید با دیگر بخشها هماهنگ شود. مصرف حافظه، زمان پاسخ، خطای اندازهگیری، نویز و رفتار هنگام روشن شدن دوباره را جدا بررسی کنید. پایههایی که نقش جایگزین دارند را روی نقشه پروژه علامت بزنید تا هنگام افزودن نمایشگر یا ارتباط سریال تداخل ایجاد نشود. قبل از مونتاژ دائمی، یک آزمایش کوچک با همان نوع تغذیه و همان قطعات نهایی انجام دهید. عکس نمایشی قطعات جایگزین نقشه و دیتاشیت نیست.
پرسشهای کوتاه
آیا همین مراحل برای همه نسخهها یکسان است؟ خیر؛ نام دقیق تراشه، بستهبندی و دیتاشیت را ملاک بگیرید. آیا بدون ابزار اندازهگیری میتوان نتیجه را تأیید کرد؟ برای بعضی رفتارها مشاهده اولیه ممکن است، اما برای ولتاژ، زمانبندی و خطاهای متناوب اندازهگیری لازم است. اگر آزمایش کار نکرد از کجا شروع کنم؟ از تغذیه و زمین و ریست شروع کنید و تنها بعد از تأیید آنها سراغ تنظیمات کلاک و نرمافزار بروید.
جمعبندی و ادامه مسیر
در این درس، «تایمر صفر برای تیک زمانی» را به یک پرسش قابل آزمون تبدیل کردیم و معیار مشاهده را مشخص کردیم. نتیجهٔ خود را با یک عکس از چیدمان قطعات، فایل کد یا تنظیمات و جدول اندازهگیری نگه دارید. جلسه بعد بر همین نتیجه تکیه میکند؛ اگر خروجی هنوز پایدار نیست، قبل از رفتن به بخش بعدی علت را پیدا کنید. پیوندهای دوره: جلسه قبل جلسه بعد.
منبع فنی: دیتاشیت رسمی ATmega32A از Microchip. مشخصات نسخهٔ ATmega32 را با سند همان مدل تطبیق دهید.
ثبت دقیق آزمایش تایمر صفر برای تیک زمانی
برای اینکه شخص دیگری بتواند کارتان را تکرار کند، فقط نوشتن «کار کرد» کافی نیست. نام قطعه، نوع پروگرامر، منبع کلاک، ولتاژ اندازهگیریشده، نسخه برنامه و شرایط ورودی را ثبت کنید. سپس خروجی مشاهدهشده را با واحد یا وضعیت منطقی بنویسید. اگر چند بار آزمون میکنید، نتیجه هر بار را جدا بگذارید. تفاوت بین آزمونها ممکن است از تماس بردبورد، افت تغذیه یا تغییر تنظیمات باشد. گزارش دقیق به شما کمک میکند هنگام افزودن بخش بعدی، نقطهٔ سالم قبلی را بشناسید.
آزمون مرزی و بازبینی
بعد از آزمون اصلی، حالت حداقل و حداکثر ورودی مجاز را از منظر منطقی بررسی کنید؛ از حدود الکتریکی دیتاشیت فراتر نروید. سیستم را یک بار بدون ورودی اختیاری و یک بار با ورودی معتبر راهاندازی کنید. در هر دو حالت، خروجی باید تعریفشده باشد. اگر مقدار ناپایدار میبینید، قبل از افزودن تأخیر نرمافزاری، کیفیت اتصال و منبع تغذیه را بسنجید. برای «تایمر صفر برای تیک زمانی» این روش باعث میشود یک نتیجه اتفاقی را با عملکرد قابل اعتماد اشتباه نگیرید.
ارتباط این جلسه با کل دوره
کار روی تقسیمکننده کلاک، شمارش تایمر، سرریز و مقایسه با هدف تولید تیک مستقل از بقیه مدار نیست. هر تصمیم درباره پایهها، کلاک و زمان پاسخ روی ارتباط با نمایشگر، حسگر و حافظه اثر میگذارد. هنگام توسعه، یک جدول تخصیص پایه تهیه کنید و کنار هر پایه وظیفه، جهت و وضعیت شروع را بنویسید. اگر یک پایه بعداً برای قابلیت دیگری لازم شد، پیش از جابهجایی سختافزار، کاربرد آن را در همه بخشهای برنامه جستوجو کنید. این عادت از خطاهای دشوار در پروژه نهایی جلوگیری میکند.
چکلیست پایان جلسه
آیا نسخه تراشه مشخص است؟ آیا ولتاژ در محدوده مجاز اندازهگیری شده؟ آیا قطعه جانبی با سطح سیگنال سازگار است؟ آیا انتظار قبل از مشاهده ثبت شده؟ آیا دستکم دو حالت ورودی آزموده شده؟ آیا نتیجه و خطاها قابل تکرارند؟ اگر پاسخی نامشخص است، همان مورد را به تمرین بعدی تبدیل کنید. با این روش هر جلسه یک خروجی مستند به پروژه اضافه میکند و محتوای آموزش از یک توضیح صرف به راهنمای آزمایش تبدیل میشود.
جلسه 11: وقفه خارجی و مدیریت رویداد
در جلسهٔ 11 دورهٔ آموزش میکروکنترلر ATmega32 به سراغ «وقفه خارجی و مدیریت رویداد» میرویم. هدف این است که مفهوم را از مشاهدهٔ واقعی جدا نکنیم: بردار وقفه، پرچم رویداد، تابع ISR و اشتراک داده با حلقه اصلی. این مسیر برای کسی طراحی شده که میخواهد با تراشه AVR یک پروژه قابل توضیح و قابل آزمایش بسازد، نه اینکه فقط نام رجیسترها را حفظ کند. هر بار نسخه دقیق قطعه و ابزار خود را ثبت کنید؛ نمونهٔ ATmega32A در مواردی به دیتاشیت خودش نیاز دارد.
هدف یادگیری و پیشنیاز

پس از این جلسه باید بتوانید بردار وقفه، پرچم رویداد، تابع ISR و اشتراک داده با حلقه اصلی را با زبان خود توضیح دهید، یک آزمون کوچک طراحی کنید و نتیجه را با انتظار مقایسه کنید. پیشنیاز شما شناخت پایههای تغذیه، روش خاموشکردن امن منبع و توانایی خواندن نقشه پایهها از دیتاشیت است. اگر یکی از این موارد را هنوز انجام ندادهاید، ابتدا جلسههای قبل را مرور کنید. نام بسته، شماره قطعه و نوع ابزار را کنار یادداشت آزمایش بنویسید؛ این سه داده در عیبیابی بعدی بسیار کمک میکنند.
وسایل و آمادهسازی
تراشه ATmega32 یا ATmega32A، منبع تغذیه تنظیمشده متناسب با نسخه تراشه، بردبورد یا برد آزمایش، پروگرامر سازگار، مولتیمتر و قطعه مرتبط با «وقفه خارجی و مدیریت رویداد» را آماده کنید. پیش از هر جابهجایی سیم، تغذیه را قطع کنید. جهت قرارگیری تراشه، پایههای VCC و GND و AVCC و وضعیت RESET را بر اساس دیتاشیت همان قطعه بررسی کنید. عکسهای این مقاله برای شناخت ظاهریاند و نقشه اتصال نیستند.
اصل فنی به زبان ساده
بردار وقفه، پرچم رویداد، تابع ISR و اشتراک داده با حلقه اصلی. در یک میکروکنترلر، نتیجهٔ نرمافزار به تنظیم سختافزار وابسته است. اگر کلاک واقعی با فرکانسی که کامپایلر فرض میکند فرق داشته باشد، زمان و ارتباطها خطا پیدا میکنند. اگر پایهای همزمان برای چند وظیفه استفاده شود، باید اولویت آنها را مشخص کرد. محدودهٔ ولتاژ و جریان را از جدول الکتریکی دیتاشیت بخوانید و هیچ خروجی را جای منبع تغذیه بار پرمصرف به کار نبرید. یک فرض را در هر مرحله تغییر دهید تا علت هر نتیجه معلوم بماند.

اجرای آزمایش مرحله به مرحله
- سؤال آزمون را بنویسید: «یک شمارنده رویداد سبک بسازید و پردازش یا چاپ داده را در حلقه اصلی انجام دهید».
- قطعات و اتصالات را با منبع خاموش و با راهنمای همان برد آماده کنید.
- ولتاژ تغذیه و زمین مشترک را پیش از پروگرام اندازه بگیرید.
- برنامه یا تنظیم لازم را تنها برای همین بخش اجرا کنید و ورودی را تغییر دهید.
- نتیجه را در جدول «ورودی، انتظار، مشاهده، توضیح» ثبت کنید.
یک شمارنده رویداد سبک بسازید و پردازش یا چاپ داده را در حلقه اصلی انجام دهید. بار اول از یک وضعیت ساده و بدون قطعات اضافی شروع کنید. بار دوم مقدار ورودی یا شرط آزمایش را تغییر دهید تا تفاوت نتیجه را ببینید. بار سوم همان آزمایش را بعد از قطع و وصل تغذیه تکرار کنید؛ پایداری رفتار از یک مشاهده تصادفی ارزشمندتر است. هنگام تغییر تنظیمات برنامه، نام فایل و تاریخ آزمایش را ثبت کنید تا نسخههای مختلف با هم اشتباه نشوند.
چه نتیجهای درست است؟
افزایش شمارنده با رخداد ورودی قابل بررسی است. انتظار خود را پیش از اجرای آزمایش بنویسید و بعد داده واقعی را کنار آن قرار دهید. اگر مشاهده و انتظار تفاوت دارند، ابتدا دستگاه اندازهگیری و تغذیه را بررسی کنید، سپس سراغ برنامه بروید. صرف روشن شدن LED یا نمایش یک عدد نشانه صحت کامل سیستم نیست؛ برای هر ورودی دستکم دو حالت متفاوت را امتحان کنید و مقدارهای مرزی را نیز در نظر بگیرید.

خطاهای رایج و روش پیدا کردن علت
انجام کار طولانی در ISR پاسخ بقیه وقفهها را عقب میاندازد. برای عیبیابی، اول وجود و مقدار تغذیه را در محل تراشه بسنجید، بعد زمین، وضعیت ریست و منبع کلاک را بررسی کنید. پس از آن اتصالات رابط و نام پایهها را با دیتاشیت تطبیق دهید. اگر پیام خطای ابزار دارید، متن دقیق پیام و تنظیمات پروژه را نگه دارید. تغییر همزمان چند سیم یا چند سطر برنامه باعث میشود نفهمید کدام تغییر مشکل را حل کرده است.
تمرین تکمیلی و معیار ارزیابی
تمرین این جلسه آن است که آزمایش «وقفه خارجی و مدیریت رویداد» را یک بار با شرایط اولیه و یک بار با یک تغییر کنترلشده اجرا کنید. در گزارش کوتاه خود هدف، قطعات، نسخه تراشه، پیشبینی، نتیجه و علت تفاوت احتمالی را بنویسید. معیار موفقیت فقط گرفتن خروجی نیست: باید بتوانید توضیح دهید چرا نتیجه به دست آمد، کدام بخش آن را اندازه گرفتید و برای تکرار آزمون چه تنظیماتی لازم است. اگر به نتیجه نرسیدید، گزارش خطا هنوز یک خروجی آموزشی مفید است.
نکته طراحی برای پروژه واقعی
در محصول واقعی، «وقفه خارجی و مدیریت رویداد» باید با دیگر بخشها هماهنگ شود. مصرف حافظه، زمان پاسخ، خطای اندازهگیری، نویز و رفتار هنگام روشن شدن دوباره را جدا بررسی کنید. پایههایی که نقش جایگزین دارند را روی نقشه پروژه علامت بزنید تا هنگام افزودن نمایشگر یا ارتباط سریال تداخل ایجاد نشود. قبل از مونتاژ دائمی، یک آزمایش کوچک با همان نوع تغذیه و همان قطعات نهایی انجام دهید. عکس نمایشی قطعات جایگزین نقشه و دیتاشیت نیست.
پرسشهای کوتاه
آیا همین مراحل برای همه نسخهها یکسان است؟ خیر؛ نام دقیق تراشه، بستهبندی و دیتاشیت را ملاک بگیرید. آیا بدون ابزار اندازهگیری میتوان نتیجه را تأیید کرد؟ برای بعضی رفتارها مشاهده اولیه ممکن است، اما برای ولتاژ، زمانبندی و خطاهای متناوب اندازهگیری لازم است. اگر آزمایش کار نکرد از کجا شروع کنم؟ از تغذیه و زمین و ریست شروع کنید و تنها بعد از تأیید آنها سراغ تنظیمات کلاک و نرمافزار بروید.
جمعبندی و ادامه مسیر
در این درس، «وقفه خارجی و مدیریت رویداد» را به یک پرسش قابل آزمون تبدیل کردیم و معیار مشاهده را مشخص کردیم. نتیجهٔ خود را با یک عکس از چیدمان قطعات، فایل کد یا تنظیمات و جدول اندازهگیری نگه دارید. جلسه بعد بر همین نتیجه تکیه میکند؛ اگر خروجی هنوز پایدار نیست، قبل از رفتن به بخش بعدی علت را پیدا کنید. پیوندهای دوره: جلسه قبل جلسه بعد.
منبع فنی: دیتاشیت رسمی ATmega32A از Microchip. مشخصات نسخهٔ ATmega32 را با سند همان مدل تطبیق دهید.
ثبت دقیق آزمایش وقفه خارجی و مدیریت رویداد
برای اینکه شخص دیگری بتواند کارتان را تکرار کند، فقط نوشتن «کار کرد» کافی نیست. نام قطعه، نوع پروگرامر، منبع کلاک، ولتاژ اندازهگیریشده، نسخه برنامه و شرایط ورودی را ثبت کنید. سپس خروجی مشاهدهشده را با واحد یا وضعیت منطقی بنویسید. اگر چند بار آزمون میکنید، نتیجه هر بار را جدا بگذارید. تفاوت بین آزمونها ممکن است از تماس بردبورد، افت تغذیه یا تغییر تنظیمات باشد. گزارش دقیق به شما کمک میکند هنگام افزودن بخش بعدی، نقطهٔ سالم قبلی را بشناسید.
آزمون مرزی و بازبینی
بعد از آزمون اصلی، حالت حداقل و حداکثر ورودی مجاز را از منظر منطقی بررسی کنید؛ از حدود الکتریکی دیتاشیت فراتر نروید. سیستم را یک بار بدون ورودی اختیاری و یک بار با ورودی معتبر راهاندازی کنید. در هر دو حالت، خروجی باید تعریفشده باشد. اگر مقدار ناپایدار میبینید، قبل از افزودن تأخیر نرمافزاری، کیفیت اتصال و منبع تغذیه را بسنجید. برای «وقفه خارجی و مدیریت رویداد» این روش باعث میشود یک نتیجه اتفاقی را با عملکرد قابل اعتماد اشتباه نگیرید.
ارتباط این جلسه با کل دوره
کار روی بردار وقفه، پرچم رویداد، تابع ISR و اشتراک داده با حلقه اصلی مستقل از بقیه مدار نیست. هر تصمیم درباره پایهها، کلاک و زمان پاسخ روی ارتباط با نمایشگر، حسگر و حافظه اثر میگذارد. هنگام توسعه، یک جدول تخصیص پایه تهیه کنید و کنار هر پایه وظیفه، جهت و وضعیت شروع را بنویسید. اگر یک پایه بعداً برای قابلیت دیگری لازم شد، پیش از جابهجایی سختافزار، کاربرد آن را در همه بخشهای برنامه جستوجو کنید. این عادت از خطاهای دشوار در پروژه نهایی جلوگیری میکند.
چکلیست پایان جلسه
آیا نسخه تراشه مشخص است؟ آیا ولتاژ در محدوده مجاز اندازهگیری شده؟ آیا قطعه جانبی با سطح سیگنال سازگار است؟ آیا انتظار قبل از مشاهده ثبت شده؟ آیا دستکم دو حالت ورودی آزموده شده؟ آیا نتیجه و خطاها قابل تکرارند؟ اگر پاسخی نامشخص است، همان مورد را به تمرین بعدی تبدیل کنید. با این روش هر جلسه یک خروجی مستند به پروژه اضافه میکند و محتوای آموزش از یک توضیح صرف به راهنمای آزمایش تبدیل میشود.
جلسه 10: زمانبندی غیرمسدودکننده و ماشین حالت
در جلسهٔ 10 دورهٔ آموزش میکروکنترلر ATmega32 به سراغ «زمانبندی غیرمسدودکننده و ماشین حالت» میرویم. هدف این است که مفهوم را از مشاهدهٔ واقعی جدا نکنیم: حلقه اصلی، شمارنده زمان، وضعیتهای مجزا و پرهیز از توقف طولانی. این مسیر برای کسی طراحی شده که میخواهد با تراشه AVR یک پروژه قابل توضیح و قابل آزمایش بسازد، نه اینکه فقط نام رجیسترها را حفظ کند. هر بار نسخه دقیق قطعه و ابزار خود را ثبت کنید؛ نمونهٔ ATmega32A در مواردی به دیتاشیت خودش نیاز دارد.
هدف یادگیری و پیشنیاز

پس از این جلسه باید بتوانید حلقه اصلی، شمارنده زمان، وضعیتهای مجزا و پرهیز از توقف طولانی را با زبان خود توضیح دهید، یک آزمون کوچک طراحی کنید و نتیجه را با انتظار مقایسه کنید. پیشنیاز شما شناخت پایههای تغذیه، روش خاموشکردن امن منبع و توانایی خواندن نقشه پایهها از دیتاشیت است. اگر یکی از این موارد را هنوز انجام ندادهاید، ابتدا جلسههای قبل را مرور کنید. نام بسته، شماره قطعه و نوع ابزار را کنار یادداشت آزمایش بنویسید؛ این سه داده در عیبیابی بعدی بسیار کمک میکنند.
وسایل و آمادهسازی
تراشه ATmega32 یا ATmega32A، منبع تغذیه تنظیمشده متناسب با نسخه تراشه، بردبورد یا برد آزمایش، پروگرامر سازگار، مولتیمتر و قطعه مرتبط با «زمانبندی غیرمسدودکننده و ماشین حالت» را آماده کنید. پیش از هر جابهجایی سیم، تغذیه را قطع کنید. جهت قرارگیری تراشه، پایههای VCC و GND و AVCC و وضعیت RESET را بر اساس دیتاشیت همان قطعه بررسی کنید. عکسهای این مقاله برای شناخت ظاهریاند و نقشه اتصال نیستند.
اصل فنی به زبان ساده
حلقه اصلی، شمارنده زمان، وضعیتهای مجزا و پرهیز از توقف طولانی. در یک میکروکنترلر، نتیجهٔ نرمافزار به تنظیم سختافزار وابسته است. اگر کلاک واقعی با فرکانسی که کامپایلر فرض میکند فرق داشته باشد، زمان و ارتباطها خطا پیدا میکنند. اگر پایهای همزمان برای چند وظیفه استفاده شود، باید اولویت آنها را مشخص کرد. محدودهٔ ولتاژ و جریان را از جدول الکتریکی دیتاشیت بخوانید و هیچ خروجی را جای منبع تغذیه بار پرمصرف به کار نبرید. یک فرض را در هر مرحله تغییر دهید تا علت هر نتیجه معلوم بماند.

اجرای آزمایش مرحله به مرحله
- سؤال آزمون را بنویسید: «چشمکزن را همزمان با خواندن کلید اجرا کنید و تأخیر پاسخ را مقایسه کنید».
- قطعات و اتصالات را با منبع خاموش و با راهنمای همان برد آماده کنید.
- ولتاژ تغذیه و زمین مشترک را پیش از پروگرام اندازه بگیرید.
- برنامه یا تنظیم لازم را تنها برای همین بخش اجرا کنید و ورودی را تغییر دهید.
- نتیجه را در جدول «ورودی، انتظار، مشاهده، توضیح» ثبت کنید.
چشمکزن را همزمان با خواندن کلید اجرا کنید و تأخیر پاسخ را مقایسه کنید. بار اول از یک وضعیت ساده و بدون قطعات اضافی شروع کنید. بار دوم مقدار ورودی یا شرط آزمایش را تغییر دهید تا تفاوت نتیجه را ببینید. بار سوم همان آزمایش را بعد از قطع و وصل تغذیه تکرار کنید؛ پایداری رفتار از یک مشاهده تصادفی ارزشمندتر است. هنگام تغییر تنظیمات برنامه، نام فایل و تاریخ آزمایش را ثبت کنید تا نسخههای مختلف با هم اشتباه نشوند.
چه نتیجهای درست است؟
برنامه هنگام انتظار برای زمان بعدی همچنان ورودی را بررسی میکند. انتظار خود را پیش از اجرای آزمایش بنویسید و بعد داده واقعی را کنار آن قرار دهید. اگر مشاهده و انتظار تفاوت دارند، ابتدا دستگاه اندازهگیری و تغذیه را بررسی کنید، سپس سراغ برنامه بروید. صرف روشن شدن LED یا نمایش یک عدد نشانه صحت کامل سیستم نیست؛ برای هر ورودی دستکم دو حالت متفاوت را امتحان کنید و مقدارهای مرزی را نیز در نظر بگیرید.

خطاهای رایج و روش پیدا کردن علت
تأخیرهای طولانی باعث از دست رفتن رویدادهای کوتاه میشوند. برای عیبیابی، اول وجود و مقدار تغذیه را در محل تراشه بسنجید، بعد زمین، وضعیت ریست و منبع کلاک را بررسی کنید. پس از آن اتصالات رابط و نام پایهها را با دیتاشیت تطبیق دهید. اگر پیام خطای ابزار دارید، متن دقیق پیام و تنظیمات پروژه را نگه دارید. تغییر همزمان چند سیم یا چند سطر برنامه باعث میشود نفهمید کدام تغییر مشکل را حل کرده است.
تمرین تکمیلی و معیار ارزیابی
تمرین این جلسه آن است که آزمایش «زمانبندی غیرمسدودکننده و ماشین حالت» را یک بار با شرایط اولیه و یک بار با یک تغییر کنترلشده اجرا کنید. در گزارش کوتاه خود هدف، قطعات، نسخه تراشه، پیشبینی، نتیجه و علت تفاوت احتمالی را بنویسید. معیار موفقیت فقط گرفتن خروجی نیست: باید بتوانید توضیح دهید چرا نتیجه به دست آمد، کدام بخش آن را اندازه گرفتید و برای تکرار آزمون چه تنظیماتی لازم است. اگر به نتیجه نرسیدید، گزارش خطا هنوز یک خروجی آموزشی مفید است.
نکته طراحی برای پروژه واقعی
در محصول واقعی، «زمانبندی غیرمسدودکننده و ماشین حالت» باید با دیگر بخشها هماهنگ شود. مصرف حافظه، زمان پاسخ، خطای اندازهگیری، نویز و رفتار هنگام روشن شدن دوباره را جدا بررسی کنید. پایههایی که نقش جایگزین دارند را روی نقشه پروژه علامت بزنید تا هنگام افزودن نمایشگر یا ارتباط سریال تداخل ایجاد نشود. قبل از مونتاژ دائمی، یک آزمایش کوچک با همان نوع تغذیه و همان قطعات نهایی انجام دهید. عکس نمایشی قطعات جایگزین نقشه و دیتاشیت نیست.
پرسشهای کوتاه
آیا همین مراحل برای همه نسخهها یکسان است؟ خیر؛ نام دقیق تراشه، بستهبندی و دیتاشیت را ملاک بگیرید. آیا بدون ابزار اندازهگیری میتوان نتیجه را تأیید کرد؟ برای بعضی رفتارها مشاهده اولیه ممکن است، اما برای ولتاژ، زمانبندی و خطاهای متناوب اندازهگیری لازم است. اگر آزمایش کار نکرد از کجا شروع کنم؟ از تغذیه و زمین و ریست شروع کنید و تنها بعد از تأیید آنها سراغ تنظیمات کلاک و نرمافزار بروید.
جمعبندی و ادامه مسیر
در این درس، «زمانبندی غیرمسدودکننده و ماشین حالت» را به یک پرسش قابل آزمون تبدیل کردیم و معیار مشاهده را مشخص کردیم. نتیجهٔ خود را با یک عکس از چیدمان قطعات، فایل کد یا تنظیمات و جدول اندازهگیری نگه دارید. جلسه بعد بر همین نتیجه تکیه میکند؛ اگر خروجی هنوز پایدار نیست، قبل از رفتن به بخش بعدی علت را پیدا کنید. پیوندهای دوره: جلسه قبل جلسه بعد.
منبع فنی: دیتاشیت رسمی ATmega32A از Microchip. مشخصات نسخهٔ ATmega32 را با سند همان مدل تطبیق دهید.
ثبت دقیق آزمایش زمانبندی غیرمسدودکننده و ماشین حالت
برای اینکه شخص دیگری بتواند کارتان را تکرار کند، فقط نوشتن «کار کرد» کافی نیست. نام قطعه، نوع پروگرامر، منبع کلاک، ولتاژ اندازهگیریشده، نسخه برنامه و شرایط ورودی را ثبت کنید. سپس خروجی مشاهدهشده را با واحد یا وضعیت منطقی بنویسید. اگر چند بار آزمون میکنید، نتیجه هر بار را جدا بگذارید. تفاوت بین آزمونها ممکن است از تماس بردبورد، افت تغذیه یا تغییر تنظیمات باشد. گزارش دقیق به شما کمک میکند هنگام افزودن بخش بعدی، نقطهٔ سالم قبلی را بشناسید.
آزمون مرزی و بازبینی
بعد از آزمون اصلی، حالت حداقل و حداکثر ورودی مجاز را از منظر منطقی بررسی کنید؛ از حدود الکتریکی دیتاشیت فراتر نروید. سیستم را یک بار بدون ورودی اختیاری و یک بار با ورودی معتبر راهاندازی کنید. در هر دو حالت، خروجی باید تعریفشده باشد. اگر مقدار ناپایدار میبینید، قبل از افزودن تأخیر نرمافزاری، کیفیت اتصال و منبع تغذیه را بسنجید. برای «زمانبندی غیرمسدودکننده و ماشین حالت» این روش باعث میشود یک نتیجه اتفاقی را با عملکرد قابل اعتماد اشتباه نگیرید.
ارتباط این جلسه با کل دوره
کار روی حلقه اصلی، شمارنده زمان، وضعیتهای مجزا و پرهیز از توقف طولانی مستقل از بقیه مدار نیست. هر تصمیم درباره پایهها، کلاک و زمان پاسخ روی ارتباط با نمایشگر، حسگر و حافظه اثر میگذارد. هنگام توسعه، یک جدول تخصیص پایه تهیه کنید و کنار هر پایه وظیفه، جهت و وضعیت شروع را بنویسید. اگر یک پایه بعداً برای قابلیت دیگری لازم شد، پیش از جابهجایی سختافزار، کاربرد آن را در همه بخشهای برنامه جستوجو کنید. این عادت از خطاهای دشوار در پروژه نهایی جلوگیری میکند.
چکلیست پایان جلسه
آیا نسخه تراشه مشخص است؟ آیا ولتاژ در محدوده مجاز اندازهگیری شده؟ آیا قطعه جانبی با سطح سیگنال سازگار است؟ آیا انتظار قبل از مشاهده ثبت شده؟ آیا دستکم دو حالت ورودی آزموده شده؟ آیا نتیجه و خطاها قابل تکرارند؟ اگر پاسخی نامشخص است، همان مورد را به تمرین بعدی تبدیل کنید. با این روش هر جلسه یک خروجی مستند به پروژه اضافه میکند و محتوای آموزش از یک توضیح صرف به راهنمای آزمایش تبدیل میشود.
جلسه 9: عملگرهای بیتی و کنترل چند خروجی
در جلسهٔ 9 دورهٔ آموزش میکروکنترلر ATmega32 به سراغ «عملگرهای بیتی و کنترل چند خروجی» میرویم. هدف این است که مفهوم را از مشاهدهٔ واقعی جدا نکنیم: ماسک بیت، شیفت، AND و OR و XOR برای تغییر یک پایه بدون دستکاری بقیه. این مسیر برای کسی طراحی شده که میخواهد با تراشه AVR یک پروژه قابل توضیح و قابل آزمایش بسازد، نه اینکه فقط نام رجیسترها را حفظ کند. هر بار نسخه دقیق قطعه و ابزار خود را ثبت کنید؛ نمونهٔ ATmega32A در مواردی به دیتاشیت خودش نیاز دارد.
هدف یادگیری و پیشنیاز

پس از این جلسه باید بتوانید ماسک بیت، شیفت، AND و OR و XOR برای تغییر یک پایه بدون دستکاری بقیه را با زبان خود توضیح دهید، یک آزمون کوچک طراحی کنید و نتیجه را با انتظار مقایسه کنید. پیشنیاز شما شناخت پایههای تغذیه، روش خاموشکردن امن منبع و توانایی خواندن نقشه پایهها از دیتاشیت است. اگر یکی از این موارد را هنوز انجام ندادهاید، ابتدا جلسههای قبل را مرور کنید. نام بسته، شماره قطعه و نوع ابزار را کنار یادداشت آزمایش بنویسید؛ این سه داده در عیبیابی بعدی بسیار کمک میکنند.
وسایل و آمادهسازی
تراشه ATmega32 یا ATmega32A، منبع تغذیه تنظیمشده متناسب با نسخه تراشه، بردبورد یا برد آزمایش، پروگرامر سازگار، مولتیمتر و قطعه مرتبط با «عملگرهای بیتی و کنترل چند خروجی» را آماده کنید. پیش از هر جابهجایی سیم، تغذیه را قطع کنید. جهت قرارگیری تراشه، پایههای VCC و GND و AVCC و وضعیت RESET را بر اساس دیتاشیت همان قطعه بررسی کنید. عکسهای این مقاله برای شناخت ظاهریاند و نقشه اتصال نیستند.
اصل فنی به زبان ساده
ماسک بیت، شیفت، AND و OR و XOR برای تغییر یک پایه بدون دستکاری بقیه. در یک میکروکنترلر، نتیجهٔ نرمافزار به تنظیم سختافزار وابسته است. اگر کلاک واقعی با فرکانسی که کامپایلر فرض میکند فرق داشته باشد، زمان و ارتباطها خطا پیدا میکنند. اگر پایهای همزمان برای چند وظیفه استفاده شود، باید اولویت آنها را مشخص کرد. محدودهٔ ولتاژ و جریان را از جدول الکتریکی دیتاشیت بخوانید و هیچ خروجی را جای منبع تغذیه بار پرمصرف به کار نبرید. یک فرض را در هر مرحله تغییر دهید تا علت هر نتیجه معلوم بماند.

اجرای آزمایش مرحله به مرحله
- سؤال آزمون را بنویسید: «الگوی حرکت چند LED را با تغییر تکبیت بنویسید و رفتار هر مرحله را یادداشت کنید».
- قطعات و اتصالات را با منبع خاموش و با راهنمای همان برد آماده کنید.
- ولتاژ تغذیه و زمین مشترک را پیش از پروگرام اندازه بگیرید.
- برنامه یا تنظیم لازم را تنها برای همین بخش اجرا کنید و ورودی را تغییر دهید.
- نتیجه را در جدول «ورودی، انتظار، مشاهده، توضیح» ثبت کنید.
الگوی حرکت چند LED را با تغییر تکبیت بنویسید و رفتار هر مرحله را یادداشت کنید. بار اول از یک وضعیت ساده و بدون قطعات اضافی شروع کنید. بار دوم مقدار ورودی یا شرط آزمایش را تغییر دهید تا تفاوت نتیجه را ببینید. بار سوم همان آزمایش را بعد از قطع و وصل تغذیه تکرار کنید؛ پایداری رفتار از یک مشاهده تصادفی ارزشمندتر است. هنگام تغییر تنظیمات برنامه، نام فایل و تاریخ آزمایش را ثبت کنید تا نسخههای مختلف با هم اشتباه نشوند.
چه نتیجهای درست است؟
خروجیهای دیگر باید هنگام تغییر یک بیت حالت قبلی خود را حفظ کنند. انتظار خود را پیش از اجرای آزمایش بنویسید و بعد داده واقعی را کنار آن قرار دهید. اگر مشاهده و انتظار تفاوت دارند، ابتدا دستگاه اندازهگیری و تغذیه را بررسی کنید، سپس سراغ برنامه بروید. صرف روشن شدن LED یا نمایش یک عدد نشانه صحت کامل سیستم نیست؛ برای هر ورودی دستکم دو حالت متفاوت را امتحان کنید و مقدارهای مرزی را نیز در نظر بگیرید.

خطاهای رایج و روش پیدا کردن علت
نوشتن کل PORT بدون ماسک ممکن است پایههای نامرتبط را تغییر دهد. برای عیبیابی، اول وجود و مقدار تغذیه را در محل تراشه بسنجید، بعد زمین، وضعیت ریست و منبع کلاک را بررسی کنید. پس از آن اتصالات رابط و نام پایهها را با دیتاشیت تطبیق دهید. اگر پیام خطای ابزار دارید، متن دقیق پیام و تنظیمات پروژه را نگه دارید. تغییر همزمان چند سیم یا چند سطر برنامه باعث میشود نفهمید کدام تغییر مشکل را حل کرده است.
تمرین تکمیلی و معیار ارزیابی
تمرین این جلسه آن است که آزمایش «عملگرهای بیتی و کنترل چند خروجی» را یک بار با شرایط اولیه و یک بار با یک تغییر کنترلشده اجرا کنید. در گزارش کوتاه خود هدف، قطعات، نسخه تراشه، پیشبینی، نتیجه و علت تفاوت احتمالی را بنویسید. معیار موفقیت فقط گرفتن خروجی نیست: باید بتوانید توضیح دهید چرا نتیجه به دست آمد، کدام بخش آن را اندازه گرفتید و برای تکرار آزمون چه تنظیماتی لازم است. اگر به نتیجه نرسیدید، گزارش خطا هنوز یک خروجی آموزشی مفید است.
نکته طراحی برای پروژه واقعی
در محصول واقعی، «عملگرهای بیتی و کنترل چند خروجی» باید با دیگر بخشها هماهنگ شود. مصرف حافظه، زمان پاسخ، خطای اندازهگیری، نویز و رفتار هنگام روشن شدن دوباره را جدا بررسی کنید. پایههایی که نقش جایگزین دارند را روی نقشه پروژه علامت بزنید تا هنگام افزودن نمایشگر یا ارتباط سریال تداخل ایجاد نشود. قبل از مونتاژ دائمی، یک آزمایش کوچک با همان نوع تغذیه و همان قطعات نهایی انجام دهید. عکس نمایشی قطعات جایگزین نقشه و دیتاشیت نیست.
پرسشهای کوتاه
آیا همین مراحل برای همه نسخهها یکسان است؟ خیر؛ نام دقیق تراشه، بستهبندی و دیتاشیت را ملاک بگیرید. آیا بدون ابزار اندازهگیری میتوان نتیجه را تأیید کرد؟ برای بعضی رفتارها مشاهده اولیه ممکن است، اما برای ولتاژ، زمانبندی و خطاهای متناوب اندازهگیری لازم است. اگر آزمایش کار نکرد از کجا شروع کنم؟ از تغذیه و زمین و ریست شروع کنید و تنها بعد از تأیید آنها سراغ تنظیمات کلاک و نرمافزار بروید.
جمعبندی و ادامه مسیر
در این درس، «عملگرهای بیتی و کنترل چند خروجی» را به یک پرسش قابل آزمون تبدیل کردیم و معیار مشاهده را مشخص کردیم. نتیجهٔ خود را با یک عکس از چیدمان قطعات، فایل کد یا تنظیمات و جدول اندازهگیری نگه دارید. جلسه بعد بر همین نتیجه تکیه میکند؛ اگر خروجی هنوز پایدار نیست، قبل از رفتن به بخش بعدی علت را پیدا کنید. پیوندهای دوره: جلسه قبل جلسه بعد.
منبع فنی: دیتاشیت رسمی ATmega32A از Microchip. مشخصات نسخهٔ ATmega32 را با سند همان مدل تطبیق دهید.
ثبت دقیق آزمایش عملگرهای بیتی و کنترل چند خروجی
برای اینکه شخص دیگری بتواند کارتان را تکرار کند، فقط نوشتن «کار کرد» کافی نیست. نام قطعه، نوع پروگرامر، منبع کلاک، ولتاژ اندازهگیریشده، نسخه برنامه و شرایط ورودی را ثبت کنید. سپس خروجی مشاهدهشده را با واحد یا وضعیت منطقی بنویسید. اگر چند بار آزمون میکنید، نتیجه هر بار را جدا بگذارید. تفاوت بین آزمونها ممکن است از تماس بردبورد، افت تغذیه یا تغییر تنظیمات باشد. گزارش دقیق به شما کمک میکند هنگام افزودن بخش بعدی، نقطهٔ سالم قبلی را بشناسید.
آزمون مرزی و بازبینی
بعد از آزمون اصلی، حالت حداقل و حداکثر ورودی مجاز را از منظر منطقی بررسی کنید؛ از حدود الکتریکی دیتاشیت فراتر نروید. سیستم را یک بار بدون ورودی اختیاری و یک بار با ورودی معتبر راهاندازی کنید. در هر دو حالت، خروجی باید تعریفشده باشد. اگر مقدار ناپایدار میبینید، قبل از افزودن تأخیر نرمافزاری، کیفیت اتصال و منبع تغذیه را بسنجید. برای «عملگرهای بیتی و کنترل چند خروجی» این روش باعث میشود یک نتیجه اتفاقی را با عملکرد قابل اعتماد اشتباه نگیرید.
ارتباط این جلسه با کل دوره
کار روی ماسک بیت، شیفت، AND و OR و XOR برای تغییر یک پایه بدون دستکاری بقیه مستقل از بقیه مدار نیست. هر تصمیم درباره پایهها، کلاک و زمان پاسخ روی ارتباط با نمایشگر، حسگر و حافظه اثر میگذارد. هنگام توسعه، یک جدول تخصیص پایه تهیه کنید و کنار هر پایه وظیفه، جهت و وضعیت شروع را بنویسید. اگر یک پایه بعداً برای قابلیت دیگری لازم شد، پیش از جابهجایی سختافزار، کاربرد آن را در همه بخشهای برنامه جستوجو کنید. این عادت از خطاهای دشوار در پروژه نهایی جلوگیری میکند.
چکلیست پایان جلسه
آیا نسخه تراشه مشخص است؟ آیا ولتاژ در محدوده مجاز اندازهگیری شده؟ آیا قطعه جانبی با سطح سیگنال سازگار است؟ آیا انتظار قبل از مشاهده ثبت شده؟ آیا دستکم دو حالت ورودی آزموده شده؟ آیا نتیجه و خطاها قابل تکرارند؟ اگر پاسخی نامشخص است، همان مورد را به تمرین بعدی تبدیل کنید. با این روش هر جلسه یک خروجی مستند به پروژه اضافه میکند و محتوای آموزش از یک توضیح صرف به راهنمای آزمایش تبدیل میشود.
جلسه 8: کلید فشاری، پولآپ و حذف جهش تماس
در جلسهٔ 8 دورهٔ آموزش میکروکنترلر ATmega32 به سراغ «کلید فشاری، پولآپ و حذف جهش تماس» میرویم. هدف این است که مفهوم را از مشاهدهٔ واقعی جدا نکنیم: ورودی شناور، مقاومت پولآپ داخلی، منطق فعال-پایین و جهش مکانیکی کلید. این مسیر برای کسی طراحی شده که میخواهد با تراشه AVR یک پروژه قابل توضیح و قابل آزمایش بسازد، نه اینکه فقط نام رجیسترها را حفظ کند. هر بار نسخه دقیق قطعه و ابزار خود را ثبت کنید؛ نمونهٔ ATmega32A در مواردی به دیتاشیت خودش نیاز دارد.
هدف یادگیری و پیشنیاز

پس از این جلسه باید بتوانید ورودی شناور، مقاومت پولآپ داخلی، منطق فعال-پایین و جهش مکانیکی کلید را با زبان خود توضیح دهید، یک آزمون کوچک طراحی کنید و نتیجه را با انتظار مقایسه کنید. پیشنیاز شما شناخت پایههای تغذیه، روش خاموشکردن امن منبع و توانایی خواندن نقشه پایهها از دیتاشیت است. اگر یکی از این موارد را هنوز انجام ندادهاید، ابتدا جلسههای قبل را مرور کنید. نام بسته، شماره قطعه و نوع ابزار را کنار یادداشت آزمایش بنویسید؛ این سه داده در عیبیابی بعدی بسیار کمک میکنند.
وسایل و آمادهسازی
تراشه ATmega32 یا ATmega32A، منبع تغذیه تنظیمشده متناسب با نسخه تراشه، بردبورد یا برد آزمایش، پروگرامر سازگار، مولتیمتر و قطعه مرتبط با «کلید فشاری، پولآپ و حذف جهش تماس» را آماده کنید. پیش از هر جابهجایی سیم، تغذیه را قطع کنید. جهت قرارگیری تراشه، پایههای VCC و GND و AVCC و وضعیت RESET را بر اساس دیتاشیت همان قطعه بررسی کنید. عکسهای این مقاله برای شناخت ظاهریاند و نقشه اتصال نیستند.
اصل فنی به زبان ساده
ورودی شناور، مقاومت پولآپ داخلی، منطق فعال-پایین و جهش مکانیکی کلید. در یک میکروکنترلر، نتیجهٔ نرمافزار به تنظیم سختافزار وابسته است. اگر کلاک واقعی با فرکانسی که کامپایلر فرض میکند فرق داشته باشد، زمان و ارتباطها خطا پیدا میکنند. اگر پایهای همزمان برای چند وظیفه استفاده شود، باید اولویت آنها را مشخص کرد. محدودهٔ ولتاژ و جریان را از جدول الکتریکی دیتاشیت بخوانید و هیچ خروجی را جای منبع تغذیه بار پرمصرف به کار نبرید. یک فرض را در هر مرحله تغییر دهید تا علت هر نتیجه معلوم بماند.

اجرای آزمایش مرحله به مرحله
- سؤال آزمون را بنویسید: «حالت بدون فشار و فشار را چند بار بخوانید و شمارش تغییر وضعیت را بررسی کنید».
- قطعات و اتصالات را با منبع خاموش و با راهنمای همان برد آماده کنید.
- ولتاژ تغذیه و زمین مشترک را پیش از پروگرام اندازه بگیرید.
- برنامه یا تنظیم لازم را تنها برای همین بخش اجرا کنید و ورودی را تغییر دهید.
- نتیجه را در جدول «ورودی، انتظار، مشاهده، توضیح» ثبت کنید.
حالت بدون فشار و فشار را چند بار بخوانید و شمارش تغییر وضعیت را بررسی کنید. بار اول از یک وضعیت ساده و بدون قطعات اضافی شروع کنید. بار دوم مقدار ورودی یا شرط آزمایش را تغییر دهید تا تفاوت نتیجه را ببینید. بار سوم همان آزمایش را بعد از قطع و وصل تغذیه تکرار کنید؛ پایداری رفتار از یک مشاهده تصادفی ارزشمندتر است. هنگام تغییر تنظیمات برنامه، نام فایل و تاریخ آزمایش را ثبت کنید تا نسخههای مختلف با هم اشتباه نشوند.
چه نتیجهای درست است؟
کلید پایدار تنها پس از زمان تثبیت بهعنوان یک رویداد ثبت میشود. انتظار خود را پیش از اجرای آزمایش بنویسید و بعد داده واقعی را کنار آن قرار دهید. اگر مشاهده و انتظار تفاوت دارند، ابتدا دستگاه اندازهگیری و تغذیه را بررسی کنید، سپس سراغ برنامه بروید. صرف روشن شدن LED یا نمایش یک عدد نشانه صحت کامل سیستم نیست؛ برای هر ورودی دستکم دو حالت متفاوت را امتحان کنید و مقدارهای مرزی را نیز در نظر بگیرید.

خطاهای رایج و روش پیدا کردن علت
خواندن ورودی رها و شناور به نتیجه تصادفی و تغییرات کاذب میانجامد. برای عیبیابی، اول وجود و مقدار تغذیه را در محل تراشه بسنجید، بعد زمین، وضعیت ریست و منبع کلاک را بررسی کنید. پس از آن اتصالات رابط و نام پایهها را با دیتاشیت تطبیق دهید. اگر پیام خطای ابزار دارید، متن دقیق پیام و تنظیمات پروژه را نگه دارید. تغییر همزمان چند سیم یا چند سطر برنامه باعث میشود نفهمید کدام تغییر مشکل را حل کرده است.
تمرین تکمیلی و معیار ارزیابی
تمرین این جلسه آن است که آزمایش «کلید فشاری، پولآپ و حذف جهش تماس» را یک بار با شرایط اولیه و یک بار با یک تغییر کنترلشده اجرا کنید. در گزارش کوتاه خود هدف، قطعات، نسخه تراشه، پیشبینی، نتیجه و علت تفاوت احتمالی را بنویسید. معیار موفقیت فقط گرفتن خروجی نیست: باید بتوانید توضیح دهید چرا نتیجه به دست آمد، کدام بخش آن را اندازه گرفتید و برای تکرار آزمون چه تنظیماتی لازم است. اگر به نتیجه نرسیدید، گزارش خطا هنوز یک خروجی آموزشی مفید است.
نکته طراحی برای پروژه واقعی
در محصول واقعی، «کلید فشاری، پولآپ و حذف جهش تماس» باید با دیگر بخشها هماهنگ شود. مصرف حافظه، زمان پاسخ، خطای اندازهگیری، نویز و رفتار هنگام روشن شدن دوباره را جدا بررسی کنید. پایههایی که نقش جایگزین دارند را روی نقشه پروژه علامت بزنید تا هنگام افزودن نمایشگر یا ارتباط سریال تداخل ایجاد نشود. قبل از مونتاژ دائمی، یک آزمایش کوچک با همان نوع تغذیه و همان قطعات نهایی انجام دهید. عکس نمایشی قطعات جایگزین نقشه و دیتاشیت نیست.
پرسشهای کوتاه
آیا همین مراحل برای همه نسخهها یکسان است؟ خیر؛ نام دقیق تراشه، بستهبندی و دیتاشیت را ملاک بگیرید. آیا بدون ابزار اندازهگیری میتوان نتیجه را تأیید کرد؟ برای بعضی رفتارها مشاهده اولیه ممکن است، اما برای ولتاژ، زمانبندی و خطاهای متناوب اندازهگیری لازم است. اگر آزمایش کار نکرد از کجا شروع کنم؟ از تغذیه و زمین و ریست شروع کنید و تنها بعد از تأیید آنها سراغ تنظیمات کلاک و نرمافزار بروید.
جمعبندی و ادامه مسیر
در این درس، «کلید فشاری، پولآپ و حذف جهش تماس» را به یک پرسش قابل آزمون تبدیل کردیم و معیار مشاهده را مشخص کردیم. نتیجهٔ خود را با یک عکس از چیدمان قطعات، فایل کد یا تنظیمات و جدول اندازهگیری نگه دارید. جلسه بعد بر همین نتیجه تکیه میکند؛ اگر خروجی هنوز پایدار نیست، قبل از رفتن به بخش بعدی علت را پیدا کنید. پیوندهای دوره: جلسه قبل جلسه بعد.
منبع فنی: دیتاشیت رسمی ATmega32A از Microchip. مشخصات نسخهٔ ATmega32 را با سند همان مدل تطبیق دهید.
ثبت دقیق آزمایش کلید فشاری، پولآپ و حذف جهش تماس
برای اینکه شخص دیگری بتواند کارتان را تکرار کند، فقط نوشتن «کار کرد» کافی نیست. نام قطعه، نوع پروگرامر، منبع کلاک، ولتاژ اندازهگیریشده، نسخه برنامه و شرایط ورودی را ثبت کنید. سپس خروجی مشاهدهشده را با واحد یا وضعیت منطقی بنویسید. اگر چند بار آزمون میکنید، نتیجه هر بار را جدا بگذارید. تفاوت بین آزمونها ممکن است از تماس بردبورد، افت تغذیه یا تغییر تنظیمات باشد. گزارش دقیق به شما کمک میکند هنگام افزودن بخش بعدی، نقطهٔ سالم قبلی را بشناسید.
آزمون مرزی و بازبینی
بعد از آزمون اصلی، حالت حداقل و حداکثر ورودی مجاز را از منظر منطقی بررسی کنید؛ از حدود الکتریکی دیتاشیت فراتر نروید. سیستم را یک بار بدون ورودی اختیاری و یک بار با ورودی معتبر راهاندازی کنید. در هر دو حالت، خروجی باید تعریفشده باشد. اگر مقدار ناپایدار میبینید، قبل از افزودن تأخیر نرمافزاری، کیفیت اتصال و منبع تغذیه را بسنجید. برای «کلید فشاری، پولآپ و حذف جهش تماس» این روش باعث میشود یک نتیجه اتفاقی را با عملکرد قابل اعتماد اشتباه نگیرید.
ارتباط این جلسه با کل دوره
کار روی ورودی شناور، مقاومت پولآپ داخلی، منطق فعال-پایین و جهش مکانیکی کلید مستقل از بقیه مدار نیست. هر تصمیم درباره پایهها، کلاک و زمان پاسخ روی ارتباط با نمایشگر، حسگر و حافظه اثر میگذارد. هنگام توسعه، یک جدول تخصیص پایه تهیه کنید و کنار هر پایه وظیفه، جهت و وضعیت شروع را بنویسید. اگر یک پایه بعداً برای قابلیت دیگری لازم شد، پیش از جابهجایی سختافزار، کاربرد آن را در همه بخشهای برنامه جستوجو کنید. این عادت از خطاهای دشوار در پروژه نهایی جلوگیری میکند.
چکلیست پایان جلسه
آیا نسخه تراشه مشخص است؟ آیا ولتاژ در محدوده مجاز اندازهگیری شده؟ آیا قطعه جانبی با سطح سیگنال سازگار است؟ آیا انتظار قبل از مشاهده ثبت شده؟ آیا دستکم دو حالت ورودی آزموده شده؟ آیا نتیجه و خطاها قابل تکرارند؟ اگر پاسخی نامشخص است، همان مورد را به تمرین بعدی تبدیل کنید. با این روش هر جلسه یک خروجی مستند به پروژه اضافه میکند و محتوای آموزش از یک توضیح صرف به راهنمای آزمایش تبدیل میشود.
جلسه 7: رجیسترهای DDR و PORT و PIN در ورودی خروجی
در جلسهٔ 7 دورهٔ آموزش میکروکنترلر ATmega32 به سراغ «رجیسترهای DDR و PORT و PIN در ورودی خروجی» میرویم. هدف این است که مفهوم را از مشاهدهٔ واقعی جدا نکنیم: تعیین جهت پایه با DDRx، مقدار خروجی با PORTx و خواندن وضعیت با PINx. این مسیر برای کسی طراحی شده که میخواهد با تراشه AVR یک پروژه قابل توضیح و قابل آزمایش بسازد، نه اینکه فقط نام رجیسترها را حفظ کند. هر بار نسخه دقیق قطعه و ابزار خود را ثبت کنید؛ نمونهٔ ATmega32A در مواردی به دیتاشیت خودش نیاز دارد.
هدف یادگیری و پیشنیاز

پس از این جلسه باید بتوانید تعیین جهت پایه با DDRx، مقدار خروجی با PORTx و خواندن وضعیت با PINx را با زبان خود توضیح دهید، یک آزمون کوچک طراحی کنید و نتیجه را با انتظار مقایسه کنید. پیشنیاز شما شناخت پایههای تغذیه، روش خاموشکردن امن منبع و توانایی خواندن نقشه پایهها از دیتاشیت است. اگر یکی از این موارد را هنوز انجام ندادهاید، ابتدا جلسههای قبل را مرور کنید. نام بسته، شماره قطعه و نوع ابزار را کنار یادداشت آزمایش بنویسید؛ این سه داده در عیبیابی بعدی بسیار کمک میکنند.
وسایل و آمادهسازی
تراشه ATmega32 یا ATmega32A، منبع تغذیه تنظیمشده متناسب با نسخه تراشه، بردبورد یا برد آزمایش، پروگرامر سازگار، مولتیمتر و قطعه مرتبط با «رجیسترهای DDR و PORT و PIN در ورودی خروجی» را آماده کنید. پیش از هر جابهجایی سیم، تغذیه را قطع کنید. جهت قرارگیری تراشه، پایههای VCC و GND و AVCC و وضعیت RESET را بر اساس دیتاشیت همان قطعه بررسی کنید. عکسهای این مقاله برای شناخت ظاهریاند و نقشه اتصال نیستند.
اصل فنی به زبان ساده
تعیین جهت پایه با DDRx، مقدار خروجی با PORTx و خواندن وضعیت با PINx. در یک میکروکنترلر، نتیجهٔ نرمافزار به تنظیم سختافزار وابسته است. اگر کلاک واقعی با فرکانسی که کامپایلر فرض میکند فرق داشته باشد، زمان و ارتباطها خطا پیدا میکنند. اگر پایهای همزمان برای چند وظیفه استفاده شود، باید اولویت آنها را مشخص کرد. محدودهٔ ولتاژ و جریان را از جدول الکتریکی دیتاشیت بخوانید و هیچ خروجی را جای منبع تغذیه بار پرمصرف به کار نبرید. یک فرض را در هر مرحله تغییر دهید تا علت هر نتیجه معلوم بماند.

اجرای آزمایش مرحله به مرحله
- سؤال آزمون را بنویسید: «یک LED با مقاومت محدودکننده را روی پایه مناسب آزمون کنید و حالت روشن و خاموش را ثبت کنید».
- قطعات و اتصالات را با منبع خاموش و با راهنمای همان برد آماده کنید.
- ولتاژ تغذیه و زمین مشترک را پیش از پروگرام اندازه بگیرید.
- برنامه یا تنظیم لازم را تنها برای همین بخش اجرا کنید و ورودی را تغییر دهید.
- نتیجه را در جدول «ورودی، انتظار، مشاهده، توضیح» ثبت کنید.
یک LED با مقاومت محدودکننده را روی پایه مناسب آزمون کنید و حالت روشن و خاموش را ثبت کنید. بار اول از یک وضعیت ساده و بدون قطعات اضافی شروع کنید. بار دوم مقدار ورودی یا شرط آزمایش را تغییر دهید تا تفاوت نتیجه را ببینید. بار سوم همان آزمایش را بعد از قطع و وصل تغذیه تکرار کنید؛ پایداری رفتار از یک مشاهده تصادفی ارزشمندتر است. هنگام تغییر تنظیمات برنامه، نام فایل و تاریخ آزمایش را ثبت کنید تا نسخههای مختلف با هم اشتباه نشوند.
چه نتیجهای درست است؟
بیت رجیستر باید با پایه متناظر و جهت تعریفشده هماهنگ باشد. انتظار خود را پیش از اجرای آزمایش بنویسید و بعد داده واقعی را کنار آن قرار دهید. اگر مشاهده و انتظار تفاوت دارند، ابتدا دستگاه اندازهگیری و تغذیه را بررسی کنید، سپس سراغ برنامه بروید. صرف روشن شدن LED یا نمایش یک عدد نشانه صحت کامل سیستم نیست؛ برای هر ورودی دستکم دو حالت متفاوت را امتحان کنید و مقدارهای مرزی را نیز در نظر بگیرید.

خطاهای رایج و روش پیدا کردن علت
LED بدون مقاومت یا بار بیش از حد، آزمون سالمی برای پایه خروجی نیست. برای عیبیابی، اول وجود و مقدار تغذیه را در محل تراشه بسنجید، بعد زمین، وضعیت ریست و منبع کلاک را بررسی کنید. پس از آن اتصالات رابط و نام پایهها را با دیتاشیت تطبیق دهید. اگر پیام خطای ابزار دارید، متن دقیق پیام و تنظیمات پروژه را نگه دارید. تغییر همزمان چند سیم یا چند سطر برنامه باعث میشود نفهمید کدام تغییر مشکل را حل کرده است.
تمرین تکمیلی و معیار ارزیابی
تمرین این جلسه آن است که آزمایش «رجیسترهای DDR و PORT و PIN در ورودی خروجی» را یک بار با شرایط اولیه و یک بار با یک تغییر کنترلشده اجرا کنید. در گزارش کوتاه خود هدف، قطعات، نسخه تراشه، پیشبینی، نتیجه و علت تفاوت احتمالی را بنویسید. معیار موفقیت فقط گرفتن خروجی نیست: باید بتوانید توضیح دهید چرا نتیجه به دست آمد، کدام بخش آن را اندازه گرفتید و برای تکرار آزمون چه تنظیماتی لازم است. اگر به نتیجه نرسیدید، گزارش خطا هنوز یک خروجی آموزشی مفید است.
نکته طراحی برای پروژه واقعی
در محصول واقعی، «رجیسترهای DDR و PORT و PIN در ورودی خروجی» باید با دیگر بخشها هماهنگ شود. مصرف حافظه، زمان پاسخ، خطای اندازهگیری، نویز و رفتار هنگام روشن شدن دوباره را جدا بررسی کنید. پایههایی که نقش جایگزین دارند را روی نقشه پروژه علامت بزنید تا هنگام افزودن نمایشگر یا ارتباط سریال تداخل ایجاد نشود. قبل از مونتاژ دائمی، یک آزمایش کوچک با همان نوع تغذیه و همان قطعات نهایی انجام دهید. عکس نمایشی قطعات جایگزین نقشه و دیتاشیت نیست.
پرسشهای کوتاه
آیا همین مراحل برای همه نسخهها یکسان است؟ خیر؛ نام دقیق تراشه، بستهبندی و دیتاشیت را ملاک بگیرید. آیا بدون ابزار اندازهگیری میتوان نتیجه را تأیید کرد؟ برای بعضی رفتارها مشاهده اولیه ممکن است، اما برای ولتاژ، زمانبندی و خطاهای متناوب اندازهگیری لازم است. اگر آزمایش کار نکرد از کجا شروع کنم؟ از تغذیه و زمین و ریست شروع کنید و تنها بعد از تأیید آنها سراغ تنظیمات کلاک و نرمافزار بروید.
جمعبندی و ادامه مسیر
در این درس، «رجیسترهای DDR و PORT و PIN در ورودی خروجی» را به یک پرسش قابل آزمون تبدیل کردیم و معیار مشاهده را مشخص کردیم. نتیجهٔ خود را با یک عکس از چیدمان قطعات، فایل کد یا تنظیمات و جدول اندازهگیری نگه دارید. جلسه بعد بر همین نتیجه تکیه میکند؛ اگر خروجی هنوز پایدار نیست، قبل از رفتن به بخش بعدی علت را پیدا کنید. پیوندهای دوره: جلسه قبل جلسه بعد.
منبع فنی: دیتاشیت رسمی ATmega32A از Microchip. مشخصات نسخهٔ ATmega32 را با سند همان مدل تطبیق دهید.
ثبت دقیق آزمایش رجیسترهای DDR و PORT و PIN در ورودی خروجی
برای اینکه شخص دیگری بتواند کارتان را تکرار کند، فقط نوشتن «کار کرد» کافی نیست. نام قطعه، نوع پروگرامر، منبع کلاک، ولتاژ اندازهگیریشده، نسخه برنامه و شرایط ورودی را ثبت کنید. سپس خروجی مشاهدهشده را با واحد یا وضعیت منطقی بنویسید. اگر چند بار آزمون میکنید، نتیجه هر بار را جدا بگذارید. تفاوت بین آزمونها ممکن است از تماس بردبورد، افت تغذیه یا تغییر تنظیمات باشد. گزارش دقیق به شما کمک میکند هنگام افزودن بخش بعدی، نقطهٔ سالم قبلی را بشناسید.
آزمون مرزی و بازبینی
بعد از آزمون اصلی، حالت حداقل و حداکثر ورودی مجاز را از منظر منطقی بررسی کنید؛ از حدود الکتریکی دیتاشیت فراتر نروید. سیستم را یک بار بدون ورودی اختیاری و یک بار با ورودی معتبر راهاندازی کنید. در هر دو حالت، خروجی باید تعریفشده باشد. اگر مقدار ناپایدار میبینید، قبل از افزودن تأخیر نرمافزاری، کیفیت اتصال و منبع تغذیه را بسنجید. برای «رجیسترهای DDR و PORT و PIN در ورودی خروجی» این روش باعث میشود یک نتیجه اتفاقی را با عملکرد قابل اعتماد اشتباه نگیرید.
ارتباط این جلسه با کل دوره
کار روی تعیین جهت پایه با DDRx، مقدار خروجی با PORTx و خواندن وضعیت با PINx مستقل از بقیه مدار نیست. هر تصمیم درباره پایهها، کلاک و زمان پاسخ روی ارتباط با نمایشگر، حسگر و حافظه اثر میگذارد. هنگام توسعه، یک جدول تخصیص پایه تهیه کنید و کنار هر پایه وظیفه، جهت و وضعیت شروع را بنویسید. اگر یک پایه بعداً برای قابلیت دیگری لازم شد، پیش از جابهجایی سختافزار، کاربرد آن را در همه بخشهای برنامه جستوجو کنید. این عادت از خطاهای دشوار در پروژه نهایی جلوگیری میکند.
چکلیست پایان جلسه
آیا نسخه تراشه مشخص است؟ آیا ولتاژ در محدوده مجاز اندازهگیری شده؟ آیا قطعه جانبی با سطح سیگنال سازگار است؟ آیا انتظار قبل از مشاهده ثبت شده؟ آیا دستکم دو حالت ورودی آزموده شده؟ آیا نتیجه و خطاها قابل تکرارند؟ اگر پاسخی نامشخص است، همان مورد را به تمرین بعدی تبدیل کنید. با این روش هر جلسه یک خروجی مستند به پروژه اضافه میکند و محتوای آموزش از یک توضیح صرف به راهنمای آزمایش تبدیل میشود.
جلسه 6: پروگرامکردن ATmega32 با رابط ISP
در جلسهٔ 6 دورهٔ آموزش میکروکنترلر ATmega32 به سراغ «پروگرامکردن ATmega32 با رابط ISP» میرویم. هدف این است که مفهوم را از مشاهدهٔ واقعی جدا نکنیم: سیگنالهای ISP شامل MOSI و MISO و SCK و RESET در کنار تغذیه و زمین. این مسیر برای کسی طراحی شده که میخواهد با تراشه AVR یک پروژه قابل توضیح و قابل آزمایش بسازد، نه اینکه فقط نام رجیسترها را حفظ کند. هر بار نسخه دقیق قطعه و ابزار خود را ثبت کنید؛ نمونهٔ ATmega32A در مواردی به دیتاشیت خودش نیاز دارد.
هدف یادگیری و پیشنیاز

پس از این جلسه باید بتوانید سیگنالهای ISP شامل MOSI و MISO و SCK و RESET در کنار تغذیه و زمین را با زبان خود توضیح دهید، یک آزمون کوچک طراحی کنید و نتیجه را با انتظار مقایسه کنید. پیشنیاز شما شناخت پایههای تغذیه، روش خاموشکردن امن منبع و توانایی خواندن نقشه پایهها از دیتاشیت است. اگر یکی از این موارد را هنوز انجام ندادهاید، ابتدا جلسههای قبل را مرور کنید. نام بسته، شماره قطعه و نوع ابزار را کنار یادداشت آزمایش بنویسید؛ این سه داده در عیبیابی بعدی بسیار کمک میکنند.
وسایل و آمادهسازی
تراشه ATmega32 یا ATmega32A، منبع تغذیه تنظیمشده متناسب با نسخه تراشه، بردبورد یا برد آزمایش، پروگرامر سازگار، مولتیمتر و قطعه مرتبط با «پروگرامکردن ATmega32 با رابط ISP» را آماده کنید. پیش از هر جابهجایی سیم، تغذیه را قطع کنید. جهت قرارگیری تراشه، پایههای VCC و GND و AVCC و وضعیت RESET را بر اساس دیتاشیت همان قطعه بررسی کنید. عکسهای این مقاله برای شناخت ظاهریاند و نقشه اتصال نیستند.
اصل فنی به زبان ساده
سیگنالهای ISP شامل MOSI و MISO و SCK و RESET در کنار تغذیه و زمین. در یک میکروکنترلر، نتیجهٔ نرمافزار به تنظیم سختافزار وابسته است. اگر کلاک واقعی با فرکانسی که کامپایلر فرض میکند فرق داشته باشد، زمان و ارتباطها خطا پیدا میکنند. اگر پایهای همزمان برای چند وظیفه استفاده شود، باید اولویت آنها را مشخص کرد. محدودهٔ ولتاژ و جریان را از جدول الکتریکی دیتاشیت بخوانید و هیچ خروجی را جای منبع تغذیه بار پرمصرف به کار نبرید. یک فرض را در هر مرحله تغییر دهید تا علت هر نتیجه معلوم بماند.

اجرای آزمایش مرحله به مرحله
- سؤال آزمون را بنویسید: «با پروگرامر سازگار شناسه تراشه را بخوانید و قبل از نوشتن، نام دقیق قطعه را بررسی کنید».
- قطعات و اتصالات را با منبع خاموش و با راهنمای همان برد آماده کنید.
- ولتاژ تغذیه و زمین مشترک را پیش از پروگرام اندازه بگیرید.
- برنامه یا تنظیم لازم را تنها برای همین بخش اجرا کنید و ورودی را تغییر دهید.
- نتیجه را در جدول «ورودی، انتظار، مشاهده، توضیح» ثبت کنید.
با پروگرامر سازگار شناسه تراشه را بخوانید و قبل از نوشتن، نام دقیق قطعه را بررسی کنید. بار اول از یک وضعیت ساده و بدون قطعات اضافی شروع کنید. بار دوم مقدار ورودی یا شرط آزمایش را تغییر دهید تا تفاوت نتیجه را ببینید. بار سوم همان آزمایش را بعد از قطع و وصل تغذیه تکرار کنید؛ پایداری رفتار از یک مشاهده تصادفی ارزشمندتر است. هنگام تغییر تنظیمات برنامه، نام فایل و تاریخ آزمایش را ثبت کنید تا نسخههای مختلف با هم اشتباه نشوند.
چه نتیجهای درست است؟
پاسخ معتبر شناسه نشان میدهد ارتباط ابتدایی پروگرامر برقرار است. انتظار خود را پیش از اجرای آزمایش بنویسید و بعد داده واقعی را کنار آن قرار دهید. اگر مشاهده و انتظار تفاوت دارند، ابتدا دستگاه اندازهگیری و تغذیه را بررسی کنید، سپس سراغ برنامه بروید. صرف روشن شدن LED یا نمایش یک عدد نشانه صحت کامل سیستم نیست؛ برای هر ورودی دستکم دو حالت متفاوت را امتحان کنید و مقدارهای مرزی را نیز در نظر بگیرید.

خطاهای رایج و روش پیدا کردن علت
خطای ارتباط ممکن است از کابل، تغذیه، کلاک یا اشغال پایههای مشترک باشد. برای عیبیابی، اول وجود و مقدار تغذیه را در محل تراشه بسنجید، بعد زمین، وضعیت ریست و منبع کلاک را بررسی کنید. پس از آن اتصالات رابط و نام پایهها را با دیتاشیت تطبیق دهید. اگر پیام خطای ابزار دارید، متن دقیق پیام و تنظیمات پروژه را نگه دارید. تغییر همزمان چند سیم یا چند سطر برنامه باعث میشود نفهمید کدام تغییر مشکل را حل کرده است.
تمرین تکمیلی و معیار ارزیابی
تمرین این جلسه آن است که آزمایش «پروگرامکردن ATmega32 با رابط ISP» را یک بار با شرایط اولیه و یک بار با یک تغییر کنترلشده اجرا کنید. در گزارش کوتاه خود هدف، قطعات، نسخه تراشه، پیشبینی، نتیجه و علت تفاوت احتمالی را بنویسید. معیار موفقیت فقط گرفتن خروجی نیست: باید بتوانید توضیح دهید چرا نتیجه به دست آمد، کدام بخش آن را اندازه گرفتید و برای تکرار آزمون چه تنظیماتی لازم است. اگر به نتیجه نرسیدید، گزارش خطا هنوز یک خروجی آموزشی مفید است.
نکته طراحی برای پروژه واقعی
در محصول واقعی، «پروگرامکردن ATmega32 با رابط ISP» باید با دیگر بخشها هماهنگ شود. مصرف حافظه، زمان پاسخ، خطای اندازهگیری، نویز و رفتار هنگام روشن شدن دوباره را جدا بررسی کنید. پایههایی که نقش جایگزین دارند را روی نقشه پروژه علامت بزنید تا هنگام افزودن نمایشگر یا ارتباط سریال تداخل ایجاد نشود. قبل از مونتاژ دائمی، یک آزمایش کوچک با همان نوع تغذیه و همان قطعات نهایی انجام دهید. عکس نمایشی قطعات جایگزین نقشه و دیتاشیت نیست.
پرسشهای کوتاه
آیا همین مراحل برای همه نسخهها یکسان است؟ خیر؛ نام دقیق تراشه، بستهبندی و دیتاشیت را ملاک بگیرید. آیا بدون ابزار اندازهگیری میتوان نتیجه را تأیید کرد؟ برای بعضی رفتارها مشاهده اولیه ممکن است، اما برای ولتاژ، زمانبندی و خطاهای متناوب اندازهگیری لازم است. اگر آزمایش کار نکرد از کجا شروع کنم؟ از تغذیه و زمین و ریست شروع کنید و تنها بعد از تأیید آنها سراغ تنظیمات کلاک و نرمافزار بروید.
جمعبندی و ادامه مسیر
در این درس، «پروگرامکردن ATmega32 با رابط ISP» را به یک پرسش قابل آزمون تبدیل کردیم و معیار مشاهده را مشخص کردیم. نتیجهٔ خود را با یک عکس از چیدمان قطعات، فایل کد یا تنظیمات و جدول اندازهگیری نگه دارید. جلسه بعد بر همین نتیجه تکیه میکند؛ اگر خروجی هنوز پایدار نیست، قبل از رفتن به بخش بعدی علت را پیدا کنید. پیوندهای دوره: جلسه قبل جلسه بعد.
منبع فنی: دیتاشیت رسمی ATmega32A از Microchip. مشخصات نسخهٔ ATmega32 را با سند همان مدل تطبیق دهید.
ثبت دقیق آزمایش پروگرامکردن ATmega32 با رابط ISP
برای اینکه شخص دیگری بتواند کارتان را تکرار کند، فقط نوشتن «کار کرد» کافی نیست. نام قطعه، نوع پروگرامر، منبع کلاک، ولتاژ اندازهگیریشده، نسخه برنامه و شرایط ورودی را ثبت کنید. سپس خروجی مشاهدهشده را با واحد یا وضعیت منطقی بنویسید. اگر چند بار آزمون میکنید، نتیجه هر بار را جدا بگذارید. تفاوت بین آزمونها ممکن است از تماس بردبورد، افت تغذیه یا تغییر تنظیمات باشد. گزارش دقیق به شما کمک میکند هنگام افزودن بخش بعدی، نقطهٔ سالم قبلی را بشناسید.
آزمون مرزی و بازبینی
بعد از آزمون اصلی، حالت حداقل و حداکثر ورودی مجاز را از منظر منطقی بررسی کنید؛ از حدود الکتریکی دیتاشیت فراتر نروید. سیستم را یک بار بدون ورودی اختیاری و یک بار با ورودی معتبر راهاندازی کنید. در هر دو حالت، خروجی باید تعریفشده باشد. اگر مقدار ناپایدار میبینید، قبل از افزودن تأخیر نرمافزاری، کیفیت اتصال و منبع تغذیه را بسنجید. برای «پروگرامکردن ATmega32 با رابط ISP» این روش باعث میشود یک نتیجه اتفاقی را با عملکرد قابل اعتماد اشتباه نگیرید.
ارتباط این جلسه با کل دوره
کار روی سیگنالهای ISP شامل MOSI و MISO و SCK و RESET در کنار تغذیه و زمین مستقل از بقیه مدار نیست. هر تصمیم درباره پایهها، کلاک و زمان پاسخ روی ارتباط با نمایشگر، حسگر و حافظه اثر میگذارد. هنگام توسعه، یک جدول تخصیص پایه تهیه کنید و کنار هر پایه وظیفه، جهت و وضعیت شروع را بنویسید. اگر یک پایه بعداً برای قابلیت دیگری لازم شد، پیش از جابهجایی سختافزار، کاربرد آن را در همه بخشهای برنامه جستوجو کنید. این عادت از خطاهای دشوار در پروژه نهایی جلوگیری میکند.
چکلیست پایان جلسه
آیا نسخه تراشه مشخص است؟ آیا ولتاژ در محدوده مجاز اندازهگیری شده؟ آیا قطعه جانبی با سطح سیگنال سازگار است؟ آیا انتظار قبل از مشاهده ثبت شده؟ آیا دستکم دو حالت ورودی آزموده شده؟ آیا نتیجه و خطاها قابل تکرارند؟ اگر پاسخی نامشخص است، همان مورد را به تمرین بعدی تبدیل کنید. با این روش هر جلسه یک خروجی مستند به پروژه اضافه میکند و محتوای آموزش از یک توضیح صرف به راهنمای آزمایش تبدیل میشود.
جلسه 5: نصب ابزار AVR و ساخت نخستین پروژه C
در جلسهٔ 5 دورهٔ آموزش میکروکنترلر ATmega32 به سراغ «نصب ابزار AVR و ساخت نخستین پروژه C» میرویم. هدف این است که مفهوم را از مشاهدهٔ واقعی جدا نکنیم: کامپایلر avr-gcc، فایل ELF و HEX، انتخاب هدف atmega32 و ثابت F_CPU. این مسیر برای کسی طراحی شده که میخواهد با تراشه AVR یک پروژه قابل توضیح و قابل آزمایش بسازد، نه اینکه فقط نام رجیسترها را حفظ کند. هر بار نسخه دقیق قطعه و ابزار خود را ثبت کنید؛ نمونهٔ ATmega32A در مواردی به دیتاشیت خودش نیاز دارد.
هدف یادگیری و پیشنیاز

پس از این جلسه باید بتوانید کامپایلر avr-gcc، فایل ELF و HEX، انتخاب هدف atmega32 و ثابت F_CPU را با زبان خود توضیح دهید، یک آزمون کوچک طراحی کنید و نتیجه را با انتظار مقایسه کنید. پیشنیاز شما شناخت پایههای تغذیه، روش خاموشکردن امن منبع و توانایی خواندن نقشه پایهها از دیتاشیت است. اگر یکی از این موارد را هنوز انجام ندادهاید، ابتدا جلسههای قبل را مرور کنید. نام بسته، شماره قطعه و نوع ابزار را کنار یادداشت آزمایش بنویسید؛ این سه داده در عیبیابی بعدی بسیار کمک میکنند.
وسایل و آمادهسازی
تراشه ATmega32 یا ATmega32A، منبع تغذیه تنظیمشده متناسب با نسخه تراشه، بردبورد یا برد آزمایش، پروگرامر سازگار، مولتیمتر و قطعه مرتبط با «نصب ابزار AVR و ساخت نخستین پروژه C» را آماده کنید. پیش از هر جابهجایی سیم، تغذیه را قطع کنید. جهت قرارگیری تراشه، پایههای VCC و GND و AVCC و وضعیت RESET را بر اساس دیتاشیت همان قطعه بررسی کنید. عکسهای این مقاله برای شناخت ظاهریاند و نقشه اتصال نیستند.
اصل فنی به زبان ساده
کامپایلر avr-gcc، فایل ELF و HEX، انتخاب هدف atmega32 و ثابت F_CPU. در یک میکروکنترلر، نتیجهٔ نرمافزار به تنظیم سختافزار وابسته است. اگر کلاک واقعی با فرکانسی که کامپایلر فرض میکند فرق داشته باشد، زمان و ارتباطها خطا پیدا میکنند. اگر پایهای همزمان برای چند وظیفه استفاده شود، باید اولویت آنها را مشخص کرد. محدودهٔ ولتاژ و جریان را از جدول الکتریکی دیتاشیت بخوانید و هیچ خروجی را جای منبع تغذیه بار پرمصرف به کار نبرید. یک فرض را در هر مرحله تغییر دهید تا علت هر نتیجه معلوم بماند.

اجرای آزمایش مرحله به مرحله
- سؤال آزمون را بنویسید: «یک برنامه خالی با حلقه اصلی بسازید و خروجی کامپایل را همراه خطاها ثبت کنید».
- قطعات و اتصالات را با منبع خاموش و با راهنمای همان برد آماده کنید.
- ولتاژ تغذیه و زمین مشترک را پیش از پروگرام اندازه بگیرید.
- برنامه یا تنظیم لازم را تنها برای همین بخش اجرا کنید و ورودی را تغییر دهید.
- نتیجه را در جدول «ورودی، انتظار، مشاهده، توضیح» ثبت کنید.
یک برنامه خالی با حلقه اصلی بسازید و خروجی کامپایل را همراه خطاها ثبت کنید. بار اول از یک وضعیت ساده و بدون قطعات اضافی شروع کنید. بار دوم مقدار ورودی یا شرط آزمایش را تغییر دهید تا تفاوت نتیجه را ببینید. بار سوم همان آزمایش را بعد از قطع و وصل تغذیه تکرار کنید؛ پایداری رفتار از یک مشاهده تصادفی ارزشمندتر است. هنگام تغییر تنظیمات برنامه، نام فایل و تاریخ آزمایش را ثبت کنید تا نسخههای مختلف با هم اشتباه نشوند.
چه نتیجهای درست است؟
ساخت موفق فایل HEX تنها صحت ترجمه برنامه را نشان میدهد، نه صحت اتصالات را. انتظار خود را پیش از اجرای آزمایش بنویسید و بعد داده واقعی را کنار آن قرار دهید. اگر مشاهده و انتظار تفاوت دارند، ابتدا دستگاه اندازهگیری و تغذیه را بررسی کنید، سپس سراغ برنامه بروید. صرف روشن شدن LED یا نمایش یک عدد نشانه صحت کامل سیستم نیست؛ برای هر ورودی دستکم دو حالت متفاوت را امتحان کنید و مقدارهای مرزی را نیز در نظر بگیرید.

خطاهای رایج و روش پیدا کردن علت
مدل اشتباه تراشه یا فرکانس نامعتبر، نتیجه آزمون روی سختافزار را مخدوش میکند. برای عیبیابی، اول وجود و مقدار تغذیه را در محل تراشه بسنجید، بعد زمین، وضعیت ریست و منبع کلاک را بررسی کنید. پس از آن اتصالات رابط و نام پایهها را با دیتاشیت تطبیق دهید. اگر پیام خطای ابزار دارید، متن دقیق پیام و تنظیمات پروژه را نگه دارید. تغییر همزمان چند سیم یا چند سطر برنامه باعث میشود نفهمید کدام تغییر مشکل را حل کرده است.
تمرین تکمیلی و معیار ارزیابی
تمرین این جلسه آن است که آزمایش «نصب ابزار AVR و ساخت نخستین پروژه C» را یک بار با شرایط اولیه و یک بار با یک تغییر کنترلشده اجرا کنید. در گزارش کوتاه خود هدف، قطعات، نسخه تراشه، پیشبینی، نتیجه و علت تفاوت احتمالی را بنویسید. معیار موفقیت فقط گرفتن خروجی نیست: باید بتوانید توضیح دهید چرا نتیجه به دست آمد، کدام بخش آن را اندازه گرفتید و برای تکرار آزمون چه تنظیماتی لازم است. اگر به نتیجه نرسیدید، گزارش خطا هنوز یک خروجی آموزشی مفید است.
نکته طراحی برای پروژه واقعی
در محصول واقعی، «نصب ابزار AVR و ساخت نخستین پروژه C» باید با دیگر بخشها هماهنگ شود. مصرف حافظه، زمان پاسخ، خطای اندازهگیری، نویز و رفتار هنگام روشن شدن دوباره را جدا بررسی کنید. پایههایی که نقش جایگزین دارند را روی نقشه پروژه علامت بزنید تا هنگام افزودن نمایشگر یا ارتباط سریال تداخل ایجاد نشود. قبل از مونتاژ دائمی، یک آزمایش کوچک با همان نوع تغذیه و همان قطعات نهایی انجام دهید. عکس نمایشی قطعات جایگزین نقشه و دیتاشیت نیست.
پرسشهای کوتاه
آیا همین مراحل برای همه نسخهها یکسان است؟ خیر؛ نام دقیق تراشه، بستهبندی و دیتاشیت را ملاک بگیرید. آیا بدون ابزار اندازهگیری میتوان نتیجه را تأیید کرد؟ برای بعضی رفتارها مشاهده اولیه ممکن است، اما برای ولتاژ، زمانبندی و خطاهای متناوب اندازهگیری لازم است. اگر آزمایش کار نکرد از کجا شروع کنم؟ از تغذیه و زمین و ریست شروع کنید و تنها بعد از تأیید آنها سراغ تنظیمات کلاک و نرمافزار بروید.
جمعبندی و ادامه مسیر
در این درس، «نصب ابزار AVR و ساخت نخستین پروژه C» را به یک پرسش قابل آزمون تبدیل کردیم و معیار مشاهده را مشخص کردیم. نتیجهٔ خود را با یک عکس از چیدمان قطعات، فایل کد یا تنظیمات و جدول اندازهگیری نگه دارید. جلسه بعد بر همین نتیجه تکیه میکند؛ اگر خروجی هنوز پایدار نیست، قبل از رفتن به بخش بعدی علت را پیدا کنید. پیوندهای دوره: جلسه قبل جلسه بعد.
منبع فنی: دیتاشیت رسمی ATmega32A از Microchip. مشخصات نسخهٔ ATmega32 را با سند همان مدل تطبیق دهید.
ثبت دقیق آزمایش نصب ابزار AVR و ساخت نخستین پروژه C
برای اینکه شخص دیگری بتواند کارتان را تکرار کند، فقط نوشتن «کار کرد» کافی نیست. نام قطعه، نوع پروگرامر، منبع کلاک، ولتاژ اندازهگیریشده، نسخه برنامه و شرایط ورودی را ثبت کنید. سپس خروجی مشاهدهشده را با واحد یا وضعیت منطقی بنویسید. اگر چند بار آزمون میکنید، نتیجه هر بار را جدا بگذارید. تفاوت بین آزمونها ممکن است از تماس بردبورد، افت تغذیه یا تغییر تنظیمات باشد. گزارش دقیق به شما کمک میکند هنگام افزودن بخش بعدی، نقطهٔ سالم قبلی را بشناسید.
آزمون مرزی و بازبینی
بعد از آزمون اصلی، حالت حداقل و حداکثر ورودی مجاز را از منظر منطقی بررسی کنید؛ از حدود الکتریکی دیتاشیت فراتر نروید. سیستم را یک بار بدون ورودی اختیاری و یک بار با ورودی معتبر راهاندازی کنید. در هر دو حالت، خروجی باید تعریفشده باشد. اگر مقدار ناپایدار میبینید، قبل از افزودن تأخیر نرمافزاری، کیفیت اتصال و منبع تغذیه را بسنجید. برای «نصب ابزار AVR و ساخت نخستین پروژه C» این روش باعث میشود یک نتیجه اتفاقی را با عملکرد قابل اعتماد اشتباه نگیرید.
ارتباط این جلسه با کل دوره
کار روی کامپایلر avr-gcc، فایل ELF و HEX، انتخاب هدف atmega32 و ثابت F_CPU مستقل از بقیه مدار نیست. هر تصمیم درباره پایهها، کلاک و زمان پاسخ روی ارتباط با نمایشگر، حسگر و حافظه اثر میگذارد. هنگام توسعه، یک جدول تخصیص پایه تهیه کنید و کنار هر پایه وظیفه، جهت و وضعیت شروع را بنویسید. اگر یک پایه بعداً برای قابلیت دیگری لازم شد، پیش از جابهجایی سختافزار، کاربرد آن را در همه بخشهای برنامه جستوجو کنید. این عادت از خطاهای دشوار در پروژه نهایی جلوگیری میکند.
چکلیست پایان جلسه
آیا نسخه تراشه مشخص است؟ آیا ولتاژ در محدوده مجاز اندازهگیری شده؟ آیا قطعه جانبی با سطح سیگنال سازگار است؟ آیا انتظار قبل از مشاهده ثبت شده؟ آیا دستکم دو حالت ورودی آزموده شده؟ آیا نتیجه و خطاها قابل تکرارند؟ اگر پاسخی نامشخص است، همان مورد را به تمرین بعدی تبدیل کنید. با این روش هر جلسه یک خروجی مستند به پروژه اضافه میکند و محتوای آموزش از یک توضیح صرف به راهنمای آزمایش تبدیل میشود.
جلسه 4: کلاک داخلی و خارجی و فیوزبیتها
در جلسهٔ 4 دورهٔ آموزش میکروکنترلر ATmega32 به سراغ «کلاک داخلی و خارجی و فیوزبیتها» میرویم. هدف این است که مفهوم را از مشاهدهٔ واقعی جدا نکنیم: منبع کلاک داخلی، کریستال خارجی، فرکانس واقعی برنامه و مفهوم fuse. این مسیر برای کسی طراحی شده که میخواهد با تراشه AVR یک پروژه قابل توضیح و قابل آزمایش بسازد، نه اینکه فقط نام رجیسترها را حفظ کند. هر بار نسخه دقیق قطعه و ابزار خود را ثبت کنید؛ نمونهٔ ATmega32A در مواردی به دیتاشیت خودش نیاز دارد.
هدف یادگیری و پیشنیاز

پس از این جلسه باید بتوانید منبع کلاک داخلی، کریستال خارجی، فرکانس واقعی برنامه و مفهوم fuse را با زبان خود توضیح دهید، یک آزمون کوچک طراحی کنید و نتیجه را با انتظار مقایسه کنید. پیشنیاز شما شناخت پایههای تغذیه، روش خاموشکردن امن منبع و توانایی خواندن نقشه پایهها از دیتاشیت است. اگر یکی از این موارد را هنوز انجام ندادهاید، ابتدا جلسههای قبل را مرور کنید. نام بسته، شماره قطعه و نوع ابزار را کنار یادداشت آزمایش بنویسید؛ این سه داده در عیبیابی بعدی بسیار کمک میکنند.
وسایل و آمادهسازی
تراشه ATmega32 یا ATmega32A، منبع تغذیه تنظیمشده متناسب با نسخه تراشه، بردبورد یا برد آزمایش، پروگرامر سازگار، مولتیمتر و قطعه مرتبط با «کلاک داخلی و خارجی و فیوزبیتها» را آماده کنید. پیش از هر جابهجایی سیم، تغذیه را قطع کنید. جهت قرارگیری تراشه، پایههای VCC و GND و AVCC و وضعیت RESET را بر اساس دیتاشیت همان قطعه بررسی کنید. عکسهای این مقاله برای شناخت ظاهریاند و نقشه اتصال نیستند.
اصل فنی به زبان ساده
منبع کلاک داخلی، کریستال خارجی، فرکانس واقعی برنامه و مفهوم fuse. در یک میکروکنترلر، نتیجهٔ نرمافزار به تنظیم سختافزار وابسته است. اگر کلاک واقعی با فرکانسی که کامپایلر فرض میکند فرق داشته باشد، زمان و ارتباطها خطا پیدا میکنند. اگر پایهای همزمان برای چند وظیفه استفاده شود، باید اولویت آنها را مشخص کرد. محدودهٔ ولتاژ و جریان را از جدول الکتریکی دیتاشیت بخوانید و هیچ خروجی را جای منبع تغذیه بار پرمصرف به کار نبرید. یک فرض را در هر مرحله تغییر دهید تا علت هر نتیجه معلوم بماند.

اجرای آزمایش مرحله به مرحله
- سؤال آزمون را بنویسید: «فرکانس انتخابشده در پروژه را با تنظیم واقعی تراشه مقایسه و پیش از تغییر فیوزبیت یادداشت کنید».
- قطعات و اتصالات را با منبع خاموش و با راهنمای همان برد آماده کنید.
- ولتاژ تغذیه و زمین مشترک را پیش از پروگرام اندازه بگیرید.
- برنامه یا تنظیم لازم را تنها برای همین بخش اجرا کنید و ورودی را تغییر دهید.
- نتیجه را در جدول «ورودی، انتظار، مشاهده، توضیح» ثبت کنید.
فرکانس انتخابشده در پروژه را با تنظیم واقعی تراشه مقایسه و پیش از تغییر فیوزبیت یادداشت کنید. بار اول از یک وضعیت ساده و بدون قطعات اضافی شروع کنید. بار دوم مقدار ورودی یا شرط آزمایش را تغییر دهید تا تفاوت نتیجه را ببینید. بار سوم همان آزمایش را بعد از قطع و وصل تغذیه تکرار کنید؛ پایداری رفتار از یک مشاهده تصادفی ارزشمندتر است. هنگام تغییر تنظیمات برنامه، نام فایل و تاریخ آزمایش را ثبت کنید تا نسخههای مختلف با هم اشتباه نشوند.
چه نتیجهای درست است؟
زمانبندی LED و ارتباط سریال باید با فرکانس تعریفشده سازگار باشد. انتظار خود را پیش از اجرای آزمایش بنویسید و بعد داده واقعی را کنار آن قرار دهید. اگر مشاهده و انتظار تفاوت دارند، ابتدا دستگاه اندازهگیری و تغذیه را بررسی کنید، سپس سراغ برنامه بروید. صرف روشن شدن LED یا نمایش یک عدد نشانه صحت کامل سیستم نیست؛ برای هر ورودی دستکم دو حالت متفاوت را امتحان کنید و مقدارهای مرزی را نیز در نظر بگیرید.

خطاهای رایج و روش پیدا کردن علت
تغییر منبع کلاک بدون فراهم کردن سختافزار لازم میتواند دسترسی پروگرامر را مختل کند. برای عیبیابی، اول وجود و مقدار تغذیه را در محل تراشه بسنجید، بعد زمین، وضعیت ریست و منبع کلاک را بررسی کنید. پس از آن اتصالات رابط و نام پایهها را با دیتاشیت تطبیق دهید. اگر پیام خطای ابزار دارید، متن دقیق پیام و تنظیمات پروژه را نگه دارید. تغییر همزمان چند سیم یا چند سطر برنامه باعث میشود نفهمید کدام تغییر مشکل را حل کرده است.
تمرین تکمیلی و معیار ارزیابی
تمرین این جلسه آن است که آزمایش «کلاک داخلی و خارجی و فیوزبیتها» را یک بار با شرایط اولیه و یک بار با یک تغییر کنترلشده اجرا کنید. در گزارش کوتاه خود هدف، قطعات، نسخه تراشه، پیشبینی، نتیجه و علت تفاوت احتمالی را بنویسید. معیار موفقیت فقط گرفتن خروجی نیست: باید بتوانید توضیح دهید چرا نتیجه به دست آمد، کدام بخش آن را اندازه گرفتید و برای تکرار آزمون چه تنظیماتی لازم است. اگر به نتیجه نرسیدید، گزارش خطا هنوز یک خروجی آموزشی مفید است.
نکته طراحی برای پروژه واقعی
در محصول واقعی، «کلاک داخلی و خارجی و فیوزبیتها» باید با دیگر بخشها هماهنگ شود. مصرف حافظه، زمان پاسخ، خطای اندازهگیری، نویز و رفتار هنگام روشن شدن دوباره را جدا بررسی کنید. پایههایی که نقش جایگزین دارند را روی نقشه پروژه علامت بزنید تا هنگام افزودن نمایشگر یا ارتباط سریال تداخل ایجاد نشود. قبل از مونتاژ دائمی، یک آزمایش کوچک با همان نوع تغذیه و همان قطعات نهایی انجام دهید. عکس نمایشی قطعات جایگزین نقشه و دیتاشیت نیست.
پرسشهای کوتاه
آیا همین مراحل برای همه نسخهها یکسان است؟ خیر؛ نام دقیق تراشه، بستهبندی و دیتاشیت را ملاک بگیرید. آیا بدون ابزار اندازهگیری میتوان نتیجه را تأیید کرد؟ برای بعضی رفتارها مشاهده اولیه ممکن است، اما برای ولتاژ، زمانبندی و خطاهای متناوب اندازهگیری لازم است. اگر آزمایش کار نکرد از کجا شروع کنم؟ از تغذیه و زمین و ریست شروع کنید و تنها بعد از تأیید آنها سراغ تنظیمات کلاک و نرمافزار بروید.
جمعبندی و ادامه مسیر
در این درس، «کلاک داخلی و خارجی و فیوزبیتها» را به یک پرسش قابل آزمون تبدیل کردیم و معیار مشاهده را مشخص کردیم. نتیجهٔ خود را با یک عکس از چیدمان قطعات، فایل کد یا تنظیمات و جدول اندازهگیری نگه دارید. جلسه بعد بر همین نتیجه تکیه میکند؛ اگر خروجی هنوز پایدار نیست، قبل از رفتن به بخش بعدی علت را پیدا کنید. پیوندهای دوره: جلسه قبل جلسه بعد.
منبع فنی: دیتاشیت رسمی ATmega32A از Microchip. مشخصات نسخهٔ ATmega32 را با سند همان مدل تطبیق دهید.
ثبت دقیق آزمایش کلاک داخلی و خارجی و فیوزبیتها
برای اینکه شخص دیگری بتواند کارتان را تکرار کند، فقط نوشتن «کار کرد» کافی نیست. نام قطعه، نوع پروگرامر، منبع کلاک، ولتاژ اندازهگیریشده، نسخه برنامه و شرایط ورودی را ثبت کنید. سپس خروجی مشاهدهشده را با واحد یا وضعیت منطقی بنویسید. اگر چند بار آزمون میکنید، نتیجه هر بار را جدا بگذارید. تفاوت بین آزمونها ممکن است از تماس بردبورد، افت تغذیه یا تغییر تنظیمات باشد. گزارش دقیق به شما کمک میکند هنگام افزودن بخش بعدی، نقطهٔ سالم قبلی را بشناسید.
آزمون مرزی و بازبینی
بعد از آزمون اصلی، حالت حداقل و حداکثر ورودی مجاز را از منظر منطقی بررسی کنید؛ از حدود الکتریکی دیتاشیت فراتر نروید. سیستم را یک بار بدون ورودی اختیاری و یک بار با ورودی معتبر راهاندازی کنید. در هر دو حالت، خروجی باید تعریفشده باشد. اگر مقدار ناپایدار میبینید، قبل از افزودن تأخیر نرمافزاری، کیفیت اتصال و منبع تغذیه را بسنجید. برای «کلاک داخلی و خارجی و فیوزبیتها» این روش باعث میشود یک نتیجه اتفاقی را با عملکرد قابل اعتماد اشتباه نگیرید.
ارتباط این جلسه با کل دوره
کار روی منبع کلاک داخلی، کریستال خارجی، فرکانس واقعی برنامه و مفهوم fuse مستقل از بقیه مدار نیست. هر تصمیم درباره پایهها، کلاک و زمان پاسخ روی ارتباط با نمایشگر، حسگر و حافظه اثر میگذارد. هنگام توسعه، یک جدول تخصیص پایه تهیه کنید و کنار هر پایه وظیفه، جهت و وضعیت شروع را بنویسید. اگر یک پایه بعداً برای قابلیت دیگری لازم شد، پیش از جابهجایی سختافزار، کاربرد آن را در همه بخشهای برنامه جستوجو کنید. این عادت از خطاهای دشوار در پروژه نهایی جلوگیری میکند.
چکلیست پایان جلسه
آیا نسخه تراشه مشخص است؟ آیا ولتاژ در محدوده مجاز اندازهگیری شده؟ آیا قطعه جانبی با سطح سیگنال سازگار است؟ آیا انتظار قبل از مشاهده ثبت شده؟ آیا دستکم دو حالت ورودی آزموده شده؟ آیا نتیجه و خطاها قابل تکرارند؟ اگر پاسخی نامشخص است، همان مورد را به تمرین بعدی تبدیل کنید. با این روش هر جلسه یک خروجی مستند به پروژه اضافه میکند و محتوای آموزش از یک توضیح صرف به راهنمای آزمایش تبدیل میشود.