وقتی تعداد پایهها کافی نیست
MCP23017 یک گسترشدهنده ورودی و خروجی دیجیتال است که از طریق I2C کنترل میشود. برد آدافروت محصول ۵۳۴۶، این تراشه را همراه مدارهای لازم و اتصالهای مناسب نمونهسازی ارائه میکند. کاربرد روشن آن، افزودن کلیدها، چراغها و خطوط وضعیت به میزبانی است که پایه آزاد کافی ندارد. برای نمونه، یک فیکسچر آزمون میتواند وضعیت چند سوئیچ را بخواند و نتیجه هر مرحله را با چراغ جدا نشان دهد. در چنین طراحیای، تعداد پایه فقط یکی از معیارهاست؛ تأخیر ارتباط، وضعیت آغازین و رفتار هنگام خطا نیز باید مشخص شوند.
این ابزار جایگزین مستقیم همه قابلیتهای پایههای میکروکنترلر نیست. خروجی دیجیتال آن را نباید با خروجی آنالوگ یا تولیدکننده مستقل شکل موج اشتباه گرفت. فرمانها از گذرگاه مشترک عبور میکنند و برنامه میزبان زمان تغییر را تعیین میکند. اگر کاربرد به لبههای بسیار دقیق یا نمونهبرداری سریع نیاز دارد، باید توان واقعی این معماری ارزیابی شود. برای پنل کنترل، خواندن کلید و ثبت وضعیت، همین جداسازی میتواند بسیار مفید باشد. انتخاب درست زمانی شکل میگیرد که نیاز زمانی و الکتریکی هر خط از ابتدا نوشته شود.
شناخت دو گروه پایه
تراشه دو گروه پایه با نامهای A و B دارد. حرف A در این نامگذاری به معنی ورودی آنالوگ نیست. هر خط باید با جهت و تنظیم مناسب استفاده شود و برنامه نیز شمارهگذاری کتابخانه را با نام چاپشده روی برد تطبیق دهد. یک نقشه کوچک که نام سیگنال پروژه را به پایه برد وصل کند، از اشتباه در توسعه جلوگیری میکند. اگر چراغ وضعیت خطا و چراغ آماده جابهجا شوند، دستگاه ممکن است ظاهراً کار کند ولی پیام اشتباه به کاربر بدهد.
راهنمای فعلی آدافروت درباره پایههای A7 و B7 نکته مهمی دارد. توصیه شده این دو فقط به عنوان خروجی استفاده شوند، زیرا تغییر ورودی آنها در شرایط مشخص میتواند روی ارتباط SDA اثر بگذارد. بنابراین عبارت کلی شانزده پایه نباید بدون این محدودیت به شانزده ورودی قابل تعویض تعبیر شود. در طراحی پنل، کلیدها را روی پایههای مناسب قرار دهید و این دو را، در صورت نیاز، به خروجی اختصاص دهید. این نمونه نشان میدهد خواندن بخش محدودیتها به اندازه خواندن مشخصات اصلی ضروری است.
تغذیه و حدود بار
برد برای کار با منطق و تغذیه متداول سه یا پنج ولتی معرفی شده است. تغذیه انتخابشده باید با میزبان و تجهیزات متصل سازگار باشد. راهنما توانایی راهاندازی بار کوچک برای هر خروجی را توضیح میدهد، اما جمع کردن حداکثرهای جداگانه پایهها روش درستی برای تعیین بار کل نیست. محدودیت کل تراشه و شرایط دیتاشیت باید رعایت شوند. برای روشن کردن چراغ، مقاومت سری لازم است. برای رله، موتور یا بار بزرگتر، مدار واسط مناسب به کار میرود و خروجی تنها فرمان آن را میدهد.
در یک میز آزمایش، بهتر است نخست با یک چراغ و مقاومت مناسب شروع کنید. پس از تأیید جهت و قطب منطقی، تعداد خروجیها را افزایش دهید. اگر افت ولتاژ یا ریست میزبان رخ داد، جریان مصرفی و مسیر زمین را بررسی کنید. یک سیم زمین باریک که هم جریان بار و هم مرجع ارتباط را حمل میکند میتواند خطاهای پراکنده بسازد. نشانه چنین عیبی همیشه خاموش شدن کامل نیست؛ گاهی فقط هنگام روشن شدن چند خروجی، خواندن ورودیها نامعتبر میشود. ثبت همزمان الگوی بار و خطا به تشخیص کمک میکند.
نشانی و راهاندازی ارتباط
نشانی پیشفرض برد در راهنمای رسمی 0x20 است. سه پایه یا جامپر تعیین نشانی، امکان انتخاب چند نشانی را فراهم میکنند. پیش از افزودن برد دوم، جدول نشانیهای تمام قطعات گذرگاه را آماده کنید. تغییر جامپر بدون اصلاح برنامه باعث میشود نرمافزار همچنان به دستگاه قبلی فرمان بدهد یا هیچ پاسخی نگیرد. در آغاز، هر برد را به تنهایی اسکن و آزمایش کنید. سپس آنها را کنار هم قرار دهید و دوباره فهرست نشانیها را بررسی کنید تا تداخل از خطای سیمکشی جدا شود.
راهاندازی موفق کتابخانه فقط بخش ارتباط را تأیید میکند. پس از آن باید جهت پایهها و وضعیت اولیه صریح تنظیم شوند. برنامه نباید به حالتی تکیه کند که از اجرای قبلی در ذهن توسعهدهنده مانده است. برای خروجیهای کنترلی، مقدار امن را قبل از فعال کردن نقش خروجی، طبق امکانات کتابخانه و تراشه، در نظر بگیرید. رفتار هنگام روشن شدن، ریست میزبان و ریست گسترشدهنده ممکن است متفاوت باشد. هر سه حالت را در فیکسچر واقعی آزمایش کنید، بهویژه اگر خروجی به تجهیز دیگری فرمان میدهد.
کلیدها و ورودیهای پایدار
برای خواندن یک کلید ساده، ورودی با بالاکش و کلید متصل به زمین یک الگوی رایج است. در این آرایش، فشردن کلید معمولاً سطح پایین ایجاد میکند. این قطب منطقی باید در نام متغیرها و گزارش روشن باشد. بهتر است برنامه مفهوم «کلید فشرده» را از عدد خام پایه جدا کند. در غیر این صورت، تغییر سیمکشی یا استفاده از کلید با حالت عادی متفاوت میتواند منطق برنامه را وارونه کند. نمایش وضعیت خام کنار وضعیت تفسیرشده در مرحله عیبیابی مفید است.
کلید مکانیکی ممکن است هنگام تغییر حالت چند نوسان کوتاه ایجاد کند. خواندن هر نوسان به عنوان یک رویداد مستقل، شمارنده را بیش از مقدار واقعی افزایش میدهد. رفع این مشکل به روش حذف لرزش نیاز دارد. میتوان حالت تازه را پس از یک بازه پایداری پذیرفت و زمان این بازه را بر اساس کلید و نیاز کاربر انتخاب کرد. مقدار دلخواه نباید بدون آزمون به عنوان ویژگی قطعه معرفی شود. برای بررسی، چند فشار آهسته و سریع انجام دهید و تعداد رویدادهای ثبتشده را با عمل واقعی مقایسه کنید.
وقفه در برابر پرسوجوی پیوسته
برد خروجیهای وقفه دارد که میتوانند برای خبر دادن از تغییر ورودی به میزبان استفاده شوند. مزیت آن کاهش نیاز به پرسوجوی دائمی است، اما وقفه خودبهخود همه وضعیتها را به برنامه منتقل نمیکند. میزبان باید علت رویداد را مطابق تنظیمات بخواند و وضعیت لازم را مدیریت کند. سیمکشی خروجی وقفه، قطب فعال و نیاز به بالاکش باید از مستندات همان حالت استخراج شوند. استفاده از یک مثال نامرتبط بدون توجه به تنظیمات رجیستر ممکن است خروجی را دائماً فعال نگه دارد.
یک مسیر توسعه قابل فهم این است که ابتدا ورودی با پرسوجوی معمول درست خوانده شود، سپس وقفه اضافه گردد. در نسخه دوم، تعداد وقفهها، زمان رسیدگی و وضعیت خواندهشده را ثبت کنید. اگر تغییرهای سریع از دست میروند، سرعت گذرگاه، زمان اجرای دیگر کارها و رفتار ثبت وضعیت را بررسی کنید. وقفه به معنی صف نامحدود رویداد نیست. برای کاربردی که باید تکتک پالسها شمرده شوند، لازم است معماری مناسب انتخاب شود و از روی نام «ورودی دیجیتال» انتظار شمارنده سختافزاری ساخته نشود.
یک فیکسچر آزمون چندمرحلهای
فرض کنید دستگاهی چهار کلید و چهار چراغ دارد و باید ترتیب پاسخ آن آزمایش شود. ابتدا نقشه هر کلید و چراغ را در برنامه تعریف کنید. مرحله نخست فقط یک چراغ را فعال میکند و از کاربر میخواهد کلید متناظر را فشار دهد. پس از دریافت پایدار ورودی، نتیجه و زمان پاسخ ثبت میشود. سپس مرحله بعد شروع میشود. چنین آزمونی هم سیمکشی و هم نگاشت نرمافزاری را بررسی میکند. اگر همه چراغها همزمان روشن شوند، خطای جابهجایی دو مسیر ممکن است پنهان بماند.
برای آزمون خودکار، میتوان خروجیهای مشخص را با اتصالهای طراحیشده به ورودیهای مجاز برگرداند، البته با بررسی سازگاری الکتریکی و جلوگیری از اتصال دو خروجی فعال به هم. الگوهای مختلف باید اجرا شوند تا هم سطح بالا و هم سطح پایین دیده شود. نتیجه هر الگو با انتظار مقایسه میشود. صرف اجرای یک الگوی همه روشن، اتصالهای ناخواسته میان خطوط را بهخوبی آشکار نمیکند. این آزمایش باید با نقشه واضح و در حالت کنترلشده انجام شود تا خود فیکسچر باعث فشار الکتریکی به پایهها نشود.
مدیریت خطا در برنامه
اگر تراکنش I2C شکست خورد، وضعیت فیزیکی خروجی را نباید همان فرمان مورد نظر فرض کرد. برنامه میتواند قصد تغییر را ثبت کرده باشد، در حالی که فرمان به تراشه نرسیده است. بهتر است وضعیت درخواستی، نتیجه ارسال و در صورت امکان وضعیت خواندهشده جدا باشند. این تفکیک برای چراغ ساده شاید کماهمیت به نظر برسد، ولی وقتی خروجی بخشی از توالی آزمون را کنترل میکند، خطای ارتباط میتواند نتیجه کل مرحله را نامعتبر کند. گزارش باید این مرحله را ناموفق یا نامعلوم علامت بزند.
تلاش مجدد نیز نیازمند سیاست مشخص است. تکرار فرمان تنظیم حالت معمولاً با تکرار یک رویداد شمارشی تفاوت دارد. اگر هر بار تلاش مجدد، شمارنده برنامه افزایش یابد، گزارش با واقعیت فاصله میگیرد. فرمان و نتیجه را با شناسه مرحله مرتبط کنید. پس از بازیابی ارتباط، یک حالت پایه معلوم برقرار کنید و سپس توالی را ادامه دهید یا از ابتدا آغاز کنید. انتخاب میان این دو به معنای آزمون بستگی دارد، اما باید در برنامه صریح باشد تا قطع لحظهای کابل نتیجه ساختگی تولید نکند.
نگهداری و توسعه پنل
افزودن بردهای بیشتر، تعداد پایهها را افزایش میدهد، ولی بار گذرگاه، طول سیمها و پیچیدگی برنامه نیز بیشتر میشود. برای پنل بزرگ، مسیرها را گروهبندی و برچسبگذاری کنید. اگر چند برد مقاومت بالاکش دارند، اثر اتصال موازی آنها را در طراحی در نظر بگیرید. آزمون هر شاخه به صورت مستقل، یافتن بخش معیوب را آسانتر میکند. تهیه عکس از سیمکشی نهایی و نگهداری فهرست نشانیها، هنگام تعمیر بعدی زمان زیادی ذخیره میکند. این اطلاعات باید همراه نسخه برنامه بهروز شوند.
معیار تحویل این ابزار در یک پروژه، فقط دیده شدن برد روی گذرگاه نیست. تمام ورودیهای مورد استفاده باید در دو حالت آزموده شوند، خروجیها باید بار واقعی خود را درست کنترل کنند و رفتار ریست مشخص باشد. نتیجه آزمون محدودیت A7 و B7، نگاشت پایهها و تنظیم وقفه را نیز ثبت کنید. MCP23017 زمانی ارزش اصلی خود را نشان میدهد که توسعه تعداد خطوط، خوانایی و قابلیت عیبیابی سامانه را حفظ کند. یک فیکسچر مستند با پایههای کمتر، از پنلی بزرگ با وضعیتهای نامعلوم قابل اعتمادتر است.